【稿件】MySQL 当前存在的三种复制模式有:异步模式、半同步模式和组复制模式。本次主要调研 MySQL 组复制技术实现,与数据库性能测试工具使用。
本文档是在 99Cloud Lab OpenStack 平台虚机上面测试,仅供参考。
系统: CentOS 7.3
虚机: 2 核 4G
版本: MySQL 5.7
MySQL Group Replication(简称 MGR)是官方推出的高可用解决方案,原生复制技术,基于插件的方式工作。其中 single primary mode 单主模式只有一个读写,其余都是只读。
multi primary mode多主模式全部可读写
不管组复制单主还是多主的故障切换都无法让应用无感知,需要自主实现,包含以下特性:
01、官方引言
Quite obviously, regardless the mode Group Replication is deployed, it does not handle client-side fail-over. That must be handled by the application itself, connector or a middleware framework such as a proxy or router. |
意思就是 MGR 内部没有提供一种机制来实现主节点故障切换对应用的无感知。应用的这种故障无感知需要借助外力实现。
02、组复制的局限
所有涉及的数据都必须发生在 InnoDB 存储引擎的表内。
01、实验环境
主机名 |
主机地址 |
组复制端口 |
mysql01 |
172.16.200.4 |
33061 |
mysql02 |
172.16.200.6 |
33062 |
mysql03 |
172.16.200.9 |
33063 |
02、安装软件
数据库主配文件定义
- datadir=/var/lib/mysql
- socket=/var/lib/mysql/mysql.sock
- report_host = 172.16.200.4
- max_connections = 4096
- # Disabling symbolic-links is recommended to prevent assorted security risks
- symbolic-links=0
- log-error=/var/log/mysqld.log
- pid-file=/var/run/mysqld/mysqld.pid
- server_id=1
- gtid_mode=ON
- enforce_gtid_consistency=ON
- master_info_repository=TABLE
- relay_log_info_repository=TABLE
- binlog_checksum=NONE
- log_slave_updates=ON
- log_bin=binlog
- binlog_format=ROW
- # Group Replication configuration
- transaction_write_set_extraction=XXHASH64
- loose-group_replication_group_name="09f09aca-2ee4-44f7-b4bb-7d5fe32b52a4"
- loose-group_replication_start_on_boot=off
- loose-group_replication_local_address= "172.16.200.4:33061"
- loose-group_replication_group_seeds= "172.16.200.9:33063,172.16.200.4:33061,172.16.200.6:33062"
- loose-group_replication_bootstrap_group= off
- #loose-group_replication_single_primary_mode=FALSE
- #loose-group_replication_enforce_update_everywhere_checks= TRUE
03、复制授权
进入数据库
- mysql> SET SQL_LOG_BIN=0;
- mysql> CREATE USER rpl_user@'%' IDENTIFIED BY 'rpl_pass';
- mysql> GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
- mysql> FLUSH PRIVILEGES;
- mysql> SET SQL_LOG_BIN=1;
- mysql> CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='rpl_pass' FOR CHANNEL 'group_replication_recovery';
04、启动组复制
安装插件
- INSTALL PLUGIN group_replication SONAME 'group_replication.so';
启动复制通道
- SET GLOBAL group_replication_bootstrap_group=ON;
- START GROUP_REPLICATION;
- SET GLOBAL group_replication_bootstrap_group=OFF;
查看集群成员
- mysql> SELECT * FROM performance_schema.replication_group_members;
创建测试同步数据
- mysql> CREATE DATABASE test;
- mysql> USE test;
- mysql> CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 TEXT NOT NULL);
- mysql> INSERT INTO t1 VALUES (1, 'Luis');
检查同步数据和 Binlog
05、加入集群
其余节点加入集群
1)先定义主配文件与主机 hosts
2)建立通道授权
- SET SQL_LOG_BIN=0;
- CREATE USER rpl_user@'%' IDENTIFIED BY 'rpl_pass' ;
- GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%' IDENTIFIED BY 'rpl_pass';
- SET SQL_LOG_BIN=1;
- CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='rpl_pass'
- FOR CHANNEL 'group_replication_recovery';
3)添加插件
- mysql>INSTALLPLUGINgroup_replicationSONAME'group_replication.so';
4)启动复制通道
- mysql>STARTGROUP_REPLICATION;
5)查看集群成员
- mysql>SELECT*FROMperformance_schema.replication_group_members;
06、集群验证
在各个节点都能看到同步的数据,说明集群搭建成功。
查看集群中的主节点
- mysql> SELECT VARIABLE_VALUE FROM performance_schema.global_status
- WHERE VARIABLE_NAME= 'group_replication_primary_member';
01、工具选型
对于 MySQL 压力测试,大多用 sysbench/tpcc-mysql 工具,主要针对数据库 OLTP(在线事务处理)指标。
在编辑 tpcc-mysql 环境时依赖 mysql_config,MySQL 5.7 版本以后 mysql_config 更换为了 pkg--config,明显 tpcc-mysql 跟不上节奏。
本文档性能测试工具选用sysbench 1.0.6
02、工具用法
准备测试数据
sysbencholtp_read_write.lua --mysql-host=172.16.200.4 --mysql-port=3306 --mysql-db=test --mysql-user=root --mysql-password=MyNewPass4! --table_size=5000 --tables=10 --threads=300 --time=60 --report-interval=10 prepare |
开始压测
sysbencholtp_read_write.lua --mysql-host=172.16.200.4 --mysql-port=3306 --mysql-db=test --mysql-user=root --mysql-password=MyNewPass4! --table_size=5000 --tables=10 --threads=300 --time=60 --report-interval=10 run |
清除测试数据
sysbencholtp_read_write.lua --mysql-host=172.16.200.4 --mysql-port=3306 --mysql-db=test --mysql-user=root --mysql-password=MyNewPass4! --table_size=5000 --tables=10 --threads=300 --time=60 --report-interval=10 cleanup |
03、压测 screen view
准备测试数据
集群测试
单机测试
04、测试结果
|
tps |
qps |
备注 |
单机 |
576.86 |
11617.78 | |
集群(3节点single mode) |
263.48 |
7507.35 |
单个IP读写 |
集群(3节点multi mode) |
307.19 |
8343.02 |
单个IP读写 |
组复制模式配置比异步复制,半同步复制简单便捷,数据同步效率也较高,组复制以插件形式工作。不管组复制单主还是多主的故障切换都无法让应用无感知,需要自主实现。
参考文档
单库安装:https://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html
集群安装:https://dev.mysql.com/doc/refman/5.7/en/group-replication-deploying-in-single-primary-mode.html
【原创稿件,合作站点转载请注明原文作者和出处为.com】
文章标题:MySQL组复制技术实现与数据库性能测试工具
文章分享:http://www.csdahua.cn/qtweb/news9/470959.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网