MySQL全量备份和增量备份

in 技术分享 / 0 评论 / 444阅读

MySQL除了配置主从同步,全量备份和增量备份也是常见的备份方式,该备份方式更适合数据更新不频繁或数据不敏感的数据库。通常,少量数据只需要执行全量备份即可,数据量到一定程度全量备份会比较耗时,可以配合增量数据使用。

全量备份

全量备份是数据库所有数据完整备份,它会备份数据库所有表结构和数据。

#备份全部数据库
mysqldump -u root -p123456 --all-databases > fulldata.sql

#指定数据库
mysqldump -u root -p123456 db1 > db1.sql

#指定多数据库
mysqldump -u root -p123456 --databases db1 db2 > backup.sql

增量备份

对于较大数据量的数据库,使用增量备份速度更快、存储占用更少、性能占用低。增量备份也要先开启log-bin

先执行一次全量备份:

mysqldump -u root -p123456 --all-databases --single-transaction --flush-logs --master-data=2 > fulldata.sql

#  --single-transaction 保持备份数据一致性
#  --flush-logs 关闭当前日志并创建新日志

然后在每次需要备份时重新创建二进制日志:

mysqladmin -u root -p123456 flush-logs

之后就可以编写脚本将上次备份后产生的二进制日志复制到其他服务器进行备份。

增量备份恢复

# 先恢复全量备份数据
mysql -u root -p < fulldata.sql

# 分别从二进制数据恢复增量数据
mysqlbinlog mysql-bin.000005|mysql -u root -p
mysqlbinlog mysql-bin.000006|mysql -u root -p

如果备份全量数据没有使用--flush-logs重新记录二进制数据,可以查看全量数据记录的偏移量,然后使用--start-position=,从偏移量开始恢复。

mysqlbinlog --start-position=2730652 mysql-bin.000005|mysql -u root -p

总结

MySQL的备份对保障数据安全非常关键,选择合适的备份策略需要根据具体业务情况。一般来说,使用主从同步,还需要配合定时全量备份以及增量备份到其他存储服务器以保证数据安全。

回复