1.安装配置ClickHouse
1.1 安装 ClickHouse
-
安装 YUM 工具包:
bashsudo yum install -y yum-utils
-
添加 ClickHouse YUM 仓库:
bashsudo yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo
-
安装 ClickHouse 服务器和客户端:
bashsudo yum install -y clickhouse-server clickhouse-client
-
启用并启动 ClickHouse 服务:
bashsudo systemctl enable clickhouse-server sudo systemctl start clickhouse-server sudo systemctl status clickhouse-server
-
连接到 ClickHouse 客户端(如果未设置密码):
bashclickhouse-client
1.2 配置 ClickHouse
1.2.1 修改默认用户密码
-
使用 OpenSSL 生成密码的 SHA256 哈希。
bashecho -n 123456789 | openssl dgst -sha256
-
编辑
/etc/clickhouse-server/users.xml
文件,在users.xml
文件中,将<password_sha256_hex>
标签的值设置为生成的哈希值。之前的<password>
标签需要注释掉。xml<password_sha256_hex>15e2b0d3c33891ebb0f1ef609ec419420c20e320ce94c65fbc8c3312448eb225</password_sha256_hex>
-
完成密码设置后,需要重启 ClickHouse 服务以应用更改。
bashsystemctl restart clickhouse-server
-
测试登录以验证密码是否正确设置。
bashclickhouse-client --password
-
其它用户连接,使用默认用户名
default
和配置的密码XXXXXX
连接到 ClickHouse 客户端。bashclickhouse-client --user default --password XXXXX
1.2.2 配置远程登录:
-
编辑
/etc/clickhouse-server/config.xml
文件。bashsudo nano /etc/clickhouse-server/config.xml
-
找到并取消注释(或添加)以下行以允许远程连接:
xml<listen_host>0.0.0.0</listen_host>
-
完成设置后,需要重启 ClickHouse 服务以应用更改。
bashsystemctl restart clickhouse-server
1.2.3 修改数据目录
-
停止 ClickHouse 服务:
-
停止 ClickHouse 服务以确保在移动数据时不会发生损坏。
bashsudo systemctl stop clickhouse-server
-
-
创建新的数据目录:
-
如果新目录
/app/clickhouse
还不存在,需要先创建它。bashsudo mkdir -p /app/clickhouse sudo mkdir -p /app/clickhouse/tmp
-
-
编辑配置文件:
-
修改
/etc/clickhouse-server/config.xml
文件中的数据目录设置。bashsudo nano /etc/clickhouse-server/config.xml
-
找到
<path>
和<tmp_path>
标签,并更改为新的目录路径:xml<!-- Path to data directory, with trailing slash. --> <path>/app/clickhouse/</path> <tmp_path>/app/clickhouse/tmp/</tmp_path>
-
在 nano 中,按
Ctrl + O
保存更改,然后按Ctrl + X
退出。
-
-
移动现有数据(如果适用):
-
将数据从默认目录
/var/lib/clickhouse/
移动到新目录/app/clickhouse/
。bashsudo mv /var/lib/clickhouse/* /app/clickhouse/
-
-
设置正确的权限:
-
确保新目录具有正确的权限,以便 ClickHouse 可以访问。
bashsudo chown -R clickhouse:clickhouse /app/clickhouse sudo chmod -R 700 /app/clickhouse
-
-
重启 ClickHouse 服务:
-
重启 ClickHouse 服务,并检查是否一切正常。
bashsudo systemctl start clickhouse-server
-
2.配置 MySQL和ClickHouse实时同步
2.1 配置MySQL
-
确保 MySQL 实例已启用二进制日志(binlog),这是实现实时同步的必要条件。编辑 MySQL 的配置文件/etc/my.cnf:
c[mysqld] server-id=1 log-bin=mysql-bin binlog_format=ROW
-
配置
gtid_mode
和enforce_gtid_consistency
。编辑 MySQL 的配置文件/etc/my.cnf:inigtid_mode = ON enforce_gtid_consistency = ON
-
重启 MySQL 服务以应用这些更改。
systemctl restart mysqld
2.2 配置 ClickHouse
2.2.1 基本配置
-
登录到 ClickHouse。这边使用的是默认用户和密码:
sqlclickhouse-client --host 192.168.197.128 --user default --password AAAaaa
-
启用
MaterializedMySQL
引擎。在 ClickHouse 客户端中,执行以下命令:sqlSET allow_experimental_database_materialized_mysql = 1;
2.2.2 同步整个库
-
在 ClickHouse 中创建一个新的数据库,使用
MaterializedMySQL
引擎连接到 MySQLtest
数据库(需提前创建好,而且表中必须要有主键,没有主键无法同步)。需要写上 MySQL 服务器的地址、数据库名称、用户和密码:sqlCREATE DATABASE mysql_test ENGINE = MaterializedMySQL('192.168.197.128:3306', 'test', '数据库用户', '数据库密码');
这将创建一个名为
mysql_test
的新数据库,它将映射到 MySQLtest
数据库。可以是同名。
2.2.3 同步库中的部分表
-
创建一个新的
MaterializedMySQL
数据库,但在创建时使用TABLE OVERRIDE
语句来指定只同步aaa
和bbb
表sqlCREATE DATABASE mysql_db ENGINE = MaterializedMySQL('192.168.197.128:3306', '数据库', '账号', '密码') SETTINGS materialized_mysql_tables_list = 'aaa,bbb';
2.3 验证同步
-
使用 ClickHouse 客户端检查是否成功同步了数据。可以列出所有同步的表:
sqluse mysql_db SHOW TABLES FROM mysql_db;
-
进行一些查询以确保数据同步正常:
sqlSELECT * FROM mysql_test.表名;