专栏首页杨建荣的学习笔记分分钟搭建MySQL Group Replication测试环境(r11笔记第82天)

分分钟搭建MySQL Group Replication测试环境(r11笔记第82天)

最近看了下MySQL 5.7中的闪亮特性Group Replication,也花了不少做了些测试,发现有些方面的表现确实不赖。当然要模拟这么一套环境还是需要花不少的功夫的,一般来说都是3个节点的环境,实际中要找这样的环境也不是很容易。我们怎么快速模拟呢。一种方式就是在一台服务器上搭建多实例。

这样一来,服务器的问题就解决了,下面要解决的问题就要艰巨的多了,那就是部署环境。

可以看到各路博客中都有了详细的解释,而官方文档中对于搭建过程也花了不少的额篇幅来解释,每一个步骤,每个操作,每个参数的含义。但是尽管如此,一次性成功搭建出这个环境的成功概率还是很低。初始化的部分不说,总是在添加节点的时候会有一些问题,这些问题折磨了我好些天,很多时候排查问题要做减法,也算是熟能生巧吧。搭建了十多遍,我也把自己的经验简单总结出来。这样的一个精华就是脚本了。

当然这是一个很初始的脚本,没有动态变量,没有复杂的条件判断,我就是顺序累了这么些代码,反复尝试,算是可以在一分钟内搭建出一个符合基本要求的环境。

我就直接上一个比较简单的脚本,其实严格来说不算是脚本。初始化环境的部分

mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/home/mysql/data/s1 --explicit_defaults_for_timestamp mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/home/mysql/data/s2 --explicit_defaults_for_timestamp mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/home/mysql/data/s3 --explicit_defaults_for_timestamp 配置参数文件 chown -R mysql:mysql s1 s2 s3 cp s1.cnf s1 cp s2.cnf s2 cp s3.cnf s3 chown -R mysql:mysql s1 s2 s3 启动MySQL服务 /usr/local/mysql/bin/mysqld_safe --defaults-file=/home/mysql/data/s1/s1.cnf & /usr/local/mysql/bin/mysqld_safe --defaults-file=/home/mysql/data/s2/s2.cnf & /usr/local/mysql/bin/mysqld_safe --defaults-file=/home/mysql/data/s3/s3.cnf & 中间停顿几秒,保证服务能够正常启动 sleep 10 连接到各个实例查看是数据库是否可用 /usr/local/mysql/bin/mysql -P24081 -S /home/mysql/s1.sock -e "show databases" /usr/local/mysql/bin/mysql -P24082 -S /home/mysql/s2.sock -e "show databases" /usr/local/mysql/bin/mysql -P24083 -S /home/mysql/s3.sock -e "show databases"

连接到第一个节点,运行下面的脚本,初始化安装GR插件,做一个基本的配置mysql -P24081 -S /home/mysql/s1.sock -e " SET SQL_LOG_BIN=0; CREATE USER rpl_user@'%'; GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%' IDENTIFIED BY 'rpl_pass'; FLUSH PRIVILEGES; SET SQL_LOG_BIN=1; CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='rpl_pass' FOR CHANNEL 'group_replication_recovery'; 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; select *from performance_schema.replication_group_members; "

连接到第二个节点,初始化GR插件和基础配置,和第一个节点略有不同。mysql -P24082 -S /home/mysql/s2.sock -e " SET SQL_LOG_BIN=0; CREATE USER rpl_user@'%'; 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'; INSTALL PLUGIN group_replication SONAME 'group_replication.so'; set global group_replication_allow_local_disjoint_gtids_join=on; start group_replication; select *from performance_schema.replication_group_members; "

连接到第二个节点,初始化GR插件和基础配置,和第一个节点略有不同。mysql -P24083 -S /home/mysql/s3.sock -e " SET SQL_LOG_BIN=0; CREATE USER rpl_user@'%'; 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'; INSTALL PLUGIN group_replication SONAME 'group_replication.so'; set global group_replication_allow_local_disjoint_gtids_join=on; start group_replication ; select *from performance_schema.replication_group_members; "参数文件的模板如下,除了红色的部分,其它都保持不变即可。这里我使用的端口是24801,不是默认的3306,当然这个没有限制。

