mysql+clickhouse部署主从架构配置实时同步流程步骤
在2020年下半年,Yandex 公司在 ClickHouse 社区发布了MaterializeMySQL引擎,支持从MySQL全量及增量实时数据同步。MaterializeMySQL引擎目前支持 MySQL 5.6/5.7/8.0 版本,兼容 Delete/Update 语句,及大部分常用的 DDL 操作。
配置部署mysql主服务(Master)
开启 BinLog 功能:ROW 模式
开启 GTID 模式:解决位点同步时 MySQL 主从切换问题(BinLog reset 导致位点失效)
# my.cnf关键配置
gtid_mode=ON
enforce_gtid_consistency=1
binlog_format=ROW
配置部署ClickHouse 从服务(Slave)
这里使用docker搭建clickhouse
https://www.zongscan.com/demo333/95838.html
创建Slave-ClickHouse中MaterializedMySQL database
# 查询
ca766e6b6e77 :) select * from system.settings where name ='allow_experimental_database_materialized_mysql';
SELECT *
FROM system.settings
WHERE name = 'allow_experimental_database_materialized_mysql'
Query id: 0f9597d4-1ffc-48d7-a961-43d9e9c58054
┌─name───────────────────────────────────────────┬─value─┬─changed─┬─description──────────────────────────────────────────────────┬─min──┬─max──┬─readonly─┬─type─┐
│ allow_experimental_database_materialized_mysql │ 0 │ 0 │ Allow to create database with Engine=MaterializedMySQL(...). │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
└────────────────────────────────────────────────┴───────┴─────────┴──────────────────────────────────────────────────────────────┴──────┴──────┴──────────┴──────┘
1 rows in set. Elapsed: 0.002 sec.
# 开启materialized同步功能
ca766e6b6e77 :) set allow_experimental_database_materialized_mysql=1;
SET allow_experimental_database_materialized_mysql = 1
Query id: f3d1c0fb-9044-4d9a-bb90-3c2470630c4c
Ok.
0 rows in set. Elapsed: 0.001 sec.
# 创建slave库,参数分别是("mysqld服务地址", "待同步库名", "授权账户", "密码")
ca766e6b6e77 :) CREATE DATABASE pdf ENGINE = MaterializeMySQL('localhost:3306', 'pdf', 'root', 'password')
CREATE DATABASE pdf
ENGINE = MaterializeMySQL('localhost:3306', 'pdf', 'root', 'password')
Query id: a808e71c-521b-4419-831f-800c7d153060
Ok.
0 rows in set. Elapsed: 0.036 sec.
ps:
网络上很多参数设置错误,错误如下:
设置参数出错,未知参数
Code: 115. DB::Exception: Received from localhost:9000. DB::Exception: Unknown setting allow_experimental_database_materialize_mysql. (UNKNOWN_SETTING)
问题解决
https://github.com/ClickHouse/ClickHouse/issues/30163
Rename `MaterializeMySQL` to `MaterializedMySQL`
这样主从架构实时同步就配置完了.
后面就是测试了,自行测试,主服添加数据,从服看一下有没有同步过来就ok了
客户端连接方式推荐:DBeaver
还是看个人习惯吧
相关文章