下面是 Linux 环境下 MariaDB 备份与恢复的最佳实践,涵盖策略选择、常用工具、示例命令、注意事项和自动化方案,适合生产环境参考。
| 类型 | 工具 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|---|
| 逻辑备份 | mysqldump |
小中型数据库、跨版本迁移 | 可读 SQL、跨平台 | 恢复慢、锁表风险 |
| 物理备份 | mariabackup |
大型数据库、高可用 | 恢复快、一致性高 | 需要额外工具 |
| 增量备份 | mariabackup |
TB 级数据 | 节省空间 | 操作复杂 |
✅ 推荐组合
mysqldump -u root -p --single-transaction --routines --triggers --events db_name > db_name_$(date +%F).sql
mysqldump -u root -p --all-databases --single-transaction --routines --triggers --events > full_backup_$(date +%F).sql
| 参数 | 说明 |
|---|---|
--single-transaction |
InnoDB 无锁备份 |
--routines |
存储过程 |
--triggers |
触发器 |
--events |
事件 |
--master-data=2 |
记录 binlog 位置 |
--quick |
防止内存溢出 |
⚠️ MyISAM 表必须加 --lock-tables
yum install MariaDB-backup -y
# 或
apt install mariadb-backup -y
mariabackup --backup \
--target-dir=/backup/mysql/full \
--user=root --password
mariabackup --prepare \
--target-dir=/backup/mysql/full
mariabackup --backup \
--target-dir=/backup/mysql/inc1 \
--incremental-basedir=/backup/mysql/full \
--user=root --password
mysql -u root -p < full_backup.sql
或指定数据库:
mysql -u root -p db_name < db_name.sql
systemctl stop mariadb
rm -rf /var/lib/mysql/*
mariabackup --copy-back \
--target-dir=/backup/mysql/full
chown -R mysql:mysql /var/lib/mysql
systemctl start mariadb
#!/bin/bash
BACKUP_DIR=/backup/mysql
DATE=$(date +%F)
mkdir -p $BACKUP_DIR
mariabackup --backup \
--target-dir=$BACKUP_DIR/$DATE \
--user=root --password
find $BACKUP_DIR -type d -mtime +7 -exec rm -rf {} \;
0 2 * * * /usr/local/bin/mysql_backup.sh >> /var/log/mysql_backup.log 2>&1
✅ 必须做的
700ls -lh /backup/mysql
du -sh /backup/mysql
[mysqld]
log-bin=mysql-bin
server-id=1
mysqlbinlog mysql-bin.000012 --start-datetime="2025-01-01 10:00:00" | mysql -u root -p
✅ 生产环境推荐
✅ 简单场景
mysqldump + cron如果你愿意,我可以:
只需告诉我你的 数据量 + 版本 + 是否主从。