在 Debian 系统上备份 MySQL(或 MariaDB)数据库,常见且推荐的方法有以下几种。你可以根据需求选择 逻辑备份 或 物理备份。
mysqldump(最常用,逻辑备份 ✅)适合中小型数据库,简单、安全。
mysqldump -u root -p 数据库名 > backup.sql
mysqldump -u root -p --databases db1 db2 > backup.sql
mysqldump -u root -p --all-databases > all_backup.sql
mysqldump -u root -p \
--single-transaction \
--quick \
--lock-tables=false \
--all-databases > all_backup.sql
✅ 适用于 InnoDB
✅ 不会长时间锁表
mkdir -p /backup/mysql
mysqldump -u root -p --all-databases > /backup/mysql/mysql_$(date +%F).sql
mysqldump -u root -p --all-databases | gzip > /backup/mysql/mysql_$(date +%F).sql.gz
还原时:
gunzip < mysql_2026-01-21.sql.gz | mysql -u root -p
crontab -e
0 2 * * * mysqldump -u root -p'密码' --all-databases | gzip > /backup/mysql/mysql_$(date +\%F).sql.gz
⚠️ 注意:生产环境不建议直接在命令行写密码,可用以下方式更安全。
vim ~/.my.cnf
内容:
[client]
user=root
password=你的密码
chmod 600 ~/.my.cnf
mysqldump --all-databases | gzip > /backup/mysql/backup.sql.gz
mysqlbackup(MySQL Enterprise)❌ 需要企业版(不推荐普通用户)
Percona XtraBackup(推荐 ✅)适合 大库、InnoDB,支持热备份。
apt install percona-xtrabackup
备份:
xtrabackup --backup --target-dir=/backup/mysql/full
mysql -u root -p
SHOW DATABASES;
或尝试在测试环境恢复。
| 场景 | 推荐方式 |
|---|---|
| 小中型数据库 | mysqldump |
| 需要定时备份 | mysqldump + cron |
| 大型数据库 | XtraBackup |
| 新手 | mysqldump |
如果你愿意,可以告诉我:
我可以帮你定制一套 完整备份 + 自动清理 + 远程同步 方案。