體驗簡介 場景將提供一臺配置了CentOS 8.5操作系統的ECS實例(雲伺服器)。通過本教程的操作帶您體驗如何將PolarDB-X通過Canal與ClickHouse進行互通,搭建一個實時分析系統。點擊前往 實驗準備 1. 創建實驗資源 開始實驗之前,您需要先創建ECS實例資源。 在實驗室頁面,單 ...
體驗簡介
場景將提供一臺配置了CentOS 8.5操作系統的ECS實例(雲伺服器)。通過本教程的操作帶您體驗如何將PolarDB-X通過Canal與ClickHouse進行互通,搭建一個實時分析系統。點擊前往
實驗準備
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.0
3. 登錄PolarDB-X資料庫
本步驟將指導您如何登錄PolarDB-X資料庫。
PolarDB-X支持通過MySQL Client命令行、第三方客戶端以及符合MySQL交互協議的第三方程式代碼進行連接。本實驗場景主要介紹如何通過MySQL Client命令行連接到PolarDB-X資料庫。
- 執行如下命令,安裝MySQL。
yum install mysql -y
- 執行如下命令,查看MySQL版本號。
mysql -V
返回結果如下,表示您已成功安裝MySQL。
- 執行如下命令,登錄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
返回結果如下,表示您已成功登錄PolarDB-X資料庫。
- 輸入exit退出資料庫。
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退出資料庫。
(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)中的數據變化。
在實驗頁面,單擊右上角的圖標,創建新的終端視窗。
(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)接收到投遞過來的數據。
5. 瞭解更多
-
如果您想瞭解更多有關PolarDB-X分散式事務實現原理,詳情請參見PolarDB-X分散式事務實現原理(一)。
-
如果您想瞭解更多有關PolarDB-X全局Binlog解讀,詳情請參見PolarDB-X全局Binlog解讀。
-
如果您想瞭解更多有關PolarDB-X全局Binlog解讀之DDL,詳情請參見PolarDB-X全局 Binlog解讀之DDL。
恭喜完成