应对智慧医保复杂的业务结算
1. 在ECS实例上安装相关软件
在ECS实例上安装相关软件本案例以8 vCPU 16 GiB规格的ECS实例为例。
登录ECS。,选择实例,点击开通的实例ID名称。ECS控制台1)登录。远程连接2)单击。立即登录方式,单击Workbench远程连接3)可选择
在ECS上执行如下命令,安装压测工具SysBench。1)执行如下命令下载SysBench。
yum install gcc gcc-c++ autoconf automake make libtool bzr mysql-devel git mysql git clone https://github.com/akopytov/sysbench.git
cd sysbench
git checkout 1.0.18
./autogen.sh
./configure --prefix=/usr --mandir=/usr/share/man make make install
执行如下命令配置SysBench Client,使内核可以使用所有的CPU处理数据包(默认设置为使用2个CPU),同时减少CPU之间的上下文切换。
sudo sh -c 'for x in /sys/class/net/eth0/queues/rx-*; do echo ff>$x/rps_cpus; done' sudo sh -c 'echo 32768 > /proc/sys/net/core/rps_sock_flow_entries' sudo sh -c 'echo 4096 > /sys/class/net/eth0/queues/rx-0/rps_flow_cnt'
2. 准备模拟数据,写入RDS MySQL
准备模拟数据,写入RDS MySQL
在ECS中,执行如下命令,准备压测数据。
,在RDS MySQL中创建一个名为dbfortest的数据库。RDS 控制台登录
sysbench --threads=8 --table-size=25000 --tables=250 --events=0 --time=60 --mysql-db=xxx --mysql-user=xxx --mysql-password=xxx --mysql-host=xxx --mysql-port=xxx oltp_read_write prepare
参数 |
说明 |
threads |
测试线程数,可设置为8、16、32、64、128、256、512等,可根据实际的实例规格和环境时延进行尝试。 您可按照示例代码中的8进行设置。 |
table_size |
要准备的表的大小,可按照示例代码中的25000进行设置。 |
tables |
要准备的表的数量,可按照示例代码中的250进行设置。 |
events |
测试请求数量,按照示例代码中的0进行设置。 |
time |
测试时间,可按照示例代码中的60进行设置。 |
mysql-db |
压测数据要注入的数据库名称,本示例中即为RDS MySQL中预先创建的dbfortest数据库。 |
mysql-user |
RDS MySQL实例账号。 |
mysql-password |
RDS MySQL实例账号对应的密码。 |
mysql-host |
RDS MySQL实例连接地址。 可进入实例的数据库连接页面获取。 |
mysql-port |
RDS MySQL实例连接端口。 可进入实例的数据库连接页面获取。 |
CREATE TABLE `sbtestN` ( `id` int(11) NOT NULL AUTO_INCREMENT, `k` int(11) NOT NULL DEFAULT '0', `c` char(120) NOT NULL DEFAULT '', `pad` char(60) NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `k_100` (`k`) ) ENGINE=InnoDB AUTO_INCREMENT=25001 DEFAULT CHARSET=utf8
3. 搭建DTS同步链路
搭建DTS同步链路
,购买DTS数据同步任务。任务配置要求如下:DTS购买页登录
商品类型:若您仅为体验,建议选择数据传输服务DTS(后付费),将根据使用时长收费。体验完成后再释放。
功能:选择数据同步。
源实例:选择MySQL。区域按照已有的RDS MySQL实例的地域选择。
目标实例:选择 AnalyticDB MySQL。区域按照已有的ADB MySQL实例的地域选择。
同步拓扑:选择单向同步。
其他按照默认选择即可,不影响本次体验。
数据同步列表,找到购买的数据同步任务,点击配置同步链路。DTS控制台购买完成后,在
选择相应的实例ID,填写账号密码后,点击授权白名单进入下一步。
选择要同步的数据库dbfortest,点击“>”,将dbfortest数据库添加至已选择对象。其余配置均可采用默认配置。
点击下一步,当定义状态为“已定义”后,点击预检查并启动。
4. 观测ADB MySQL中数据
观测ADB MySQL中数据
本步骤需要在ADB MySQL控制台中,登录对应的ADB MySQL的实例,观测其数据。
连接到ADB MySQL实例。
执行如下命令,查看实例中的数据库:
show databases;
可以看到,dbfortest数据库已经开始从RDS MySQL向ADB MySQL进行同步了。
等几分钟后(数据同步和校验需要时间),执行如下命令,查看同步结果:
use dbfortest; show tables;
可以看到250张表已经完成了同步。
5. 运行压测程序,模拟RDS MySQL流量
运行压测程序,模拟RDS MySQL流量
在ECS中,执行如下命令,运行压测程序。
sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=xxx --table_size=25000 --tables=250 --events=0 --time=60 --threads=4 --percentile=95 --report-interval=1 oltp_read_write run
涉及到的参数说明如下:
参数 |
说明 |
report-interval |
表示N秒输出一次测试进度报告,0表示关闭测试进度报告输出,仅输出最终的报告结果。 您可按照示例代码中的1进行设置。 |
threads |
测试线程数,可设置为8、16、32、64、128、256、512等,可根据实际的实例规格和环境时延进行尝试。 您可按照示例代码中的4进行设置。 |
table_size |
要准备的表的大小,可按照示例代码中的25000进行设置。 |
tables |
要准备的表的数量,可按照示例代码中的250进行设置。 |
events |
测试请求数量,按照示例代码中的0进行设置。 |
time |
测试时间,可按照示例代码中的60进行设置。 |
mysql-db |
压测数据要注入的数据库名称,本示例中即为RDS MySQL中预先创建的dbfortest数据库。 |
mysql-user |
RDS MySQL实例账号。 |
mysql-password |
RDS MySQL实例账号对应的密码。 |
mysql-host |
RDS MySQL实例连接地址。 可进入实例的数据库连接页面获取。 |
mysql-port |
RDS MySQL实例连接端口。 可进入实例的数据库连接页面获取。 |
可以看到程序已经开始运行:
6. 观察ADB MySQL的数据同步
观察ADB MySQL的数据同步
在ADB MySQL实例中执行如下命令:
show processlist;
可以看到DTS正在同步数据:
7. 校验数据一致性
等待程序运行结束后(共运行60s),随机抽查数据,校验同步的一致性。
在RDS MySQL中执行如下命令:
得到结果“064ee326182860c39e27fe239205925a”。
在ADB MySQL中执行同样的SQL:
得到结果“064ee326182860c39e27fe239205925a”。
由此可见,数据从RDS MySQL经由DTS同步到ADB MySQL后,数据是一致的。也可以更换其他表、其他条件来校验数据的一致性。
实验链接:https://developer.aliyun.com/adc/scenario/c931223493134a8e9e89711481679c2c