跳转到主要内容

ninedata&&数据库工具

项目微服务化后,势必出现一些基础数据的冗余,常见方法有字段冗余、整表冗余。为降低难度,我们优选了整表冗余。在通过同步工具进行表同步。

常见的表同步工具有:

这两个工具原理都一样,把自己伪装成一个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语句使差异一致(永远是以源为基准)