Debian MySQL如何备份

2026-07-03技术问答210079

在 Debian 上备份 MySQL(或 MariaDB)数据库,常用且推荐的方法有以下几种,按常用程度从高到低给你说明,并附示例。


一、使用 mysqldump(最常用 ✅)

1️⃣ 备份单个数据库

mysqldump -u root -p 数据库名 > backup_$(date +%F).sql

示例:

mysqldump -u root -p mydb > mydb_2026-01-21.sql

2️⃣ 备份所有数据库

mysqldump -u root -p --all-databases > all_databases_$(date +%F).sql

3️⃣ 备份并压缩(推荐)

mysqldump -u root -p 数据库名 | gzip > backup_$(date +%F).sql.gz

4️⃣ 只备份结构(不含数据)

mysqldump -u root -p --no-data 数据库名 > schema.sql

5️⃣ 只备份数据(不含结构)

mysqldump -u root -p --no-create-info 数据库名 > data.sql

二、备份 InnoDB 并保持一致(推荐)

mysqldump -u root -p --single-transaction 数据库名 > backup.sql

✅ 适合 InnoDB
✅ 不锁表,适合线上数据库


三、自动定时备份(crontab)

1️⃣ 创建备份脚本

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

⚠️ 注意:直接写密码不安全,推荐用配置文件(见下方)


2️⃣ 加权限

chmod +x /backup/mysql_backup.sh

3️⃣ 添加定时任务

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 级别数据库,支持热备。


六、恢复备份

恢复 SQL 备份

mysql -u root -p 数据库名 < backup.sql

恢复压缩文件

gunzip < backup.sql.gz | mysql -u root -p 数据库名

七、备份建议(最佳实践 ✅)

  • ✅ 生产环境使用 --single-transaction
  • ✅ 定期清理旧备份
  • ✅ 备份文件存放到远程或对象存储
  • ✅ 定期测试恢复流程

如果你愿意,可以告诉我:

  • MySQL 还是 MariaDB?
  • 数据库大小?
  • 是否需要热备、主从?

我可以帮你给出最适合你服务器环境的备份方案。

《Debian MySQL如何备份.doc》

下载本文的Word格式文档,以方便收藏与打印。