MySQL迁移到ClickHouse
admin
2024-01-30 13:52:03
0次

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

   MaterializeMySQL 同步流程:

1.创建MySQL的映射表,在MaterializeMySQL引擎中填写MySQL连接信息(ip地址+端口+数据库名称+用户名+密码),ClickHouse会创建一个引擎为ReplacingMergeTree 的数据表,其中MySQL表的 PRIMARY KEY 作为了 ReplacingMergeTree 的 PARTITION BY,并且按照类型大小除以1000整除;
2.此时ClickHouse会拉取MySQL对象库下的所有表结构,并且添加_sign和_version字段,_sign字段表示数据是否删除,_version字段表示数据最新版本;
3.首次同步采用全量同步MySQL中的表数据,_version版本全为1;
4.后续采用增量同步消费binlog中的SQL,当ClickHouse监听到 insert、update 和 delete 事件时,利用_version号在 databse 内全局自增记录最新数据,当ClickHouse同步到delete语句时,更新_sign字段的值为-1(此时,熟悉MySQL的肯定会想到伪删除,对没错,它就是利用伪删除)。

   

服务器版本 centos7
mysql 版本        5.7.20-log
clickhouse22.7.3.5

在mysql的服务器的my.cnf , 增加log-bin配置

server-id=1
log_bin=binlog.bin
expire_logs_days=15
binlog_format=row
gtid-mode=on
enforce-gtid-consistency=true

测试结果如下:

  • 在MySQL上创建一个表。

mysql> create database db1;mysql> create table test1 (a INT PRIMARY KEY, b INT);

  • 在ClickHouse上新建MaterializeMySQL的表。

# 这里要专门设置以便clickhouse能使用这个特性
ck> set allow_experimental_database_materialized_mysql=1;  
## 这里创建连接到user@172.30.1.17:3306/db1的database连接,命名为db1_ckck> CREATE DATABASE db1_ck ENGINE = MaterializeMySQL('172.30.1.17:3306', 'db1', 'root', '***');
## 进入db1_ck这个数据库ck> use db1_ck;
## 查看db1_ck库下的表,可以看到test1这个表ck> show tables;

  • 查看test1这个表在ck上的表结构。

ck> show create table test1;
CREATE TABLE db1_ck.test1(    `a` Int32,    `b` Nullable(Int32),    `_sign` Int8 MATERIALIZED 1,    `_version` UInt64 MATERIALIZED 1,    INDEX _version _version TYPE minmax GRANULARITY 1)ENGINE = ReplacingMergeTree(_version)PARTITION BY intDiv(a, 4294967)ORDER BY tuple(a)SETTINGS index_granularity = 8192

test1表使用的是ReplacingMergeTree引擎,表结构新增了两个字段_sign和_version作为隐藏字段,用于标识该行是否删除和版本号。这样将MySQL的update和delete统一转换成insert,充分利用ClickHouse快速导入数据、update和delete慢且容易出问题的特性。内部实现原理的细节和好处,我们将在另外一篇文章里面介绍。

  • 在MySQL上操作,看数据会不会同步到ClickHouse上。

mysql> insert into test1 values (1,11),(2,22),(3,33);mysql> update test1 set b=77 where a=1;mysql> delete from test1 where a=2;
ck> select * from db1_ck.test1;┌─a─┬──b─┐│ 1 │ 77 ││ 3 │ 33 │└───┴────┘

可以看到,数据基本都正确地同步到ClickHouse上去了。

查看所有数据

select *, _version,_sign  from test1;


┌─a─┬──b─┬─_version─┬─_sign─┐
│ 2     │ 22     │        4 │    -1 │
└───┴────┴──────────┴───────┘
┌─a─┬──b─┬─_version─┬─_sign─┐
│ 1      │ 77 │        3 │     1 │
└───┴────┴──────────┴───────┘
┌─a─┬──b─┬─_version─┬─_sign─┐
│ 1     │ 11 │        2 │     1 │
│ 2     │ 22 │        2 │     1 │
│ 3     │ 33 │        2 │     1 │
└───┴────┴──────────┴───────┘
 

