文章插图
通过上述多个维度的对比,TiDB方案在性能表现、水平扩展、运维复杂度及机器成本上都优于waggle-dance方案 , 故我们线上选择了前者进行上线应用 。
三、TiDB上线方案选择TiDB引擎替代原MySQL存储引擎,由于TiDB与MySQL之间不能做双主架构,在切换过程中HMS服务须完全停服后并重新启动切换至TiDB,为保障切换过程顺利及后面若有重大问题发生能及时回滚,在切换前做了如下数据同步架构以保障切换前MySQL与TiDB数据一致以及切换后仍有MySQL兜底 。
文章插图
在上述架构中 , 切换前唯一可写入的数据源只有源数据库主库 , 其他所有TiDB、MySQL节点都为只读状态 , 当且仅当所有HMS节点停服后 , MySQL源数据库从库及TiDB源数据库主库的数据同步最大时间戳与源数据库主库一致时 , TiDB源数据库主库才开放可写入权限,并在修改HMS底层存储连接串后逐一拉起HMS服务 。
在上述架构完成后 , 即可开始具体的切换流程,切换整体流程如下:
文章插图
其中在保障源MySQL与TiDB数据正常同步前,需要对TiDB做以下配置:
- tidb_skip_isolation_level_check需要配置为1,否则启动HMS存在MetaException异常 。
- tidb_txn_mode需配置为pessimistic,提升事务一致性强度 。
- 事务大小限制设置为3G,可根据自己业务实际情况进行调整 。
- 连接限制设置为最大3000 ,可根据自己业务实际情况进行调整 。
以下为TiDB方案在在不同维度上的表现:
- 在对HQL的兼容性上TiDB方案完全兼容线上所有引擎对元数据的查询 , 不存在语法兼容问题,对HQL语法兼容度达100%
- 在性能表现上查询类接口平均耗时优于MySQL,性能整体提升15%;建表耗时降低了80%,且支持更高的并发 , TiDB性能表现不差于MySQL
- 在机器资源使用情况上整体磁盘使用率在10%以下;在没有热点数据访问的情况下,CPU平均使用率在12%;CPU.WAIT.IO平均值在0.025%以下;集群不存在资源使用瓶颈 。
- 在可扩展性上TiDB支持一键水平扩缩容,且内部实现查询均衡算法,在数据达到均衡的情况下各节点可平摊查询压力 。
- 在容灾性上TiDB Binlog技术可稳定支撑TiDB与MySQL及TiDB之间的数据同步,实现完整的数据备份及可回退选择 。
- 在服务高可用性上TiDB可选择LVS或HaProxy等服务实现负载均衡及故障转移 。
文章插图
图片
文章插图
图片
文章插图
图片
文章插图
图片
文章插图
图片
文章插图
图片
文章插图
图片
文章插图
图片
(左右滑动,查看更多···)
四、问题及解决方案4.1 在模拟TiDB回滚至MySQL过程中出现主键冲突问题在TiDB数据增长3倍后 , 切换回MySQL出现主键重复异常,具体日志内容如下:
推荐阅读
- 用了这么多年的泛型,你对它到底有多了解?
- 深入了解:MySQL与Oracle的差异及各自优势
- 任正非和孟晚舟多次提的「算力」 到底是个啥?
- 生理期到底能不能练瑜伽?怎么练?
- 豆浆到底对身体有哪些影响?
- 大年初一到初七的风俗有哪些 大年初一到初七的风俗
- 她被琼瑶“下套”欺骗,为拍戏故意堕胎,如今58岁她得到了什么
- 初一到十五吃什么 初一到十五吃什么有讲究吗
- 投屏怎么投到电视上电视怎么设置 投屏怎么投到电视上
- 多多果园加速药水找不到了 多多果园加速药水在哪里