ninedata&&数据库工具
项目微服务化后,势必出现一些基础数据的冗余,常见方法有字段冗余、整表冗余。为降低难度,我们优选了整表冗余。在通过同步工具进行表同步。
常见的表同步工具有:
- maxwell: https://maxwells-daemon.io/
- canal : https://github.com/alibaba/canal
这两个工具原理都一样,把自己伪装成一个slave,订阅binlog日志,将更改推送到消息队列,包括了数据是如何变化的,例如增删改、原始数据、修改后的数据;开发者对更改订阅处理。需要多个组件、需要代码实现、适合复杂场景。例如数据库更改修改缓存。
第二个工具是,otter,基于canal,实现了修改订阅,直接进行库(表)对库(表)同步。简单易用,但是暂时不支持 mysql 8,且更新至2019年即没有在更新了。不过对于mysql 5.7的支持尚可,虽然有一些bug,基本能满足要求,一些常见问题也积累了相关经验,有源代码,进行一些改造也可以适应mysql 8。
otter相关文档
github:https://github.com/alibaba/otter
常见问题:https://iovhm.com/book/books/42e7a/page/otter
ninedata
因为otter偶尔会抽风,导致数据没有同步,需要一个数据比对工具,来保证需要同步的表的数据是一致的,ninedata提供的相关功能,基本能满足这个要求了,且提供了其他工具。社区版免费使用。
官方网址:https://www.ninedata.cloud/
核心功能:
- 查询分析器
- 慢sql分析
- 数据对比,主从不同步了也应该可以使用这个功能
- 数据复制(用于数据搬迁和数据归档)
- 数据库结构对比
社区版安装方法
只能在主机上安装,不能在k8s里面安装。
version: "3"
services:
ninedata:
image: harbor.iovhm.com/public/ninedata:20250618
container_name: ninedata
restart: always
privileged: true
ports:
- "9999:9999"
volumes:
- ./data:/u01
使用截图
安装完成后使用admin / admin 默认密码登陆
- 配置数据源
- 慢sql分析,需要先在mysql开启慢sql分析功能
# 临时有效
SET GLOBAL slow_query_log=1;
SET GLOBAL long_query_time=30;
SET GLOBAL log_output='TABLE';
# 开启慢查询日志
slow_query_log=1
# 慢查询日志文件路径
# slow_query_log_file=/var/log/mysql/mysql-slow.log
# 如果未设置,可以使用 SHOW VARIABLES LIKE 'slow_query_log_file'查看
# 记录查询执行时间超过30秒的查询
long_query_time=30
- 数据比对
- 数据比对明细
- 查看两者的差异
- 查看差异详情、生成SQL语句使差异一致(永远是以源为基准)