相关内容

热门资讯

易达淘金APP虚假商品订购交易...   易达淘金APP存在严重的虚假宣传与违规交易行为。该平台打着“商品订购”的旗号,实则通过不合规的交...
大浪淘金APP白银订购亏损被骗...   大浪淘金APP最隐蔽的套路,在于其完全封闭的内盘交易系统。表面上,它宣称与国际贵金属市场接轨;实...
一品好购APP上订购白银出现亏...   一品好购APP原名“一品订购”,运营方为上海宝智未来信息技术有限公司。近期不少投资者反映在该平台...
九州订购APP贵金属订购投资骗...   九州订购APP正通过抖.音、快手、今日头条等平台大量投放投资广告,用“5元起投”“充值返现”“0...
坚锅淘金APP交易软件并不正规...   当前,市面上大量所谓的“现货商城订购”交易软件,早已偏离了正常的实物商品买卖,演变为高杠杆、高手...
斗金订购APP贵金属期货交易骗...   斗金订购APP的投资者往往被铺天盖地的广告宣传所诱导——注册即送现金、充值返现券等看似诱人的福利...
警惕!云启购APP违规经营,披...   "5元起投、充值返现、稳赚不赔"——这些诱人的广告语背后,可能是一个精心设计的金融陷阱。  近期...
量子淘金APP贵金属投资不合规...   "4元起投""充值返券""月入过万"——这些极具诱惑力的广告语在短视频平台、社交软件上铺天盖地。...
鑫汇智投APP贵金属商品订购骗...   鑫汇智投APP非法期货投资骗局,受害者在投资过程中根本不懂交易,也不去研究和验证这个平台是否正规...
矅光智策APP平台违规经营非法...   矅光智策APP对外宣称是“商城订购”“现货交易”,但查询其经营范围,并未显示具备开展现货期货交易...
黄金珠宝怎么选?内侧刻字都代表... 潮新闻客户端 记者 马焱 通讯员 任倩影 9月8日下午,“云游杭州 乐购金秋”——“浙城·浙放心”活...
原创 冰... 最近全球国债市场正在上演魔幻一幕: 美债、日债、欧债遭遇猛烈抛售,收益率冲到几十年新高,美国财政部都...
日韩股市开盘表现分化 上证报中国证券网讯 9月9日,日韩股市开盘表现分化,韩国综合指数开盘上涨0.26%,报6972.87...
国际原油拉升,中曼石油涨超8%... 9月8日,油气开采及服务板块持续走高, 中曼石油(603619.SH)涨超8%, 石化油服(6008...
宁波银行启动2026年金融教育... 9月7日至13日,宁波银行开展2026年金融教育宣传周。此次活动紧扣“清朗金融网络 守护安心消费”主...
食物发芽后都有毒吗?哪些不能吃... 不少家庭囤放的食材放置一段时间后,悄悄长出了“小芽”。提到食物发芽,大多数人会认为“发芽的食物一般都...
3年9700万美元!骑士官宣与... 搜狐体育消息,北京时间9月9日,骑士官方今日宣布,球队已与哈登续签了一份多年期合同。 骑士官方写道...
农行工行定增2600亿 或于年... 记者 胡艳明 国有大行新一轮资本补充方案落地。 2026年9月7日,农业银行(下称“农行”)、工商银...
9月9日每日研选丨超强厄尔尼诺... 超强厄尔尼诺正成为近期农产品板块走强的核心推手。据美国国家海洋和大气管理局(NOAA)预测,2026...
巨头库存告急,美股光学网络携手... 当地时间9月8日,劳动节长假后的首个交易日,美股三大指数同步走低。标普500指数跌0.58%报767...