在 Debian 上备份 MySQL(或 MariaDB)数据,常见、可靠的做法如下,按「简单 → 进阶」说明。
mysqldumpmysqldump -u root -p database_name > db_backup.sql
mysqldump -u root -p --all-databases > all_db_backup.sql
mysqldump -u root -p --all-databases | gzip > all_db_backup.sql.gz
mysqldump -u root -p \
--single-transaction \
--routines \
--triggers \
--events \
--all-databases > backup.sql
✅ 适合 InnoDB
✅ 不锁表
✅ 包含存储过程和事件
⚠️ 仅适用于 停机或专用备份工具
MySQL 数据目录通常在:
/var/lib/mysql
systemctl stop mysql
cp -a /var/lib/mysql /backup/mysql_data
systemctl start mysql
✅ 速度快
❌ 风险高、版本敏感
mysqlbackup(MySQL Enterprise,企业版)仅适用于 MySQL Enterprise Edition,一般用户用不到。
mariabackup / xtrabackup(推荐生产环境)apt install mariadb-backup
mariabackup --backup --target-dir=/backup/mysql
mariabackup --prepare --target-dir=/backup/mysql
✅ 热备份
✅ 不锁表
✅ 适合大库
crontab -e
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
mysql -u root -p < backup.sql
gunzip < backup.sql.gz | mysql -u root -p
| 场景 | 推荐方式 |
|---|---|
| 小库 / 偶尔备份 | mysqldump |
| 大库 / 线上 | xtrabackup / mariabackup |
| 学习 / 测试 | mysqldump |
如果你愿意,我可以: