mysql+clickhouse部署主从架构配置实时同步流程步骤

2023-06-01 00:00:00 架构 部署 主从

在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

还是看个人习惯吧

相关文章