1 如果涉及到多个机房,一般每一个机房都有一套对应的业务库存储这些实例信息,我们只考虑单个机房的情况
2 从DB层面看,海量DB的备份管理核心是通过两张表实现,一张表A存储该实例的备份参数的基本信息,另一张表B存储该实例的历史备份信息,两张表的基本信息和对应关系如下
3 备份类型,提供mysqldump lvm快照备份 xtrabackup备份三种方式:
3.1 如果数据量不大(100G以内),又需要非常灵活的备份设置策略,默认采用mysqldump逻辑备份;考虑到锁库可能会影响线上服务,默认都是—single-transaction不锁库;考虑到db数量较多,容易出现mysqldump失败,备份期间设置max_allowed_packet为120M,net_write_timeout设为1800s,备份完成后设置回来
3.2 如果机型是LVM,则采用LVM快照备份,快照的实现技术不详细说明,网上很多。一般来说,快照备份非常快,基本就是一个copy数据的速度,还能解决myisam表引擎的问题,视图定义出错等
3.3 针对某些db对备份效率的高要求(比如备份已经严重影响了现网服务),可设置为xtrabackup方式
4 针对每天同一时间点全备对物理机带来的压力,在设计系统定时备份的开始时间时,随机在凌晨0-6点里选择一个点
5 备份监控,通过检测B表的备份是否成功的标志位,及时告警,及时处理
6 针对部分实例存在单独的slave从库做备份,可设置是否在从库,主要就是在slave上stop slave;记录下当前的主库的binlog和pos