PolarDB-X 為了方便用戶體驗,提供了免費的實驗環境,您可以在實驗環境里體驗 PolarDB-X 的安裝部署和各種內核特性。除了免費的實驗,PolarDB-X 也提供免費的視頻課程,手把手教你玩轉 PolarDB-X 分布式數據庫。
本期實驗將指導您使用 PolarDB-X 與Flink搭建實時數據大屏。
本期免費實驗地址
本期教學視頻地址
前置準備
假設已經根據前一講內容完成了PolarDB-X的搭建部署,可以成功鏈接上PolarDB-X數據庫。
在PolarDB-X中準備訂單表
PolarDB-X支持通過MySQL Client命令行、第三方客戶端以及符合MySQL交互協議的第三方程序代碼進行連接。本實驗使用MySQL Client命令行連接到PolarDB-X數據庫。
本步驟將指導您如何連接PolarDB-X數據庫,并創建測試庫、測試表和測試數據。
1.執行如下命令,安裝MySQL。
yum install mysql -y
2.執行如下命令,查看MySQL版本號。
mysql -V
返回結果如下,表示您已成功安裝MySQL。

3.執行如下命令,登錄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數據庫。

4.執行如下SQL語句,創建測試庫mydb。
create database mydb;
5.執行如下SQL語句,使用測試庫mydb。
use mydb;
6.執行如下SQL語句,創建訂單表orders。
CREATE TABLE `orders` ( `order_id` int(11) NOT NULL AUTO_INCREMENT, `order_date` datetime NOT NULL, `customer_name` varchar(255) NOT NULL, `price` decimal(10, 5) NOT NULL, `product_id` int(11) NOT NULL, `order_status` tinyint(1) NOT NULL, PRIMARY KEY (`order_id`) )AUTO_INCREMENT = 10001;
7.執行如下SQL語句,給訂單表orders中插入數據。
INSERT INTO orders VALUES (default, '2020-07-30 10:08:22', 'Jark', 50.50, 102, false), (default, '2020-07-30 10:11:09', 'Sally', 15.00, 105, false), (default, '2020-07-30 12:00:30', 'Edward', 25.25, 106, false);
8.輸入exit退出數據庫。

運行Flink
本步驟將指導您如何下載并運行Flink。
1.安裝JDK。
a.執行如下命令,使用yum安裝JDK 1.8。
yum -y install java-1.8.0-openjdk*
b.執行如下命令,查看是否安裝成功。
java -version
返回結果如下,表示您已成功安裝JDK 1.8。

2.下載Flink和Flink CDC MySQL Connector。
a.執行如下命令,下載Flink。
wget https://labfileapp.oss-cn-hangzhou.aliyuncs.com/PolarDB-X/flink-1.13.6-bin-scala_2.11.tgz
b.執行如下命令,解壓Flink。
tar xzvf flink-1.13.6-bin-scala_2.11.tgz
c.執行如下命令,進入lib目錄。
cd flink-1.13.6/lib/
d.執行如下命令,下載flink-sql-connector-mysql-cdc。
wget https://labfileapp.oss-cn-hangzhou.aliyuncs.com/PolarDB-X/flink-sql-connector-mysql-cdc-2.2.1.jar
e.執行如下命令,返回Flink目錄。
cd ..
3.啟動Flink。
a.執行如下命令,啟動Flink。
./bin/start-cluster.sh
b.執行如下命令,連接Flink。
./bin/sql-client.sh
4.在Flink中創建與PolarDB-X關聯的訂單表orders。
a.執行如下SQL語句,創建訂單表orders。
CREATE TABLE orders ( order_id INT, order_date TIMESTAMP(0), customer_name STRING, price DECIMAL(10, 5), product_id INT, order_status BOOLEAN, PRIMARY KEY (order_id) NOT ENFORCED ) WITH ( 'connector' = 'mysql-cdc', 'hostname' = 'localhost', 'port' = '8527', 'username' = 'polardbx_root', 'password' = '123456', 'database-name' = 'mydb', 'table-name' = 'orders' );
b.執行如下SQL語句,查看訂單表orders。
select * from orders;
返回結果如下,您可以查看到PolarDB-X的訂單表orders的數據已經同步到Flink的訂單表orders中。

c.按q鍵退出。
啟動壓測腳本并實時獲取GMV
經過前面幾步操作后,我們在PolarDB-X中準備好了原始訂單表,在Flink中準備好了對應的訂單表,并通過 PolarDB-X Global Binlog與Flink CDC MySQL Connector打通了兩者之間的實時同步鏈路。 本步驟將指導您如何創建壓測腳本,模擬雙十一零點大量訂單涌入的場景。
1.準備壓測腳本。
a.在實驗頁面,單擊右上角的+圖標,創建新的終端二。

b.執行如下命令,創建配置文件mysql-config.cnf。
vim mysql-config.cnf
c.將如下代碼添加到配置文件mysql-config.cnf中。
[client] user = "polardbx_root" password = "123456" host = 127.0.0.1 port = 8527
d.添加完成后的文件內容如下所示。按下Esc鍵后,輸入:wq后按下Enter鍵保存并退出。
e.執行如下命令,創建腳本buy.sh。
vim buy.sh
f.將如下代碼添加到腳本buy.sh中。
#!/bin/bash echo "start buying..." count=0 while : do mysql --defaults-extra-file=./mysql-config.cnf -Dmydb -e "insert into orders values(default, now(), 'free6om', 1024, 102, 0)" let count++ if ! (( count % 10 )); then let "batch = count/10" echo $batch": got 10 products, gave 1024¥" fi sleep 0.05 done
g.添加完成后的文件內容如下所示。按下Esc鍵后,輸入:wq后按下Enter鍵保存并退出。
h.執行如下命令,為腳本buy.sh增加執行權限。
chmod +x buy.sh
2.啟動Flink實時計算。
本實驗場景通過Flink SQL實時呈現GMV計算結果。
切換至終端一,在Flink中執行如下SQL語句,查詢GMV(gmv列)和訂單數(orders列)。
select 1, sum(price) as gmv, count(order_id) as orders from orders;
返回結果如下,您可在Flink的實時計算結果中查看到實時的GMV(gmv列)和訂單數(orders列)。

3.啟動壓測腳本。
a.切換至終端二,執行如下命令,啟動壓測腳本,開始創建訂單。
./buy.sh
返回結果如下,您可看到壓測腳本啟動后,不斷有訂單被創建出來。

b.切換至終端一,在Flink的實時計算結果中,可查看到實時的GMV(gmv列)和訂單數(orders列)。

原文鏈接
本文為阿里云原創內容,未經允許不得轉載。
客服熱線:











