在 Debian 上备份 MySQL(或 MariaDB)数据库,常用且推荐的方法有以下几种,按常用程度从高到低给你说明,并附示例。
mysqldump(最常用 ✅)mysqldump -u root -p 数据库名 > backup_$(date +%F).sql
示例:
mysqldump -u root -p mydb > mydb_2026-01-21.sql
mysqldump -u root -p --all-databases > all_databases_$(date +%F).sql
mysqldump -u root -p 数据库名 | gzip > backup_$(date +%F).sql.gz
mysqldump -u root -p --no-data 数据库名 > schema.sql
mysqldump -u root -p --no-create-info 数据库名 > data.sql
mysqldump -u root -p --single-transaction 数据库名 > backup.sql
✅ 适合 InnoDB ✅ 不锁表,适合线上数据库
mkdir -p /backup/mysql
nano /backup/mysql_backup.sh
内容:
#!/bin/bash
BACKUP_DIR="/backup/mysql"
DATE=$(date +%F)
mysqldump -u root -p密码 数据库名 | gzip > $BACKUP_DIR/db_$DATE.sql.gz
⚠️ 注意:直接写密码不安全,推荐用配置文件(见下方)
chmod +x /backup/mysql_backup.sh
crontab -e
每天凌晨 2 点备份:
0 2 * * * /backup/mysql_backup.sh
.my.cnf 避免明文密码(安全 ✅)nano ~/.my.cnf
内容:
[client]
user=root
password=你的密码
chmod 600 ~/.my.cnf
然后备份时可以不用 -p。
mariabackup(MariaDB)mariabackup --backup --target-dir=/backup/mariadb
mariabackup --prepare --target-dir=/backup/mariadb
Percona XtraBackup(MySQL)适合 TB 级别数据库,支持热备。
mysql -u root -p 数据库名 < backup.sql
gunzip < backup.sql.gz | mysql -u root -p 数据库名
--single-transaction如果你愿意,可以告诉我:
我可以帮你给出最适合你服务器环境的备份方案。