首页 > 数据库技术 > 详细

ClickHouse MaterializeMySQL 数据库引擎

时间:2020-12-20 23:16:54      阅读:224      评论:0      收藏:0      [点我收藏+]

ClickHouse 20.8将新增 MaterializeMySQL引擎 ,可通过binlog日志实时物化mysql数据,极大提升了数仓的查询性能和数据同步的时效性;原有mysql中承担的数据分析工作 可交由clickhouse去做,这么做可显著降低线上mysql的负载,从此OLTP与OLAP业务实现完美融合。

 

MaterializeMySQL database engine 支持的情况:
 1.支持mysql 库级别的数据同步,暂不支持表级别的。
 2.MySQL 库映射到clickhouse中自动创建为ReplacingMergeTree 引擎的表
 3.支持全量和增量同步,首次创建数据库引擎时进行一次全量复制,之后通过监控binlog变化进行增量数据同步
 4.支持的MySQL版本:5.6 、5.7、8.0
 5.支持的操作:insert,update,delete,alter,create,drop,truncate等大部分DDL操作
 6.支持的MySQL复制为GTID复制

我的环境:

RedHat 7

ClickHouse 20.8.3.18

Mysql  5.7(window上安装的mysql服务)

1)查看当前mysql配置情况

show variables like ‘%log%bin%‘;  

技术分享图片

 

 show variables like ‘%binlog_format%‘;

技术分享图片

 

 show variables like ‘server_id‘;

技术分享图片

 

 select version();

技术分享图片

 

 2)设置mysql配置参数

需要的配置为:

log-bin=mysqlbin.log
binlog_format=ROW
server-id=1

我这边需要配置的是开启binlog

编辑my.ini   (linux下是my.conf文件)

技术分享图片

 

 重启mysql服务

技术分享图片

 

 重启之后:show variables like ‘%log%bin%‘;可以看到已经开启binlog.

技术分享图片

 

3)设置clickhouse配置参数,开启mysql物理化引擎

 查看clickhouse的版本

select version()

技术分享图片

 

查看allow_experimental_database_materialize_mysql的值

select * from system.settings where name =‘allow_experimental_database_materialize_mysql‘;

技术分享图片

 

 

 

 设置allow_experimental_database_materialize_mysql=1 (# 因为该功能目前还处于实验阶段,在使用之前需要开启)

 set allow_experimental_database_materialize_mysql=1

技术分享图片

 

 

 4)在mysql中创建clickhouse_test数据库,并创建user表,添加了2条数据,如下图

技术分享图片

 

 

 5)在clickhouse中创建mysql的复制管道

先查看下clickhouse中的数据库信息

技术分享图片

 

 

 创建clickhouse_mysql数据库,关联到本地的clickhouse_test数据库

CREATE DATABASE clickhouse_mysql ENGINE = MaterializeMySQL(‘192.168.31.250:3306‘, ‘clickhouse_test‘, ‘root‘, ‘123456‘)

技术分享图片

 

 

 上图可以看到clickhouse_mysql数据库创建好了

现在进入到clickhouse_mysql,查看user表

技术分享图片

 

 

报错:需要在MySQL端开启GTID模式

确保MySQL版本在5.6. 以上,在MySQL 5.7版本支持热部署,即不停止服务的情况下开启GTID模式

查看mysql的gtid_mode值

技术分享图片

 

 

 查看mysql的 enforce_gtid_consistency值

技术分享图片

 

 

 

开启enforce_gtid_consistency和gtid_mode:

 SET GLOBAL ENFORCE_GTID_CONSISTENCY = WARN;
 SET GLOBAL ENFORCE_GTID_CONSISTENCY = ON;
 SET GLOBAL GTID_MODE = OFF_PERMISSIVE;
 SET GLOBAL GTID_MODE = ON_PERMISSIVE;
 SET GLOBAL GTID_MODE = ON;

验证:

技术分享图片技术分享图片

 

 开启之后,删除刚才在clickhouse中创建的clickhouse_mysql数据库,重新创建

技术分享图片

 

 进入到clickhouse_mysql数据库,查看user表,可以看到我们刚才插入的数据,而是是全量数据

 技术分享图片

 

 现在测试下增量数据:

在mysql端插入了一条数据,id=3

技术分享图片

 

 在clickhouse中查看数据

技术分享图片

 

 同步过来了!!!

后续还有很多没验证

参考: https://blog.csdn.net/weixin_42993799/article/details/109020316

ClickHouse MaterializeMySQL 数据库引擎

原文:https://www.cnblogs.com/kopao/p/14164398.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!