我们一般采用mysqldump的方式,对于mysql dump,有两种备份方式,一种是形成恢复脚本,这个是默认的备份方式,还有就是生成行数据文件,将来采用load data加载数据,后者速度更快,因此对于逻辑备份,我们建议采用后者,就是mysqldump -T的方式
1、mysqldump备份的时候,对于myisam表,我们采用-l的方式加锁备份,来保证数据的一致性,也可以采用skip lock的方式防止myisam表被加锁,但是可能带来数据的不一致性
2、对于inndb表来说,通过single transaction的方式来获得一致性数据,主要原来采用的是MVCC特性,备份期间不锁表,还能够获得一致性数据
3、对于mysqldump,我们不能获取到备份对应binlog起点,因此需要手工记录,具体的技巧就是在mysqldump的时候,加上-F选项,强制binlog切换,将来采用切换后的binlog作为恢复的起点,否则mysqldump的备份根本找不到恢复的起点
4、mysqldump可以恢复单表,具体方法就是将binlog中不属于恢复表的操作过滤掉,只是过滤出来需要恢复的表对应的SQL语句
对于备份来说,我们有下面的几个技巧
1、将备份卸载到从库
2、使用xtrabackup的压缩、加密、并行、限流等技巧,根据业务需要灵活使用
3、我们可以单独建立一个延迟从库,对于一些误操作进行恢复
4、对于导数采用mysqldump -T的方式,对于备份采用xtrabackup的方式