本文介绍如何通过mysqlsct工具来测试PolarDB MySQL版的全局一致性(高性能模式)功能。
测试工具
开源的mysqlsct工具可用于检验数据库集群的全局一致性(高性能模式)能力,该工具通过跨Session的写入、读取和结果对比的方式来测试数据库全局一致性(高性能模式)功能和性能。
测试环境
测试的ECS和PolarDB MySQL版均在同一地域、同一可用区。
网络类型均为VPC网络。
说明ECS实例和PolarDB MySQL版需保证在同一个VPC中。
测试用的PolarDB MySQL版如下:
节点规格为polar.mysql.x8.4xlarge(8核32 GB独享规格)。
两节点集群(一主一只读)。
使用的连接串为集群地址,如何查看PolarDB MySQL版地址请参见管理连接地址。
测试用的ECS实例信息如下:
实例规格为ecs.g7.2xlarge。
实例所使用的镜像为CentOS 7.9 64位。
安装mysqlsct
本文档中的命令只能由root权限的用户来执行。
在ECS中执行如下命令安装mysqlsct的编译依赖工具。
yum install gcc gcc-c++ cmake3 mariadb-devel.x86_64 -y
安装git。
yum install git -y
下载mysqlsct工具代码。
git clone https://github.com/sunashe/mysqlsct.git
编译mysqlsct工具。
cd mysqlsct cmake3 . make
编译完成后会在当前目录下生成可执行的二进制文件
mysqlsct
。如下:ll 总用量 176 -rw-r--r-- 1 user user 13821 9月 14 09:57 CMakeCache.txt drwxr-xr-x 5 user user 4096 9月 14 09:57 CMakeFiles -rw-r--r-- 1 user user 1488 9月 14 09:57 cmake_install.cmake -rw-r--r-- 1 user user 300 9月 14 09:56 CMakeLists.txt -rw-r--r-- 1 user user 34523 9月 14 09:56 LICENSE -rw-r--r-- 1 user user 5170 9月 14 09:57 Makefile -rwxr-xr-x 1 user user 78232 9月 14 09:57 mysqlsct #可执行的二进制文件mysqlsct -rw-r--r-- 1 user user 18138 9月 14 09:56 mysqlsct.cc -rw-r--r-- 1 user user 2456 9月 14 09:56 README.md
测试方法
设置PolarDB MySQL版集群地址的一致性级别。具体操作请参见配置数据库代理。
对于全局一致性(高性能模式),需要先在控制台上将集群地址的一致性级别设置为最终一致性(弱),然后再开启全局一致性(高性能模式)。
在ECS上的
mysqlsct
目录下,执行如下命令来进行一致性测试。./mysqlsct --host-rw=pc-**********.rwlb.rds.aliyuncs.com //测试环境中PolarDB MySQL版的集群地址。host-rw与host-ro的集群地址相同。 --host-ro=pc-**********.rwlb.rds.aliyuncs.com //测试环境中PolarDB MySQL版的集群地址。host-ro与host-rw的集群地址相同。 --port-rw=3306 //测试环境中PolarDB MySQL版的集群地址端口 --port-ro=3306 //测试环境中PolarDB MySQL版的集群地址端口 --user=****** //PolarDB MySQL版的集群测试账号 --password=****** //PolarDB MySQL版的集群测试密码 --iterations=1000000 //测试总次数(一次update+一次select为一次测试) --table-cnt=100 //测试表数量 --table-size=1000 //测试表行数 --concurrency=100 //测试并发线程数 --database=sct //测试数据库 --sc-gap-us=0 //update和select之间的休眠时间, 0表示update后立刻发起查询 --report-interval=5 //打印日志间隔 --detail-log=0 //不输出详细错误日志
测试结果
最终一致性测试结果
从上图中的最终一致性测试结果可以看出,最终一致性并不能保证写后读的数据一致性。
会话一致性测试结果
从上图中的会话一致性测试结果可以看出,会话一致性并不能保证跨Session的强一致性。
全局一致性测试结果
从上图中的全局一致性测试结果可以看出,全局一致性可以保证跨Session的强一致性。
全局一致性(高性能模式)测试结果
从上图中的全局一致性(高性能模式)测试结果可以看出,全局一致性(高性能模式)可以保证跨Session的强一致性。