体验简介
场景将提供一台配置了 CentOS 8.5 操作系统的 ECS 实例(云服务器)。通过本教程的操作带您体验如何应用 PolarDB- X 与 Flink 搭建一个实时数据链路,模仿阿里巴巴双十一 GMV 大屏。
试验筹备
1. 创立试验资源
开始试验之前,您须要先创立 ECS 实例资源。
- 在实验室页面,单击 创立资源。
- (可选)在实验室页面左侧导航栏中,单击 云产品资源 列表,可查看本次试验资源相干信息(例如 IP 地址、用户信息等)。
阐明:资源创立过程须要 1~3 分钟。
2. 装置 PolarDB-X
本步骤将领导您如何装置 PolarDB-X。
-
装置并启动 Docker。
- 执行如下命令,装置 Docker。
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
- 执行如下命令,启动 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 反对通过 MySQL Client 命令行、第三方客户端以及合乎 MySQL 交互协定的第三方程序代码进行连贯。本试验应用 MySQL Client 命令行连贯到 PolarDB- X 数据库。
本步骤将领导您如何连贯 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 数据库。
- 执行如下 SQL 语句,创立测试库 mydb。
create database mydb;
- 执行如下 SQL 语句,应用测试库 mydb。
use mydb;
- 执行如下 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;
- 执行如下 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);
- 输出 exit 退出数据库。
4. 运行 Flink
本步骤将领导您如何下载并运行 Flink。
- 装置 JDK。
a. 执行如下命令,应用 yum 装置 JDK 1.8。
yum -y install java-1.8.0-openjdk*
b. 执行如下命令,查看是否装置胜利。
java -version
返回后果如下,示意您已胜利装置 JDK 1.8。
- 下载 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 ..
- 启动 Flink。
a. 执行如下命令,启动 Flink。
./bin/start-cluster.sh
b. 执行如下命令,连贯 Flink。
./bin/sql-client.sh
- 在 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 键退出。
5. 启动压测脚本并实时获取 GMV
通过后面几步操作后,咱们在 PolarDB- X 中筹备好了原始订单表,在 Flink 中筹备好了对应的订单表,并通过 PolarDB-X Global Binlog 与 Flink CDC MySQL Connector 买通了两者之间的实时同步链路。本步骤将领导您如何创立压测脚本,模仿双十一零点大量订单涌入的场景。
- 筹备压测脚本。
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
- 启动 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 列)。
- 启动压测脚本。
a. 切换至终端二,执行如下命令,启动压测脚本,开始创立订单。
./buy.sh
返回后果如下,您可看到压测脚本启动后,一直有订单被创立进去。
b. 切换至终端一,在 Flink 的实时计算结果中,可查看到实时的 GMV(gmv 列)和订单数(orders 列)。
祝贺实现