【实践案例分享】小米在mysql数据实时同步的实践

即席查询的BI系统

就如文章开篇提到的,在一定场景下的性能瓶颈,数据同步到kudu后可以借助完成性能的提升

因为同样是sql接口,对使用者的切换成本也是较低的,数据同步到更适合的存储中进行查询,也能够避免因大查询而对原库其他查询的影响

目前小米内部稳定运行3000+的同步作业,使用服务同步数据到kudu中;小米内部BI明星产品借助整套同步流程很好地支持了运营、sql分析同学日常统计分析的需求

如何使用数据

用户接入数据的时候要求库开启日志格式必须为Row模式:记录的是每一行记录的每个字段变化前后的值,虽然会造成binlog数据量的增多,但是能够确保每一条记录准确性,避免数据同步不一致情况的出现

最终通过监听binlog日志,LCSBinlog服务将数据转换成如下的数据结构,写入用户注册的Topic中,目前Sink服务使用SparkStreaming实时转储数据到kudu中,后续也将逐步迁移到Flink上以提升资源利用、降低延迟

业务用户也可以根据我们提供的数据格式,实时消费Talos数据以实现更复杂的业务逻辑,下表为每一种数据操作,是否保存修改前后的列表  

 疑难杂症

下面分享2个上线后遇到的有趣问题

【实践案例分享】小米在mysql数据实时同步的实践


猜你喜欢