命令行备份数据库是系统管理员和开发人员必备的技能之一,它不仅能够高效完成数据备份任务,还能通过脚本实现自动化备份策略,确保数据安全,本文将详细介绍在不同数据库系统中使用命令行进行备份的方法、注意事项及最佳实践。

MySQL/MariaDB 数据库备份
MySQL 和 MariaDB 是最常用的开源关系型数据库,其备份工具主要是 mysqldump。mysqldump 支持多种备份格式,包括 SQL 文件、CSV 等,并允许用户灵活选择备份结构和数据。
基本备份命令
备份整个数据库(包括结构和数据):
mysqldump -u [用户名] -p[密码] [数据库名] > backup.sql
备份名为 mydb 的数据库:
mysqldump -u root -p123456 mydb > mydb_backup.sql
仅备份数据结构
mysqldump -u [用户名] -p[密码] --no-data [数据库名] > structure.sql
仅备份数据(不包含结构)
mysqldump -u [用户名] -p[密码] --no-create-info [数据库名] > data.sql
备份多个数据库
mysqldump -u [用户名] -p[密码] --databases db1 db2 > multi_db_backup.sql
备份所有数据库
mysqldump -u [用户名] -p[密码] --all-databases > all_db_backup.sql
压缩备份文件
mysqldump -u [用户名] -p[密码] [数据库名] | gzip > backup.sql.gz
排除特定表备份
mysqldump -u [用户名] -p[密码] [数据库名] --ignore-table=[数据库名].table1 > backup.sql
PostgreSQL 数据库备份
PostgreSQL 提供了 pg_dump 和 pg_dumpall 工具用于备份单个或所有数据库。

备份单个数据库
pg_dump -U [用户名] -F p [数据库名] > backup.sql
-F p 表示输出为纯文本格式,也可选择 c(自定义格式)或 d(目录格式)。
备份为自定义格式(推荐)
pg_dump -U [用户名] -Fc [数据库名] > backup.dump
备份所有数据库
pg_dumpall -U [用户名] > all_db_backup.sql
备份数据库结构和数据(分开)
pg_dump -U [用户名] -s [数据库名] > structure.sql # 仅结构 pg_dump -U [用户名] -a [数据库名] > data.sql # 仅数据
SQL Server 数据库备份
SQL Server 使用 sqlcmd 或 bcp 工具进行命令行备份。
使用 sqlcmd 备份数据库
sqlcmd -S [服务器名] -U [用户名] -P [密码] -Q "BACKUP DATABASE [数据库名] TO DISK = 'backup.bak'"
使用 bcp 导出数据
bcp [数据库名].[架构名].[表名] out data.txt -c -T -S [服务器名]
MongoDB 数据库备份
MongoDB 是 NoSQL 数据库,使用 mongodump 工具进行备份。
备份整个数据库
mongodump --host [主机] --port [端口] --db [数据库名] --out /backup/path
备份所有数据库
mongodump --out /backup/path
备份为压缩文件
mongodump --db [数据库名] --archive=backup.gz --gzip
备份策略与最佳实践
- 
定期备份:结合 cron(Linux)或任务计划程序(Windows)实现自动化备份,每天凌晨 2 点备份 MySQL 数据库: (图片来源网络,侵删) (图片来源网络,侵删)0 2 * * * mysqldump -u root -p123456 mydb > /backup/mydb_$(date +\%Y\%m\%d).sql 
- 
备份文件管理:定期清理旧备份文件,避免存储空间浪费,保留最近 7 天的备份: find /backup -name "*.sql" -mtime +7 -delete 
- 
备份验证:定期检查备份文件是否可用, mysql -u root -p123456 mydb < backup.sql 
- 
权限控制:确保备份文件存储在安全目录,并设置适当的文件权限: chmod 600 /backup/*.sql 
常见问题与解决方案
- 
备份速度慢: - 使用 --single-transaction(MySQL)避免锁表,适用于 InnoDB 引擎。
- 增加网络带宽或使用本地存储。
 
- 使用 
- 
备份文件过大: - 分表备份或按时间范围备份。
- 使用压缩工具(如 gzip)减小文件体积。
 
相关问答 FAQs
问题 1:如何备份 MySQL 数据库并排除特定表?
解答:使用 --ignore-table 参数指定要排除的表,  
mysqldump -u root -p mydb --ignore-table=mydb.large_table > backup.sql
问题 2:PostgreSQL 备份文件如何恢复?
解答:使用 pg_restore 恢复自定义格式备份:  
pg_restore -U [用户名] -d [数据库名] backup.dump
对于纯文本格式,直接使用 psql:  
psql -U [用户名] -d [数据库名] < backup.sql

 
                             
         
         
         
         
         
         
         
         
         
        