# 1. 安装PolarDB-X

docker run -d --name some-polardb-x -p 8527:8527 polardbx/polardb-x:2.1.0
1

# 2. 登录PolarDB-X数据库

本步骤将指导您如何登录PolarDB-X数据库。

PolarDB-X支持通过MySQL Client命令行、第三方客户端以及符合MySQL交互协议的第三方程序代码进行连接。本实验场景主要介绍如何通过MySQL Client命令行连接到PolarDB-X数据库。

# 2.1 安装MySQL

yum install mysql -y
1

# 2.2 执行如下命令,查看MySQL版本号。

mysql -V
1

返回结果如下,表示您已成功安装MySQL。

img

执行如下命令,登录PolarDB-X数据库。

说明:

  • 本实验场景中的PolarDB-X数据库用户名和密码已预设,请您使用下方命令登录即可。
  • 如遇到mysql: [Warning] Using a password on the command line interface can be insecure.ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0报错,请您稍等一分钟,重新执行登录命令即可。
mysql -h127.0.0.1 -P8527 -upolardbx_root -p123456
1

返回结果如下,表示您已成功登录PolarDB-X数据库。

img

输入exit退出数据库。

img

# 3. 搭建实时分析系统

本步骤将指导您如何使用PolarDB-X+Canal+ClickHouse搭建实时分析系统。

# 3.1 部署Canal

Canal是一款流行的MySQL Binlog增量订阅工具,详情请参见Canal说明文档 (opens new window)。Canal提供了Docker镜像,详情请参见Canal Docker镜像文档 (opens new window)

# 3.1.1 执行如下命令,下载脚本

wget https://raw.githubusercontent.com/alibaba/canal/master/docker/run.sh
1

# 3.1.2 运行服务

执行如下命令,构建一个destination name为test的队列。

**注意 :**您需要将none_loopback_host_ip修改为云产品资源列表中的ECS的弹性IP,请勿使用localhost或127.0.0.1。

sh run.sh -e canal.auto.scan=false \
-e canal.destinations=test \
-e canal.instance.master.address=none_loopback_host_ip:8527 \
-e canal.instance.dbUsername=polardbx_root \
-e canal.instance.dbPassword=123456 \
-e canal.instance.connectionCharset=UTF-8 \
-e canal.instance.tsdb.enable=true \
-e canal.instance.gtidon=false
1
2
3
4
5
6
7
8

# 3.2 部署ClickHouse

ClickHouse是一款分析系统,详情请参见ClickHouse官方文档 (opens new window)。ClickHouse提供了Docker镜像,详情请参见ClickHouseDocker镜像文档 (opens new window)

执行如下命令,部署ClickHouse。

docker run -d --name some-clickhouse-server --ulimit nofile=262144:262144 -p 8123:8123 yandex/clickhouse-server
1

# 3.3 测试

# 3.3.1 登录PolarDB-X数据库

mysql -h127.0.0.1 -P8527 -upolardbx_root -p123456
1

# 3.3.2 创建testdb库

CREATE DATABASE testdb;
USE testdb;
1
2

# 3.3.3 创建test表。

CREATE TABLE test(
id INT(11) AUTO_INCREMENT PRIMARY KEY,
name CHAR(20) not null );
1
2
3

# 3.3.4 登录ClickHouse数据库

docker run -it --rm --link some-clickhouse-server:clickhouse-server yandex/clickhouse-client --host clickhouse-server
1

# 3.3.5 创建数据库testdb

CREATE DATABASE testdb;
USE testdb;
1
2

# 3.3.6 创建test表

Create Table test(id INT(32),name CHAR(20)) Engine = MergeTree() Order By id;
1

# 3.3.7 运行Canal Client消费并投递增量

经过以上步骤,您已经准备好了PolarDB-X、Canal Server和ClickHouse三个容器,并且在源端(PolarDB-X)和目标端(ClickHouse)建好了测试用的数据库和表。接下来我们通过Canal Client消费Canal Server获取的增量数据,并将源端DML中的Insert事件投递到ClickHouse中。

执行如下命令,使用yum安装JDK 1.8。

yum -y install java-1.8.0-openjdk*
1

执行如下命令,下载polardb-x-to-clickhouse-canal-client.jar投递代码文件。

wget https://labfileapp.oss-cn-hangzhou.aliyuncs.com/polardb-x-to-clickhouse-canal-client.jar
1

执行如下命令,运行polardb-x-to-clickhouse-canal-client.jar代码文件。

java -jar polardb-x-to-clickhouse-canal-client.jar
1

**注意:**请勿中断投递代码文件,否则会造成投递失败。

投递链路已成功打通,接下来您可以在源端(PolarDB-X)执行INSERT语句,并观察目标端(ClickHouse)中的数据变化。

执行如下SQL语句,插入一条数据。

INSERT INTO test(name) values("polardb-x"), ("is"), ("awsome");
1

执行如下命令,登录ClickHouse数据库。

docker run -it --rm --link some-clickhouse-server:clickhouse-server yandex/clickhouse-client --host clickhouse-server
1

执行如下SQL语句,使用数据库testdb。

USE testdb;
1

执行如下SQL语句,查询test表

SELECT * FROM test;
1

返回结果如下,您可以看到目标端(ClickHouse)接收到投递过来的数据。

img

# 来源