Group Replication测试报告
来源:互联网 发布:section软件最新版 编辑:程序博客网 时间:2024/06/09 17:57
Group Replication测试报告
1 组网环境
局域网4台redhat
ip:192.168.1.181,192.168.1.182,192.168.1.211,192.168.1.212
其中181,182,是一台服务器虚拟出来的
211,212是另外一台服务器虚拟出来的
2个服务器通过网线连接
181,182硬件信息:
CPU(s)~2 Dual core Intel Xeon E5-2620 v4s(-HT-SMP-) speed~2096 MHz (max) Kernel~3.10.0-514.el7.x86_64 x86_64
Mem~486.1/5807.1MB
HDD~268.4GB(4.0% used)
211.212硬件信息:
CPU~Dual core Intel Xeon E5-2603 v3(-HT-MCP-) speed~1596 MHz (max) Kernel~3.10.0-327.el7.x86_64 x86_64
Mem~404.0/7823.7MB
HDD~107.4GB(9.7% used)
数据库版本mysql 5.7.19
测试软件使用sysbench1.0.6
安装yum -yinstall sysbench
2 集群初始化
当前在试验环境中采用4台 mysql5.7.19 数据库组成 MGR 如下图所示:
初始化mgr
3 测试项目
3.1测试mgr单点写入
测试目的:单点写入,查看其它节点数据是否实时同步成功
试验步骤:
3.1.1 创库同步试验
登录181
ssh root@192.168.1.181
写入数据
mysql -uroot –p
create database test;
查看
show databases;
结论:单节点创建库,集群其它节点可以实时同步该库
3.1.2 建表同步
登录181
use test
create table t1 (id int);
insert into t1 value (1);
错误警示:测试证明集群创建的表必须有主键才可以插入数据
drop table t1;
create table t1 (id int primary key);
insert into t1 value (1);
select * from t1;
测试结论:
通过上述操作,集群可以正常同步创建的表,正常同步某节点发起删除的表,以及表内所有数据。
3.1.3测试读写性能
3.1.3.1 对单机mysql压力测试(相对于集群参考值)
登录182
ssh root@192.168.1.182
将182 设置成单机版mysql不开启binlog
连接mysql
mysql -uroot -p
创建测试库
create database test;
1 单台纯写测试
sysbench --test=/usr/share/sysbench/oltp_write_only.lua--mysql-host=192.168.1.182 --mysql-port=3306--mysql-user=root --mysql-password=root --mysql-db=test --report-interval=5--time=100 --threads=130 --tables=1 --table-size=50000 --db-driver=mysql prepare
sysbench --test=/usr/share/sysbench/oltp_write_only.lua--mysql-host=192.168.1.182 --mysql-port=3306--mysql-user=root --mysql-password=root --mysql-db=test --report-interval=5--time=100 --threads=130 --tables=1 --table-size=50000 --db-driver=mysql run
测试报告
transactions:(事物提交) 295078 (2949.67 persec.)
queries: (查询) 1787027 (17863.54per sec.)
2 单台纯读测试
sysbench --test=/usr/share/sysbench/oltp_read_only.lua--mysql-host=192.168.1.182 --mysql-port=3306--mysql-user=root --mysql-password=root --mysql-db=test --report-interval=5--time=100 --threads=130 --tables=1 --table-size=50000 --db-driver=mysql run
报告如下
transactions: 201933 (2018.29 persec.)
queries: 3230928 (32292.65 persec.)
3 单台读写混合测试
sysbench --test=/usr/share/sysbench/oltp_read_write.lua--mysql-host=192.168.1.182 --mysql-port=3306--mysql-user=root --mysql-password=root --mysql-db=test --report-interval=5--time=100 --threads=130 --tables=1 --table-size=50000 --db-driver=mysql run
报告如下
transactions: 121994 (1219.35 persec.)
queries: 2487937 (24867.34 persec.)
4单台mysql启动binlog后测试
纯写
transactions: 33008 (325.67 per sec.)
queries: 207706 (2049.33per sec.)
纯读
transactions: 200440 (2003.56 persec.)
queries: 3207040 (32056.96per sec.)
读写
transactions: 37180 (368.63 per sec.)
queries: 822870 (8158.45per sec.)
结论:由于开启binlog使得写入性能有所下降,读取性能浮动不大,影响因素主要是硬盘写入速度,本硬盘测试为40.7 MB/秒
3.2对MGR集群压力测试
3.2.1 集群状态查看
登录181
ssh root@192.168.1.181
连接mysql
mysql -uroot -p
创建测试库
create database test;
此时4台机器同时在线
SELECT * FROMperformance_schema.replication_group_members;
3.2.2纯写测试
sysbench --test=/usr/share/sysbench/oltp_write_only.lua--mysql-host=192.168.1.181 --mysql-port=3306--mysql-user=root --mysql-password=root --mysql-db=test --report-interval=5--time=100 --threads=130 --tables=1 --table-size=50000 --db-driver=mysql prepare
sysbench --test=/usr/share/sysbench/oltp_write_only.lua--mysql-host=192.168.1.181 --mysql-port=3306--mysql-user=root --mysql-password=root --mysql-db=test --report-interval=5--time=100 --threads=130 --tables=1 --table-size=50000 --db-driver=mysql run
报告如下
transactions: 14941 (146.52 per sec.)
queries: 96092 (942.31 per sec.)
3.2.3纯读测试
sysbench --test=/usr/share/sysbench/oltp_read_only.lua--mysql-host=192.168.1.181 --mysql-port=3306--mysql-user=root --mysql-password=root --mysql-db=test --report-interval=5--time=100 --threads=130 --tables=1 --table-size=50000 --db-driver=mysql run
报告如下
transactions: 206963 (2068.62 persec.)
queries: 3311408 (33097.92 persec.)
3.2.4 读写测试
sysbench --test=/usr/share/sysbench/oltp_read_write.lua--mysql-host=192.168.1.181 --mysql-port=3306--mysql-user=root --mysql-password=root --mysql-db=test --report-interval=5--time=100 --threads=130 --tables=1 --table-size=50000 --db-driver=mysql run
报告如下
transactions: 18654 (181.73 per sec.)
queries: 412869 (4022.24per sec.)
压力测试后发现同机器虚拟出来的182产生大量延迟,同一个服务器上binlog日志的写入读取造成io阻塞,从而产生延迟
我们将182剔除mgr集群
重新测试
stop group_replication;
纯写测试
transactions: 36277 (360.42 per sec.)
queries: 228208 (2267.30per sec.)
读
transactions: 202432 (2023.43 persec.)
queries: 3238912 (32374.89per sec.)
读写
transactions: 33293 (330.87 per sec.)
queries: 739513 (7349.46per sec.)
3.3故障节点恢复并入运行集群测试
此时181,211,212正常运行并有数据产生,182当前属于故障节点(之前已剔除)
此时,182此时落后,并且不能自动加入集群
手动处理方法:
stop group_replication;
reset master;
SET @@GLOBAL.GTID_PURGED='aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:1-12:1000005-1103191';
start group_replication;
此时可以顺利并入mgr集群
SELECT * FROMperformance_schema.replication_group_members;
结论:测试证明出现节点错误无法并入集群,需要手动处理
MGR才会正常运行
3.4测试mgr断线后重连
试验环境内,手动断开网线,此时 集群状态如下,其中 211,212状态显示无法连接
登录181
use test;
建表
create table t1 (id int primary key);
提示错误如下
“成员组中的多数成员失去了联系。在网络恢复之前,事务将阻塞。作为group_replication_unreachable_majority_timeout价值0的插件将无限期地等待网络得到恢复。”
官网描述此问题:
对等集群网络掉线,如果没有配置group_replication_unreachable_majority_timeout
会等待对方恢复网络,并阻塞写入数据,如果配置了则会进入只读状态
不对等集群5台掉了2台,此时多数的机器群为可写入,少数机器群的状态为只读
配置group_replication_unreachable_majority_timeout重新测试
测试结果显示
ERROR 1290 (HY000): The MySQL server isrunning with the --super-read-only option so it cannot execute this statement
结果是4台机器直接进入只读error状态所以实际应用不需要要配置这个参数
结论:测试证明结果MGR需要主机房机器数量大于备机房
3.5测试单点断线后重连
登录211
断开网络连接
service network stop
此时集群显示只有3台,211已经被剔除
从181上建立数据库建表插入数据
create database test;
use test;
create table t1(id int primary key)
insert into t1 value(1);
182,212上可以看到数据
select * from test.t1;
然后恢复211连接
servicenetwork start
登录mysql
mysql-uroot -p
此时状态error
手动恢复mgr
stopgroup_replication;
startgroup_replication;
查看数据
结论:测试证明网络断开的情况下需要手动输入命令启动MGR数据会自动恢复
3.6测试mgr节点宕机后重启
1主节点宕机
登录181
关闭mysql
service mysqld stop
其他节点继续插入数据
insert ti value (2);
重启mysql
service mysqld start
由于配置自动启动mgr参数
loose-group_replication_start_on_boot=on
所以在mysql启动的时候mgr会自动恢复数据
2 备节点宕机
登录211
service mysqld stop
其他节点继续插入数据
insert ti value (2);
恢复mgr
service mysqld start
结论:测试证明单节点宕机情况下数据可以自动恢复
3.7测试表结构发生变化,增加表,删除表
登录181
我们直接导入其他服务器ims数据表跟数据
创建数据库
mysql>create database sx_ims;
使用工具导入
mysqldump sx_ims -uroot -proot -h192.168.1.183--set-gtid-purged=OFF --add-drop-table | mysql sx_ims -u root -proot
可以看到节点都同步了ims数据库
增加索引
mysql> altertable taxpayer_base_info add index(taxpayer_code);
在其他节点可以查看到表结构同步
删除表
mysql> drop table taxpayer_base_info;
在其他节点可以查看到表删除同步
增加表
mysql> create table taxpayer_base_info ( id int primary key) ;
在其他节点可以查看到表增加同步
结论:测试证明MGR可以表同步数据同步
3.8测试大数据量恢复
登录211
service mysqld stop
登录181
使用sysbench插入大量测试数据
sysbench --test=/usr/share/sysbench/oltp_write_only.lua--mysql-host=192.168.1.181 --mysql-port=3306--mysql-user=root --mysql-password=root --mysql-db=test --report-interval=5 --time=400--threads=130 --tables=1 --table-size=50000 --db-driver=mysql run
重启mysql
service mysqld start
结论:测试证明MGR可以完成自动回写任务
3.9主机房断网,备机房切换
现在测试环境加入1台模拟真实环境,备机房181,182主机房211,212,213
断开网线,此时主机房211,212,213可以继续写入办理正常业务
3.9.1正常网络断开
登录211
新建数据库新建表插入数据删除数据删除表
create database test;
use test;
create table t2 (id int primary key);
insert into t2 value (1);
select * from t2;
delete from t2;
drop table t2;
drop database test;
可以看到212,213能够正常同步数据
接通网络,可以看到181,182状态错误
此时手动恢复
stop group_replication;
start group_replication;
可以看到数据正常同步过来
结论:正常业务在主机房进行的时候与备机房断开连接,只需要在网络恢复的时候将备机房机器并入集群即可
- Group Replication测试报告
- Group Replication测试报告(2)
- MySQL Group Replication初测
- MySQL Group Replication 介绍
- MySQL Group Replication实践
- MySQL Group Replication 介绍
- MySQL Group Replication简介
- MySQL Group Replication 介绍
- Mysql Group Replication
- Group Replication的原理
- MySQL Group Replication 介绍
- MySQL Group Replication增加节点
- MySQL Group Replication 正式发布
- MySQL Group Replication 技术点
- mysql group replication集群搭建
- MySQL Group Replication调研剖析
- MySQL Group Replication调研剖析
- MySQL Group Replication调研剖析
- 【知识整理】安卓(Android)应用上传360应用市场步骤详解
- 爬虫学习01 响应状态码 status code
- java两个时间段之间取每个年月
- Unknown default host [localhost] for connector [Connector[HTTP/1.1-8080]]
- 关于json格式存储数据库成bean对象list,取出来再次转换成json格式
- Group Replication测试报告
- MAC应用无法打开或文件损坏处理方法
- tcp简介
- 薪水支付案例(5)
- [BZOJ1632][Usaco2007 Feb]Lilypad Pond(spfa)
- Python笔记8——数据封装和访问限制
- 利用随机森林和梯度替身决策树对titanic数据进行分类,并对结果进行分析
- CHAPTER 9 -Up and Running with TensorFlow part2
- web学习之异常