温馨提示×

怎么备份Debian MySQL数据

小樊
36
2026-08-26 04:16:15
栏目: 云计算

在 Debian 系统上备份 MySQL(或 MariaDB)数据,常见且推荐的方式有以下几种。下面从最常用到进阶给你详细说明,并附示例命令。


一、使用 mysqldump 备份(最常用 ✅)

1️⃣ 备份单个数据库

mysqldump -u root -p 数据库名 > backup_$(date +%F).sql

示例:

mysqldump -u root -p mydb > mydb_2026-01-21.sql

2️⃣ 备份多个数据库

mysqldump -u root -p --databases db1 db2 > multi_backup.sql

3️⃣ 备份所有数据库

mysqldump -u root -p --all-databases > all_db_backup.sql

4️⃣ 推荐参数(生产环境)

mysqldump -u root -p \
  --single-transaction \
  --routines \
  --triggers \
  --events \
  --all-databases > full_backup.sql

✅ 参数说明:

  • --single-transaction:InnoDB 不锁表
  • --routines:存储过程
  • --triggers:触发器
  • --events:事件

二、压缩备份(节省空间 ✅)

mysqldump -u root -p --all-databases | gzip > backup_$(date +%F).sql.gz

三、自动定时备份(cron ✅)

1️⃣ 编辑定时任务

crontab -e

2️⃣ 每天凌晨 2 点备份

0 2 * * * mysqldump -u root -p'密码' --all-databases | gzip > /backup/mysql_$(date +\%F).sql.gz

⚠️ 注意:命令行写密码不安全,推荐用配置文件(见下方)。


四、使用配置文件(避免明文密码 ✅)

1️⃣ 创建配置文件

vim ~/.my.cnf

内容:

[client]
user=root
password=你的密码

2️⃣ 设置权限

chmod 600 ~/.my.cnf

3️⃣ 直接执行(无需 -p)

mysqldump --all-databases | gzip > backup.sql.gz

五、物理备份(适合大型数据库 ⚠️)

方法 1:直接复制数据目录(需停服)

systemctl stop mysql
cp -a /var/lib/mysql /backup/mysql_data
systemctl start mysql

⚠️ 不推荐在线复制,可能损坏数据。


方法 2:使用 mariabackup / xtrabackup(推荐)

安装(Debian + MariaDB)

apt install mariadb-backup

备份

mariabackup --backup --target-dir=/backup/mysql_full

准备恢复

mariabackup --prepare --target-dir=/backup/mysql_full

六、恢复 MySQL 数据

恢复 SQL 备份

mysql -u root -p < backup.sql

恢复压缩备份

gunzip < backup.sql.gz | mysql -u root -p

七、备份建议(最佳实践 ✅)

✅ 定期备份
✅ 本地 + 远程存储(rsync / 云)
✅ 定期测试恢复
✅ 大库使用物理备份
✅ 不要明文写密码


如果你愿意,我可以:

  • ✅ 帮你写 一键备份脚本
  • ✅ 给你 systemd + cron 完整方案
  • ✅ 针对 Docker / 云服务器 定制方案

只要告诉我你的 MySQL 版本和运行环境即可。

0