腾讯游戏数据自愈服务方案简介
1. 引言
在正式介绍项目背景之前,让我们先看一组数据:
这是2个灰度的业务,都是Z3服务器,我们先只从时间成本的收益角度来看:
⑴ 左一业务数据量是330G,数据不一致时通过重做slave需要150分钟左右,而借助pt-table-sync只需要5分钟,速度提升30 倍。
⑵ 右一业务的量是93G,通过sync工具花费3分钟,而如果重做slave要35分钟,速度提升12倍。
引入这组数据意在指明,整个过程不仅解放了DBA的双手,也符合”零运维”的趋势,数据自愈将是互娱DBA团队在未来提供的服务之一。
2. 背景
MySQL数据库基于binlog的数据同步方案,绝大部分情况下能保证主备数据完全一致,但某些异常情况下,例如开发使用了unsafe statement的SQL(如带limit)及硬件故障等,都可能导致主备数据不一致。DBA通过checksum工具可以发现这些不一致的情况,但往往需要重新做一个热备来恢复主备数据一致性,并且此过程可能需要10小时以上,而实际情况上主备数据通常仅有少量不一致,在线修复这些数据差异可以更高效地完成一个数据一致的热备。
3. 收益
重做热备是我们目前首选的修复方案,但有时候没有备用的新机子却让修复步伐戛然而止,而如果没有修复,倘若master故障,由于数据不一致,切换到slave是存在数据丢失的风险,那么又不得不执行修复,DBA就需要评估以前slave上的连接切换到master是否会影响master的性能......这样DBA的工作量就无形中翻倍了。
我们在引言中也道出了sync工具相比传统的热备在时间上的收益,但除了这个,数据自愈服务的收益包括但不限于:
▼ 业务数据更安全,恢复热备时间变短
▼ 减少服务器资源,避免重做热备的机器申请
▼ 提升DBA做热备的处理效率
▼ 降低沟通成本,保证业务持续稳定运行
4. 数据自愈解决方案
我们从开源社区引入了Percona公司的pt-table-sync,该项目从2007年启动。
下面