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