第三十三章 MySQL备份和恢复进阶-增量恢复
一、什么情况下需要数据库增量恢复
1、主库或从库因硬件损坏宕机,是否需要增量恢复?
不需要,主库宕机,只需将一个同步最快的从库切换为主库即可。从库宕机,不影响使用,正常修复就行了。
2、人为操作数据库的SQL语句破坏主库是否需要增量恢复?
需要,因为此时,主从库都已同步执行了相关操作,必须通过备份来恢复。如在主库上执行了drop database test;这样的删除语句,从库也会执行这个语句,从而导致主从库上的test库丢失,只有通过备份文件来恢复数据了。
所以现在有此企业是不让执行delete语句的,所有的delete操作通过update语句更新记录上的状态码,查询时根据状态码来排除相关记录。
3、只有一个主库,是否需要增量恢复?
如果只一个主库,首先应该做定时的全量备份(每天一次)及增量备份(每隔1-10分钟对binlog日志做切割后备份到其它服务器上,或本地其它硬盘或网络文件系统的备份服务器中)
如果不允许数据丢失,最好的办法就是做从库,通过drbd(基于磁盘块的)同步。
4、总结
一般由人为(或程序)逻辑方式在数据库执行的SQL语句等误操作,是需要增量恢复的,因为此时,从库也执行误操作语句。
正常情况下,主从同步除了分担读写分离压力外,还可以防止物理设备损坏导致的数据丢失,便于数据恢复。
在从库进行全量和增量方式的备份,可以防止人为对主库的误操作导致的数据丢失。
任何时刻都应确保备份的从库和主库是同步状态。
二、生产场景备份策略选择
1、中小型公司
全量备份一般是每天一次,在业务流量低谷执行全备,备份时锁表。如果是单节点数据库,用rsync配合定时任务(频率要大一点,或用inotify)把所有binlog备份到远程服务器。但不建议用这种方法,最好还是做主从复制,无论如何也要加一台服务器(可与web共用)做从库。
2、大公司
一般是每周全备一次。如每周六0点开始一次全量备份,周日到下周六0点前都是增量备份。
优点是节省备份时间,减小备份压力。
缺点是增量的binlog文件副本太多