[clickhouse]同步MySQL

前言

clickhouse的查询速度非常快,而且兼容大部分MySQL的sql语法,因此一般将clickhouse作为MySQL的读库。
本文提供两种clickhouse同步MySQL的方式

  • clickhouse版本:21.2.4.6
  • MySQL版本:8.0.22

使用MySQL引擎

nil

使用MaterializedMySQL引擎

目前(2022年7月25日)这还只是个实验功能。

配置MySQL

  1. 修改MySQL的配置文件,启用gtid,binlog等
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv=
character_set_server = utf8mb4
max_connections=5000
max_user_connections=3000
transaction_isolation=READ-COMMITTED
wait_timeout=300
default-time_zone='+8:00'
server_id=1
expire_logs_days=5
binlog-format=row
# 指定需要同步的数据库
binlog-do-db=testdb
enforce-gtid-consistency=on
log-slave-updates=on
gtid-mode=on
default_authentication_plugin=mysql_native_password
  1. 在MySQL创建用于同步的账号

配置clickhouse

-- 启用MaterializeMySQL引擎的功能
set allow_experimental_database_materialized_mysql = 1;

-- 指定MySQL的IP、端口、数据库、同步用户及其密码,同步用户需要有主从复制的权限
-- 使用materialized_mysql_tables_list指定需要同步的数据表,该参数只有新版(至少v22)才官方支持
CREATE DATABASE testdb1_ch ENGINE = MaterializeMySQL('192.168.0.10:3306', 'testdb1', 'syncuser', 'syncpass') SETTINGS materialized_mysql_tables_list='table1,table2';

配置完成后直接测试即可。

参考

posted @ 2023-01-03 19:13  花酒锄作田  阅读(910)  评论(0编辑  收藏  举报