clickhouse高级功能之MaterializeMySQL详解

本文介绍了ClickHouse的MaterializeMySQL引擎,通过MySQL的binlog实现实时物化数据,提升数仓查询性能并降低MySQL负载。支持全量和增量同步,兼容多种DDL操作。在测试中,ClickHouse能实时反映MySQL数据变化,但ReplaceMergeTree的删除操作为标记删除,可能影响查询性能。目前20.8版本还不是稳定版,存在一些限制,如需主键字段且不允许NULL。
摘要由CSDN通过智能技术生成

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

知识列表

介绍

目前 MaterializeMySQL database engine 还不支持表级别的同步操作,需要将整个mysql database映射到clickhouse,映射过来的库表会自动创建为ReplacingMergeTree表engine。

MaterializeMySQL 支持全量和增量同步,首次创建数据库引擎时进行一次全量复制,之后通过监控binlog变化进行增量数据同步;该引擎支持mysql 5.6/5.7/8.0版本数据库,兼容insert,update,delete,alter,create,drop,truncate等大部分DDL操作。

演示

  • 修改my.cnf开启mysql binlog模式

 

log-bin=/data/logs/mysql/mysql-bin.log  # 指定binlog日志存储位置
binlog_format=ROW  # 这里一定是row格式
server-id=1  

如果clickhouse使用的是20.8 prestable之后发布的版本,那么还需要配置开启GTID模式

 

gtid-mode=on
enforce-gtid-consistency=1    # 设置为主从强一致性
log-slave-updates=1   # 记录日志
  • 首先在mysql中先创建scene表

 

CREATE TABLE `scene` (
  `id` int NOT NULL AUTO_INCREMENT,
  `code` int NOT NULL,
  `title` text DEFAULT NULL,
  `updatetime` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),   ##主键要设置为not null,否则会报错
  KEY `idx_code` (`code`)   ##索引键也要设置为not null,否则会报错
) ENGINE=InnoDB default charset=Latin1;

  • 登陆clickhouse客户端,开启mysql物化引擎

 

SET allow_experimental_database_materialize_mysql = 1
# 因为该功能目前还处于实验阶段,在使用之前需要开启
  • 创建一个复制管道

 

CREATE DATABASE scene_mms
ENGINE
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值