MySQL到TiDB:Hive Metastore横向扩展之路( 二 )

  • 除引入TiDB作为存储引擎外 , 不需要额外的其他服务支撑整个架构的运行 。
  • 2.3 TiDB和Waggle Dance对比前面内容对Waggle-dance方案和TiDB方案做了简单的介绍及优势总结 , 以下列举了这两个方案在多个维度的对比:
    MySQL到TiDB:Hive Metastore横向扩展之路

    文章插图
    通过上述多个维度的对比,TiDB方案在性能表现、水平扩展、运维复杂度及机器成本上都优于waggle-dance方案 , 故我们线上选择了前者进行上线应用 。 
    三、TiDB上线方案选择TiDB引擎替代原MySQL存储引擎,由于TiDB与MySQL之间不能做双主架构,在切换过程中HMS服务须完全停服后并重新启动切换至TiDB,为保障切换过程顺利及后面若有重大问题发生能及时回滚,在切换前做了如下数据同步架构以保障切换前MySQL与TiDB数据一致以及切换后仍有MySQL兜底 。
    MySQL到TiDB:Hive Metastore横向扩展之路

    文章插图
    在上述架构中 , 切换前唯一可写入的数据源只有源数据库主库 , 其他所有TiDB、MySQL节点都为只读状态 , 当且仅当所有HMS节点停服后 , MySQL源数据库从库及TiDB源数据库主库的数据同步最大时间戳与源数据库主库一致时 , TiDB源数据库主库才开放可写入权限,并在修改HMS底层存储连接串后逐一拉起HMS服务 。
    在上述架构完成后 , 即可开始具体的切换流程,切换整体流程如下:
    MySQL到TiDB:Hive Metastore横向扩展之路

    文章插图
    其中在保障源MySQL与TiDB数据正常同步前,需要对TiDB做以下配置:
    • tidb_skip_isolation_level_check需要配置为1,否则启动HMS存在MetaException异常 。
    • tidb_txn_mode需配置为pessimistic,提升事务一致性强度 。
    • 事务大小限制设置为3G,可根据自己业务实际情况进行调整 。
    • 连接限制设置为最大3000 ,可根据自己业务实际情况进行调整 。
    此外在开启sentry服务状态下,需确认sentry元数据中NOTIFICATION_ID的值是否落后于HMS元数据库中NOTIFICATION_SEQUENCE表中的NEXT_EVENT_ID值,若落后需将后者替换为前者的值,否则可能会发生建表或创建分区超时异常 。
    以下为TiDB方案在在不同维度上的表现:
    1. 在对HQL的兼容性上TiDB方案完全兼容线上所有引擎对元数据的查询 , 不存在语法兼容问题,对HQL语法兼容度达100% 
    2. 在性能表现上查询类接口平均耗时优于MySQL,性能整体提升15%;建表耗时降低了80%,且支持更高的并发 , TiDB性能表现不差于MySQL
    3. 在机器资源使用情况上整体磁盘使用率在10%以下;在没有热点数据访问的情况下,CPU平均使用率在12%;CPU.WAIT.IO平均值在0.025%以下;集群不存在资源使用瓶颈 。
    4. 在可扩展性上TiDB支持一键水平扩缩容,且内部实现查询均衡算法,在数据达到均衡的情况下各节点可平摊查询压力 。
    5. 在容灾性上TiDB Binlog技术可稳定支撑TiDB与MySQL及TiDB之间的数据同步,实现完整的数据备份及可回退选择 。
    6. 在服务高可用性上TiDB可选择LVS或HaProxy等服务实现负载均衡及故障转移 。
    以下为上线后HMS主要API接口调用耗时情况统计:
    MySQL到TiDB:Hive Metastore横向扩展之路

    文章插图
    图片
    MySQL到TiDB:Hive Metastore横向扩展之路

    文章插图
    图片
    MySQL到TiDB:Hive Metastore横向扩展之路

    文章插图
    图片
    MySQL到TiDB:Hive Metastore横向扩展之路

    文章插图
    图片
    MySQL到TiDB:Hive Metastore横向扩展之路

    文章插图
    图片
    MySQL到TiDB:Hive Metastore横向扩展之路

    文章插图
    图片
    MySQL到TiDB:Hive Metastore横向扩展之路

    文章插图
    图片
    MySQL到TiDB:Hive Metastore横向扩展之路

    文章插图
    图片
    (左右滑动,查看更多···)
    四、问题及解决方案4.1 在模拟TiDB回滚至MySQL过程中出现主键冲突问题在TiDB数据增长3倍后 , 切换回MySQL出现主键重复异常,具体日志内容如下:


    推荐阅读