实践教程之将PolarDB-X与大数据等系统互通

简介: PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。

本期实验将指导您使用PolarDB-X+Canal+ClickHouse搭建实时分析系统。


本期免费实验地址:

如何将 PolarDB-X 与大数据等系统互通

本期教学视频地址:

PolarDB-X 动手实践系列第三讲——如何将 PolarDB-X 与大数据等系统互通

1. 前置准备

假设已经根据前一讲内容完成了PolarDB-X的搭建部署,可以成功链接上PolarDB-X数据库。

实践教程之如何快速安装部署PolarDB-X

2. 部署Canal

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


(1) 执行如下命令,下载脚本。

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


(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

3. 部署ClickHouse

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


执行如下命令,部署ClickHouse。

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

4. 在PolarDB-X和ClickHouse中创建测试库和表

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

mysql -h127.0.0.1 -P8527 -upolardbx_root -p123456


(2) 执行如下SQL语句,创建数据库testdb。

CREATE DATABASE testdb;


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

USE testdb;


(4) 执行如下SQL语句,创建test表。

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


(5) 输入exit退出数据库。

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

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


(7) 执行如下SQL语句,创建数据库testdb。

CREATE DATABASE testdb;


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

USE testdb;


(9) 执行如下SQL语句,创建test表。

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


(10) 输入exit退出数据库。

5. 运行Canal Client消费并投递增量变更

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


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

yum -y install java-1.8.0-openjdk*


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

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


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

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

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


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

在实验页面,单击右上角的

图标,创建新的终端窗口。


(5) 在新的终端窗口中,执行如下命令,登录PolarDB-X数据库。

mysql -h127.0.0.1 -P8527 -upolardbx_root -p123456


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

USE testdb;


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

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


(8) 输入exit退出数据库。


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

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


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

USE testdb;


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

SELECT * FROM test;

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

6. 了解更多

作者介绍
目录