温馨提示×

如何备份Debian的MySQL数据

小樊
36
2026-08-14 23:19:00
栏目: 云计算

Debian 系统上备份 MySQL(或 MariaDB) 数据,常见且推荐的方式有以下几种。下面从最常用到进阶依次说明,并给出示例。


一、使用 mysqldump(最常用 ✅)

适合中小型数据库,逻辑备份(SQL 文件)。

1️⃣ 备份单个数据库

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

2️⃣ 备份多个数据库

mysqldump -u root -p --databases db1 db2 > /backup/multi_$(date +%F).sql

3️⃣ 备份所有数据库

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

4️⃣ 常用推荐参数(更安全)

mysqldump -u root -p \
  --single-transaction \
  --routines \
  --triggers \
  --events \
  --all-databases > /backup/full_$(date +%F).sql

✅ 说明:

  • --single-transaction:对 InnoDB 不锁表
  • --routines:存储过程
  • --triggers:触发器
  • --events:事件

二、备份为压缩文件(节省空间 ✅)

mysqldump -u root -p --all-databases | gzip > /backup/mysql_$(date +%F).sql.gz

三、使用 systemd 定时自动备份(推荐 ✅)

1️⃣ 创建备份脚本

sudo nano /usr/local/bin/backup_mysql.sh

内容示例:

#!/bin/bash
BACKUP_DIR="/backup"
DATE=$(date +%F)
mysqldump -u root -p'密码' --all-databases | gzip > $BACKUP_DIR/mysql_$DATE.sql.gz

⚠️ 注意安全:建议用 .my.cnf 存放密码(见下方)

2️⃣ 设置权限

chmod +x /usr/local/bin/backup_mysql.sh

3️⃣ 添加 cron 定时任务

crontab -e

每天凌晨 2 点备份:

0 2 * * * /usr/local/bin/backup_mysql.sh

四、使用 .my.cnf 免密码备份(安全 ✅)

nano ~/.my.cnf

内容:

[client]
user=root
password=你的密码
chmod 600 ~/.my.cnf

之后 mysqldump 不再需要 -p


五、物理备份(大型数据库 / InnoDB)

✅ 使用 mariabackup(MariaDB)

mariabackup --backup --target-dir=/backup/mariadb
mariabackup --prepare --target-dir=/backup/mariadb

✅ 使用 Percona XtraBackup(MySQL)

适合 TB 级数据,热备份。


六、恢复 MySQL 数据

1️⃣ 恢复 SQL 备份

mysql -u root -p < /backup/mysql_2026-01-21.sql

2️⃣ 恢复压缩备份

gunzip < /backup/mysql_2026-01-21.sql.gz | mysql -u root -p

七、备份目录建议(Debian)

/backup/
/var/backups/mysql/

确保权限安全:

chmod 700 /backup

八、总结(推荐方案)

场景 推荐方式
普通网站 / 应用 mysqldump + cron
多库 / 自动备份 mysqldump + .my.cnf
大型数据库 mariabackup / XtraBackup
云服务器 本地 + 远程同步(rsync / rclone)

如果你愿意,我可以帮你:

  • ✅ 写一个 完整可运行的 Debian 备份脚本
  • ✅ 区分 MySQL / MariaDB
  • ✅ 支持 远程备份 / 云存储
  • ✅ 恢复演练方案

只要告诉我你的 Debian 版本 + MySQL 版本 即可。

0