[mysqld] # server configuration datadir=/home/mysql/data/s1 basedir=/usr/local/mysql port=24801 socket=/home/mysql/s1.sock 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 transaction_write_set_extraction=XXHASH64 loose-group_replication_group_name="1bb1b861-f776-11e6-be42-782bcb377193" loose-group_replication_start_on_boot=off loose-group_replication_local_address= "127.0.0.1:24901" loose-group_replication_group_seeds= "127.0.0.1:24901,127.0.0.1:24902,127.0.0.1:24903" loose-group_replication_bootstrap_group= off

运行脚本的输出如下,最后会显示节点都添加成功。

+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | b3684636-f83d-11e6-bd53-782bcb377193 | grtest      |       24801 | ONLINE       |
| group_replication_applier | b4a7d208-f83d-11e6-be4e-782bcb377193 | grtest      |       24802 | ONLINE       |
| group_replication_applier | b5eecf1d-f83d-11e6-80d7-782bcb377193 | grtest      |       24803 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+

这个过程自己多熟悉熟悉,对于理解Group Replication的原理和基本实现是大有帮助,里面参数的含义没解释?文档都解释的很清楚了,细细看来,留给DBA操作的内容其实不是很多。

本文分享自微信公众号 - 杨建荣的学习笔记(jianrong-notes),作者:杨建荣

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-02-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MySQL 5.6, 5.7并行复制测试(r12笔记第9天)

    对于主从延迟,其实一直以来就是一个颇有争议的话题,在MySQL阵营中,如果容忍一定的延迟的场景,通过主从来达到读写分离是个很不错的方案,但是延迟率到底有多...

    jeanron100
  • MySQL关于数据字典的一个疑问

    今天看着MySQL的数据字典,突然想到一个问题:为什么MySQL数据字典 information_schema中的表名是大写,而performance_sche...

    jeanron100
  • Linux下配置MySQL主从复制(r5笔记第13天)

    MySQL的主从复制是自己一直想学习的一个实战经历,因为Oracle中的主从复制也是需要不少的配置选项,相比来说感觉重量级一些(数据量也重量级). 今天试了一下...

    jeanron100
  • MySQL Group Replication的安装部署

    这次给大家介绍下MySQL官方最新版本5.7.17中GA的新功能 Group Replication 。

    py3study
  • 网络编程 课设 基于C++ MFC 连接数据库 小应用 小项目浅析展示

    徐飞机
  • MySQL远程代码执行/权限提升漏洞的分析与实践(CVE-2016-6662)

    本文作者:安全小飞侠,原文链接:http://avfisher.win/archives/593 0x00 背景 2016年9月12日,国外安全研究人员Dawi...

    Seebug漏洞平台
  • 技术分享 | 使用备份恢复实例时存在的坑

    爱可生服务团队成员,负责处理客户在MySQL日常运维中遇到的问题;擅长处理备份相关的问题,对数据库相关技术有浓厚的兴趣,喜欢钻研各种问题。

    爱可生开源社区
  • Mysql忘记root密码的恢复方法

    标题是忘记root密码,其实我个人觉得像数据库(mysql、oracle等)这么重要的服务,管理员的密码怎么可能忘记。但凡事都没有绝对,在使用mysql的过...

    行 者
  • MySQL的安装、启动和基础配置 —— mac版本

    第一步:打开网址,https://www.mysql.com,点击downloads之后跳转到https://www.mysql.com/downloads/选...

    changxin7
  • \bmysql5.7 再不升就out了

    Mysql 5.7的GA版本在10月末已经发布了,有个大牛进行了性能测试,对比5.6版,每秒查询数增加了一倍,达到50w/s. 堪称是mysql史上的又一大里...

    后端技术探索

扫码关注云+社区

领取腾讯云代金券