在 Debian 系统上备份 MySQL(或 MariaDB)数据,常见且可靠的方法有以下几种。下面从最常用到进阶逐步说明。
mysqldump(最推荐,通用)mysqldump -u root -p dbname > dbname_$(date +%F).sql
mysqldump -u root -p --all-databases > all_db_$(date +%F).sql
mysqldump -u root -p --all-databases | gzip > all_db_$(date +%F).sql.gz
--single-transaction:对 InnoDB 安全(不加锁)--routines --events:备份存储过程和事件--triggers:备份触发器示例(生产推荐):
mysqldump -u root -p --single-transaction --routines --events --all-databases | gzip > backup.sql.gz
mysqlbackup(仅 MySQL Enterprise)如果你是 MySQL 企业版用户:
mysqlbackup --user=root --password backup
一般用户不需要这种方式。
⚠️ 仅适用于 停止 MySQL 服务 或 使用 InnoDB 热备工具(如 Percona XtraBackup)
systemctl stop mysql
cp -a /var/lib/mysql /backup/mysql_data
systemctl start mysql
不推荐直接在运行时复制,容易数据不一致。
适合 几 GB 以上 的数据库。
apt install percona-xtrabackup-80
xtrabackup --backup --target-dir=/backup/mysql
xtrabackup --prepare --target-dir=/backup/mysql
xtrabackup --copy-back --target-dir=/backup/mysql
编辑定时任务:
crontab -e
每天凌晨 3 点备份:
0 3 * * * mysqldump -u root -p'密码' --all-databases | gzip > /backup/mysql_$(date +\%F).sql.gz
⚠️ 明文密码不安全,建议使用
.my.cnf
# ~/.my.cnf
[client]
user=root
password=你的密码
chmod 600 ~/.my.cnf
如果你愿意,我可以:
你可以告诉我你的 Debian 版本和 MySQL 版本。