Creates ClickHouse database with all the tables existing in MySQL, and all the data in those tables.
ClickHouse server works as MySQL replica. It reads binlog and performs DDL and DML queries.
This feature is experimental.
使用 MySQL 中存在的所有表以及这些表中的所有数据创建 ClickHouse 数据库。
ClickHouse 服务器用作 MySQL 副本。它读取 binlog 并执行 DDL 和 DML 查询。
此功能是实验性的。
目前 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操作。
1、修改my.cnf开启mysql binlog模式
log-bin=/data/logs/mysql/mysql-bin.log # 指定binlog日志存储位置
binlog_format=ROW # 这里一定是row格式
server-id=1
gtid-mode=on
enforce-gtid-consistency=1 # 设置为主从强一致性
log-slave-updates=1 # 记录日志
2、mysql建库建表插数据
mysql> CREATE DATABASE db;
mysql> CREATE TABLE db.test (a INT PRIMARY KEY, b INT);
mysql> INSERT INTO db.test VALUES (1, 11), (2, 22);
mysql> DELETE FROM db.test WHERE a=1;
mysql> ALTER TABLE db.test ADD COLUMN c VARCHAR(16);
mysql> UPDATE db.test SET c='Wow!', b=222;
mysql> SELECT * FROM test;
3、登陆clickhouse客户端,开启mysql物化引擎
clickhouse-client -u default --password default
SET allow_experimental_database_materialize_mysql = 1
# 因为该功能目前还处于实验阶段,在使用之前需要开启
4、创建一个复制管道
CREATE DATABASE mysql ENGINE = MaterializeMySQL('localhost:3306', 'db', 'root', '***');
SHOW TABLES FROM mysql;
5、查看ck数据,会自动同步mysql的数据,后面可以测试一下更新删除。
SELECT * FROM mysql.test;
┌─a─┬───b─┬─c────┐
│ 2 │ 222 │ Wow! │
└───┴─────┴──────┘