mysql的增量备份和全量备份的方法
区别
- 全量备份是指备份整个数据库的所有数据。
- 增量备份是指仅备份自上次备份以来更改的数据。
全量备份
全量备份的主要方法是使用 mysqldump
工具进行逻辑备份,或直接复制 MySQL 数据目录进行物理备份。
使用 mysqldump
进行全量备份
mysqldump -u 用户名 -p 数据库名 > 备份文件.sql
示例:
mysqldump -u root -p mydatabase > /path/to/backup/mydatabase_full_backup.sql
直接复制数据目录
- 停止 MySQL 服务:
sudo systemctl stop mysql
- 复制数据目录:
sudo cp -R /var/lib/mysql /path/to/backup/
- 启动 MySQL 服务:
sudo systemctl start mysql
增量备份
增量备份通常依赖于 MySQL 的二进制日志(binlog),因为这些日志记录了所有对数据库进行更改的操作。通过备份这些日志文件,可以实现增量备份。
配置二进制日志
首先需要确保 MySQL 配置启用了二进制日志。在 MySQL 配置文件(通常是 /etc/my.cnf
或 /etc/mysql/my.cnf
)中添加或修改以下行:
[mysqld]
log-bin=mysql-bin
然后重启 MySQL 服务以应用更改:
sudo systemctl restart mysql
全量备份与增量备份的组合使用
- 进行一次全量备份:
mysqldump -u 用户名 -p --all-databases --flush-logs --master-data=2 > /path/to/backup/full_backup.sql
- 定期备份二进制日志:
将新的二进制日志文件复制到备份目录。例如,可以使用以下脚本定期复制二进制日志:
#!/bin/bash
BINLOG_DIR="/var/lib/mysql"
BACKUP_DIR="/path/to/backup/binlogs"
cp $BINLOG_DIR/mysql-bin.* $BACKUP_DIR/
可以将该脚本添加到 cron 作业中,每天或每小时运行一次:
crontab -e
添加如下行以每小时运行一次增量备份脚本:
0 * * * * /path/to/backup/binlog_backup.sh
恢复数据
恢复全量备份
- 恢复全量备份文件:
mysql -u 用户名 -p < /path/to/backup/full_backup.sql
恢复增量备份
- 确保已应用全量备份。
- 应用二进制日志文件:
mysqlbinlog /path/to/backup/binlogs/mysql-bin.* | mysql -u 用户名 -p
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ALLBS!
评论