链接:https://zhuanlan.zhihu.com/p/370381543
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
TcaplusDB是腾讯自研的noSQL数据库,针对游戏的开发特点而定制,具备高性能、低成本、高可用、强弹性伸缩等特点,本文重点介绍Tcaplus高可用中必备的数据恢复功能。
TcaplusDB采用主备做数据的冗余备份,其中Master和Slave角色是对等的,具体表现在Master的数据会异步的同步到Slave,当Master挂掉后,Slave会切换为Master提供服务。
数据恢复包括两个部分:备份与恢复,因此从以下两点来介绍。
备份
数据库需要定时备份。从TcaplusDB架构图中得知,每对主备都是通过备机定时向冷备中心做备份。在每台机器上架的时候,冷备脚本都会部署到机器上,之后通过冷备脚本与冷备中心的交互完成备份工作。
冷备脚本的作用
- 对当前机器做dump操作,dump全量数据,并submit到冷备中心,然后由冷备中心发起调度,将冷备文件拉取到冷备中心。
- 对当前机器的增量binlog流水submit到冷备中心,然后由冷备中心发起调度,将binlog流水文件拉取到冷备中心。
- 定时清理机器已上传完毕的全量冷备文件。
- 定时清理机器已上传完毕的增量binlog流水文件。
备份策略
- 每日凌晨1:05分,从tcapsvr slave 备份一份全量数据到机器的bak目录,等待冷备中心拉取。
- 每台机器的全量备份要求10小时内全部上传到冷备中心。
- 每隔五分钟,将增量日志流水到冷备中心。
- 每台机器的增量日志,自submit后,要求冷备中心一小时内拉取完毕。
冷备中心
- Tcaplus使用的冷备中心是技术运营部负责维护的,互娱大部分业务的备份都会存到冷备中心。
- Tcaplus每天与冷备中心交互的Slave机器约1400台左右。
- 每台机器产生的全量冷备最大1.1TB,增量引擎约500GB。
- 冷备中心对于某个Ip发起的submit任务后,会在目的机器的Ip上发起rsync线程拉取文件到冷备中心。
- 对于要上传冷备的Ip,区分了千兆带宽和万兆带宽,万兆带宽上传和下载速度要高于千兆带宽。
恢复
故障恢复
故障恢复中最主要的又是机器故障,一般分为Slave故障和Master故障:
对于Slave机器故障,由DBA发起Slave重建事务,此时新替换的机器,会将原挂起的slave的冷备下载到本地,经解压后注册到Master。
对于Master机器故障,系统会自动将Slave切换为Master,之前的Master切换为Slave,Slave再发起重建事务,拉取新Master的冷备做数据恢复。
业务恢复
业务需要恢复一些key到指定时间点
这类问题分两步:
①把数据构造到指定时间点,包括从冷备中心拉取到本地以及解压到指定的目录。
②从构造好的数据里找到对应的key,将数据导入线上。导入前,项目组有时知道具体的key,有时只知道具体的范围,此时分两种情况讨论:
key已知:从构造好的数据中遍历查找到执行的key,发起导入即可。
key未知,只知道范围:TcaplusDB将范围内数据遍历出来并提供给项目组,由项目组辨识需要回档的key导入线上。
两种情况均已事务化。
业务测试需要将现网数据复制到测试环境
现网和测试环境属于两个集群,该过程也分为两步:首先将现网的数据构造一份,然后复制到测试环境并全量导入。
TcaplusDB是腾讯出品的分布式NoSQL数据库,存储和调度的代码完全自研。具备缓存+落地融合架构、PB级存储、毫秒级时延、无损水平扩展和复杂数据结构等特性。同时具备丰富的生态、便捷的迁移、极低的运维成本和五个九高可用等特点。客户覆盖游戏、互联网、政务、金融、制造和物联网等领域。