增量数据是从上次全量备份之后,更新的新数据。对于Mysql来说,binlog日志就是Mysql的增量备份。



按天备份
优点:恢复时间短,维护成本低
缺点:占用空间多,占用系统资源多,经常锁表影响用户体验


按周备份
优点:占用空间小
缺点:维护成本高,恢复时间长,麻烦



1)企业场景全量和增量的频率是怎么做的?
1.中小公司;全量一般是每天一次,业务流量低谷执行全备,备份会锁表。
2.大公司周备,每周六00点一次全量备份,下周日--下周六00点前都是增量
优点:节省备份时间,减小备份压力。缺点:增量的binlog文件副本太多,还原会很麻烦
3.企业一般会采取一主多从的策略,会有一个从库做备份,延迟同步
4.单台服务器,也要做主从复制



2)mysql的mysqldump备份什么时候派上用场?
 1.迁移或者升级数据库时
 2.增加从库时候
 3.因为硬件或特殊异常情况,主库或从库宕机,主从可以互相切换,无需备份
 4.人为的DDL,DML语句,从库也执行了DDL,DML等误操作,此时需要备份。
 5.跨机房灾备,需要备份到异地
数据库要做逻辑删除,加flag,不要做物理删除



3)mysql增量恢复必备条件


 1.开启mysql log-bin日志功能
 2.存在全备数据
 3.全备之后到出问题时刻的所有增量binlog文件备份



4) 增量同步实战
1.停库,禁止用户访问和写入
通过防火墙禁止web等应用向主库写数据,或者让主库暂时停止更新,然后再进行恢复
2.全量备份
 mysqldump -usystem -pgg123 -S /data/3308/mysql.sock -F --master-data=2 -B dbname > /opt/dbname.sql



3.将所有的binlog日志汇总成sql文件,去掉误操作语句,然后写入数据库

grep "CHANGE MASTER TO" /opt/dbname.sql 查出全备的文件和pos节点位置 
 
mysqlbinlog -d dbname  /opt/mysql-bin.000020 > /opt/mysql.sql 
 
vi /opt/mysql.sql 
 
去掉误操作语句;drop database dbname;


4.然后恢复全备及增量数据


mysql -usystem -pgg123  </opt/byname_2017-12-14.sql


mysql -usystem -pgg123 < dbname



5)增量恢复小节:
1.人为的sql语句造成的误操作
2.恢复的必要条件是要有全备和增量
3.恢复时建议对外停止更新
4.恢复全量,然后把增量日志中有问题的SQL语句删除,恢复到数据库



增量恢复的核心思想:
1.流程制度控制,防止问题发生
2.延迟备份来解决。信息做监控,黑名单,白名单机制
3.业务需求容忍度,可量化的目标,根据需求选择停库或锁表或容忍丢失部分数据



6)双主同步
1.在两台master的my.cnf中添加以下参数
auto_increment_increment   = 2
auto_increment_offset      = 1
log-bin
log-slave-updates


2.先将一台Master的全库备份到另一台Master上
3.两台Master互为Master
CHANGE MASTER TO MASTER_HOST='192.168.200.131', MASTER_PORT=3308,MASTER_USER='reo', MASTER_PASSWORD='haha123';
start slave;
4.设置表的主键自增
 create table test(id int(4) not null auto_increment primary key,name char(20) not null);