当前位置: 首页 > 科技观察

MySQL组复制技术实现及数据库性能测试工具

时间:2023-03-12 05:32:13 科技观察

[.com原稿]MySQL目前有三种复制模式:异步模式、半同步模式和组复制模式。本研究主要研究MySQL组复制技术的实现和数据库性能测试工具的使用。测试环境本文档在99CloudLabOpenStack平台虚拟机上进行测试,仅供参考。系统:CentOS7.3虚拟机:2核4G版本:MySQL5.7技术架构MySQLGroupReplication(简称MGR)是官方提供的高可用解决方案,原生复制技术,基于插件工作。其中,singleprimarymode只有一种read-write模式,其余都是read-only。多主模式都是可读可写的。无论组复制如何,单主或多主故障转移都不能使应用程序无意识。它需要独立实现,包括以下特点:复制管理操作更加自动化。Paxos协议为数据库集群节点的数据提供了强一致性保证。多主模式下的所有节点都可以读写。解决网络分区引起的脑裂问题,提高复制数据的可靠性。一些不足01.官方介绍很明显,不管部署GroupReplication的模式如何,它都不处理client-sidefail-over。这必须由应用程序本身、连接器或中间件框架(如代理或路由器)处理。Meaning也就是说,MGR没有提供一种机制来实现主节点故障转移不知道应用程序。应用的这种故障不敏感需要借助外力来实现。02.GroupReplication的局限性所有涉及的数据都必须出现在InnoDB存储引擎的表中。所有表都必须有明确的主键定义。网络地址仅支持IPv4。需要低延迟、高带宽的网络。当前集群限制最多允许9个节点。必须启用二进制日志。binlog格式必须是行格式。必须打开gtid模式。复制相关信息必须使用表存储。必须打开事务写集提取。必须打开日志从属更新。目前不支持binlog的checksum。由于干扰事务写入集,因此无法使用保存点。当前不支持可序列化隔离级别。对于同一个对象,在集群的不同实例上并行执行DDL(甚至是冲突的DDL)是可行的,但是会造成数据一致性等方面的错误。目前不支持在多个节点上同时执行同一个DDL。对象的DDL。目前对外键的级联约束操作的实现还没有完全支持,不推荐。实验设置01.实验环境主机名主机地址组复制端口mysql01172.16.200.433061mysql02172.16.200.633062mysql03172.16.200.93306302.安装软件数据库主配置文件定义datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockreport_host=172.16.200.4max_connections=4096#Disablingsymbolic-linksisrecommendedtopreventassortedsecurityriskssymbolic-links=0log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pidserver_id=1gtid_force_modeONmaster_info_repository=TABLErelay_log_infoory=TABLEbinlog_checksum=NONElog_slave_updates=ONlog_bin=binlogbinlog_format=ROW#GroupReplicationconfigurationtransaction_write_set_extraction=XXHASH64loose-group_replication_group_name="09f09aca-2ee4-44f7-b4bb-7d5fe32b52a4"loose-group_replication_start_on_boot=offloose-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=TRUE03、复制授权进入数据库mysql>SETSQL_LOG_BIN=0;mysql>CREATEUSERrpl_user@'%'IDENTIFIEDBY'rpl_pass';mysql>GRANTREPLICATIONSLAVEON*.*TOrpl_user@'%';mysql>FLUSHPRIVILEGES;mysql>SETSQL_LOG_BIN=1;mysql>CHANGEMASTERTOMASTER_USER='rpl_user',MASTER_PASSWORD='rpl_pass'FORCHANNEL'group_replication_recovery';04、启组复制安装插件INSTALLPLUGINgroup_replicationSONAME'group_replication.so';启动复制通道SETGLOBALgroup_replication_bootstrap_group=ON;STARTGROUP_REPLICATION;SETGLOBALgroup_replication_bootstrap_group=OFF;查看集群成员mysql>SELECT*FROMperformance_schema.replication_group_members;创建测试同步数据mysql>CREATEDATABASEtest;mysql>USEtest;mysql>CREATETABLEt1(c1INTPRIMARYKEY,c2TEXTNOTNULL);mysql>INSERTINTOt1VALUES(1,'Luis');查看同步数据和Binlog05,加入集群,其他节点加入集群1)首先定义主配置文件和主机hosts2)建立通道授权SETSQL_LOG_BIN=0;CREATEUSERrpl_user@'%'IDENTIFIEDBY'rpl_pass';GRANTREPLICATIONSLAVEON*.*TOrpl_user@'%'IDENTIFIEDBY'rpl_pass';SETSQL_LOG_BIN=1;CHANGEMASTERTOMASTER_USER='rpl_user',MASTER_PASSWORD='rpl_pass'FORCHANNEL'group_replication_recovery';3)添加插件mysql>INSTALLPLUGINgroup_replicationSONAME'group_replication.so';4)启动复制通道>STARTGROUP_REPLICATION;5)查看集群成员mysql>SELECT*FROMperformance_schema.replication_group_members;06。集群验证可以看到各个节点上同步的数据,说明集群搭建成功检查集群中的主节点mysql>SELECTVARIABLE_VALUEFROMperformance_schema.global_statusWHEREVARIABLE_NAME='group_replication_primary_member';性能测试01、工具选择对于MySQL压力测试,使用的工具大多是sysbench/tpcc-mysql,主要针对数据库OLTP(在线事务处理)指标。编辑tpcc-mysql环境时,依赖mysql_config。MySQL5.7版本后,mysql_config被pkg--config取代。很明显,tpcc-mysql跟不上节奏。本文档中的性能测试工具使用sysbench1.0.602,工具使用准备测试数据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=10prepare开始压测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运行清除测试数据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=10cleanup03.压力测试屏幕视图准备测试数据集群测试单机测试04.测试结果tpsqps备注单机576.8611617.78集群(3节点单模式)263.487507.35单IP读写集群(3节点多模式)307.198343.02单IP读写研究成果组复制模式配置比异步更简单方便复制,半同步复制,数据同步效率也比较高。GroupReplication以插件的形式工作,无论GroupReplication单master还是多masterfailover都不能让应用无意识,需要独立实现。参考文档单库安装: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】