菜鸟科技网

命令行备份数据库,具体怎么操作?

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

命令行备份数据库,具体怎么操作?-图1
(图片来源网络,侵删)

MySQL/MariaDB 数据库备份

MySQL 和 MariaDB 是最常用的开源关系型数据库,其备份工具主要是 mysqldumpmysqldump 支持多种备份格式,包括 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_dumppg_dumpall 工具用于备份单个或所有数据库。

命令行备份数据库,具体怎么操作?-图2
(图片来源网络,侵删)

备份单个数据库

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 使用 sqlcmdbcp 工具进行命令行备份。

使用 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

备份策略与最佳实践

  1. 定期备份:结合 cron(Linux)或任务计划程序(Windows)实现自动化备份,每天凌晨 2 点备份 MySQL 数据库:

    命令行备份数据库,具体怎么操作?-图3
    (图片来源网络,侵删)
    0 2 * * * mysqldump -u root -p123456 mydb > /backup/mydb_$(date +\%Y\%m\%d).sql
  2. 备份文件管理:定期清理旧备份文件,避免存储空间浪费,保留最近 7 天的备份:

    find /backup -name "*.sql" -mtime +7 -delete
  3. 备份验证:定期检查备份文件是否可用,

    mysql -u root -p123456 mydb < backup.sql
  4. 权限控制:确保备份文件存储在安全目录,并设置适当的文件权限:

    chmod 600 /backup/*.sql

常见问题与解决方案

  1. 备份速度慢

    • 使用 --single-transaction(MySQL)避免锁表,适用于 InnoDB 引擎。
    • 增加网络带宽或使用本地存储。
  2. 备份文件过大

    • 分表备份或按时间范围备份。
    • 使用压缩工具(如 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
分享:
扫描分享到社交APP
上一篇
下一篇