温馨提示×

如何备份Debian上的MySQL数据

小樊
47
2026-09-23 03:17:13
栏目: 云计算

在 Debian 上备份 MySQL(或 MariaDB)数据,常见、可靠的做法如下,按「简单 → 进阶」说明。


一、最推荐的备份方式:mysqldump

1. 备份单个数据库

mysqldump -u root -p database_name > db_backup.sql

2. 备份所有数据库

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

3. 备份并压缩(节省空间)

mysqldump -u root -p --all-databases | gzip > all_db_backup.sql.gz

4. 常用安全参数(推荐)

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

✅ 适合 InnoDB
✅ 不锁表
✅ 包含存储过程和事件


二、直接备份数据目录(物理备份,不推荐新手)

⚠️ 仅适用于 停机或专用备份工具

MySQL 数据目录通常在:

/var/lib/mysql

停止 MySQL 后复制(不推荐线上)

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

✅ 速度快
❌ 风险高、版本敏感


三、使用 mysqlbackup(MySQL Enterprise,企业版)

仅适用于 MySQL Enterprise Edition,一般用户用不到。


四、使用 mariabackup / xtrabackup(推荐生产环境)

安装(Debian + MariaDB 示例)

apt install mariadb-backup

备份

mariabackup --backup --target-dir=/backup/mysql

准备备份

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

✅ 热备份
✅ 不锁表
✅ 适合大库


五、自动定时备份(cron)

编辑定时任务

crontab -e

每天凌晨 2 点备份

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

⚠️ 密码写在命令中有安全风险,建议用 ~/.my.cnf


六、使用 .my.cnf 避免明文密码

[client]
user=root
password=yourpassword

权限:

chmod 600 ~/.my.cnf

七、恢复数据库

恢复 SQL 备份

mysql -u root -p < backup.sql

解压后恢复

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

总结建议

场景 推荐方式
小库 / 偶尔备份 mysqldump
大库 / 线上 xtrabackup / mariabackup
学习 / 测试 mysqldump

如果你愿意,我可以:

  • 给你一套 完整备份脚本
  • 教你 异地备份(rsync / 对象存储)
  • 针对 Docker / Debian 12 / MariaDB 给方案

0