1、mysql端
1.1、配置mysql启动二进制复制
vim /etc/my.conf
在[mysqld]下添加
[mysqld]
server-id=1
log-bin=mysql-bin
binlog_format=ROW
gtid_mode = ON
enforce_gtid_consistency = ON
default_authentication_plugin=mysql_native_password
修改配置需要重启mysql服务
1.2、创建SLAVE账户
登录mysql,使用mysql数据库添加replica用户给clickhouse复制数据
>use mysql;
>CREATE USER 'replica'@'%' IDENTIFIED BY '密码';
>ALTER user 'replica'@'%' IDENTIFIED BY '密码' PASSWORD EXPIRE NEVER;(可以不执行)
>ALTER user 'replica'@'%' IDENTIFIED WITH mysql_native_password BY '密码';(可以不执行)
>GRANT REPLICATION SLAVE,REPLICATION CLIENT,RELOAD,SELECT ON *.* TO 'replica'@'%';(GRANT 是全局设置,不能设置单个数据库,一定要写 *.* ,要只给replica复制一个数据库只能去my.conf中设置)
>FLUSH PRIVILEGES;
以上是mysql的配置
2、clickhouse端
2.1、设置数据存储目录(只有一个磁盘或者a盘够大的可直接跳过)
创建一个存放数据的目录
mkdir -p /data/clickhouse/tmp
chown -R clickhouse:clickhouse /data/clickhouse
修改/etc/clickhouse-server/config.xml 文件中的数据目录设置,找到 <path>
和 <tmp_path>
标签,并更改为新的目录路径
<!-- Path to data directory, with trailing slash. --> <path>/app/clickhouse/</path>
<tmp_path>/data/clickhouse/tmp/</tmp_path>
如果默认数据存储的目录下有文件也要一并迁走: mv /var/lib/clickhouse/* /data/clickhouse/
修改配置文件记得重启clickhouse-server服务:/etc/init.d/clickhouse-server restart
2.2、clickhouse连接mysql
登录clickhouse-client
启用 MaterializedMySQL
引擎:SET allow_experimental_database_materialized_mysql = 1;(一次性的?设置过一次重新登录就要重新设置)
2.2.1 同步整个库
CREATE DATABASE 新建的clickhouse数据库名 ENGINE = MaterializedMySQL('mysql的IP:3306', '要同步的mysql数据库名', 'mysql中配置的可以复制数据的SLAVE用户', '数据库密码');
2.2.2 同步一张表
CREATE DATABASE 新建的clickhouse数据库名 ENGINE = MaterializedMySQL('mysql的IP:3306', '要同步的mysql数据库名, 'mysql中配置的可以复制数据的SLAVE用户', '数据库密码') SETTINGS materialized_mysql_tables_list = '单个表名';
3、验证是否成功
还是在clickhouse-client下查看
查看是否创建新的数据库:show datatables;
使用新创建的数据库:use 数据库名;
查看数据库中的表名:SHOW TABLES FROM 数据库名;
查看单张表的数据:select count(*) from 表名;(使用clickhouse都是千万级别的数据,建议直接查看数据量,否则刷屏容易死机)
参考:https://blog.csdn.net/u011197085/article/details/135227736
翻译
搜索
复制
标签:同步,SLAVE,数据库,server,replica,mysql,clickhouse From: https://www.cnblogs.com/leihongnu/p/18234789