雁过留声 发表于 2022-8-20 06:27:51

阿里云体验有奖:如何将 PolarDB-X 与大数据等系统互通

体验简介

场景将提供一台配置了CentOS 8.5操作系统的ECS实例(云服务器)。通过本教程的操作带您体验如何将PolarDB-X通过Canal与ClickHouse进行互通,搭建一个实时分析系统。点击前往
https://oscimg.oschina.net/oscnet/up-ae9e45c2030bc818ca6e2c26ad66cc1a9fd.jpg
实验准备

1. 创建实验资源
开始实验之前,您需要先创建ECS实例资源。

[*]在实验室页面,单击创建资源。
[*](可选)在实验室页面左侧导航栏中,单击云产品资源列表,可查看本次实验资源相关信息(例如IP地址、用户信息等)。
说明 :资源创建过程需要1~3分钟。
2. 安装PolarDB-X
本步骤将指导您如何安装PolarDB-X。

[*]安装并启动Docekr。
(1) 执行如下命令,安装Docker。
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun(2) 执行如下命令,启动Docker。
systemctl start docker
[*]执行如下命令,安装PolarDB-X。
docker run -d --name some-polardb-x -p 8527:8527 polardbx/polardb-x:2.1.03. 登录PolarDB-X数据库
本步骤将指导您如何登录PolarDB-X数据库。
PolarDB-X支持通过MySQL Client命令行、第三方客户端以及符合MySQL交互协议的第三方程序代码进行连接。本实验场景主要介绍如何通过MySQL Client命令行连接到PolarDB-X数据库。

[*]执行如下命令,安装MySQL。
yum install mysql -y
[*]执行如下命令,查看MySQL版本号。
mysql -V返回结果如下,表示您已成功安装MySQL。
https://oscimg.oschina.net/oscnet/up-f7f27b4edd3976106da2a78d916ed9ac417.png

[*]执行如下命令,登录PolarDB-X数据库。
说明:

[*]本实验场景中的PolarDB-X数据库用户名和密码已预设,请您使用下方命令登录即可。
[*]如遇到mysql: 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返回结果如下,表示您已成功登录PolarDB-X数据库。
https://oscimg.oschina.net/oscnet/up-e63b927d1acc67b695d6f55b2cfc6bddee3.png

[*]输入exit退出数据库。
https://oscimg.oschina.net/oscnet/up-ffbd9f207bd97161be8cf4800a66e2972af.png
4. 搭建实时分析系统
本步骤将指导您如何使用PolarDB-X+Canal+ClickHouse搭建实时分析系统。

[*]部署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
[*]部署ClickHouse。
ClickHouse是一款分析系统,详情请参见ClickHouse官方文档。ClickHouse提供了Docker镜像,详情请参见ClickHouseDocker镜像文档。
执行如下命令,部署ClickHouse。
docker run -d --name some-clickhouse-server --ulimit nofile=262144:262144 -p 8123:8123 yandex/clickhouse-server
[*]在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退出数据库。
https://oscimg.oschina.net/oscnet/up-8229ae5125d6f1e983521185ac1f69c8c20.png
(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退出数据库。

[*]运行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)中的数据变化。
在实验页面,单击右上角的https://oscimg.oschina.net/oscnet/up-bdb6278beff58068d7ac390be2bf7ff5aeb.png图标,创建新的终端窗口。
https://oscimg.oschina.net/oscnet/up-18f49a82a581ec65c9489be6cbcb9b19040.png
(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)接收到投递过来的数据。
https://oscimg.oschina.net/oscnet/up-f482428699bbd6ebc140bbcefe6d54d3c9c.png
5. 了解更多

[*]如果您想了解更多有关PolarDB-X分布式事务实现原理,详情请参见PolarDB-X分布式事务实现原理(一)。
[*]如果您想了解更多有关PolarDB-X全局Binlog解读,详情请参见PolarDB-X全局Binlog解读。
[*]如果您想了解更多有关PolarDB-X全局Binlog解读之DDL,详情请参见PolarDB-X全局 Binlog解读之DDL。
恭喜完成

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 阿里云体验有奖:如何将 PolarDB-X 与大数据等系统互通