备份方式
1、周期性例行备份
生产数据库例行备份统一使用定时任务备份,备份时间定时到业务低峰期。每天备份一次,保留7天的备份,超过7天的备份包括binlog上传到s3存储上。
2、线上数据库变更前备份。
分为自动变更和手动变更,遵照一下规则备份。
自动变更前备份:
使用自动操作平台archery执行的线上变更,操作前数据库备份有操作平台自动执行。
手动变更前备份:
手动进行线上的变更,通过mysqldump 或者 insert into table_bak_202311121423(命名时间到分钟) select * from table 备份。
备份策略
1、数据分级
依据业务的重要性,可以划分如下几个等级
1、涉及公司收入的数据
2、直接提供线上服务的数据
3、间接提供线上服务的数据。
2、备份频率
一级产品数据备份需要保留1年,二级产品备份需要保留30天,三级产品备份要求7天。
备份对象 | 最低备份频率 | 备份方式 | 最短保留时长 | 备注 |
---|---|---|---|---|
涉及公司收入的数据 | 每天 | 全备份+binlog备份 | 360 | 1、binlog 备份 2、全库物理备份 3、超过7天的上传到s3存储 |
直接提供线上服务的数据 | 每天 | 全备份+binlog备份 | 30 | |
间接提供线上数据 | 一周2次 | 全备份+binlog备份 | 7 |
容灾架构:
1、多可用区部署,提升集群的容灾能力。
2、针对重要的任务,增加延迟从库。防止ddl语句造成误操作,无法恢复,设置延迟从库方法。
恢复演练
根据不通的备份方式,每季度进行一次恢复演练,记录数据大小,恢复时长。
使用binlog2sql进行,恢复测试演练,确保熟悉binlog日志恢复工具。
Redis
redis 缓存后端要有MySQL数据做数据备份,保障在redis故障的时候,可以从MySQL加载数据。
redis数据每天备份一次,保留7天。主要用做故障排查。
修改默认参数
rds 开启 binlog_rows_query_log_events参数,binlog会记录真实执行的sql语句,方便故障排查。
应用层数据备份
有关收入金额的数据表,采用软删除,禁止物理删除数据。 默认添加create_time,update_time,delete_time 公共字段,如果delete_time 不是默认值,表示已经删除。定期把数据归档到归档存储,减少数据体积。