这是学习笔记的第 1867篇文章
之前写了一版测试环境,单机搭建MGR快速体验版本的脚本。
大概在一年之后做了一次独立环境的部署,是和consul组合的测试,发现脚本内容有了较大的差别。
差不多又过了一段时间,就是现在,MGR都推出这么长时间了,如果是技术不够成熟尚且可以理解,但是如果到目前为止还没有部署过MGR环境开始测试学习,就实在有些说不过去了(当然我相信很多人都没有迈出这一步)。
所以如果你希望开始搭建的环境不是单机多实例的MGR测试,而是想模拟一个基本版的线上测试,可以参考这篇文章的步骤。
第一步就是找到适合的版本,目前社区版本最新的是5.7.25,如果你是冲着MGR来的,那就推荐是5.7最新的版本。
测试环境是两个独立的服务器,当然有更多的服务器是没有问题端口为4308,内部端口为43081,部署环境是单主模式。
IP是跨网段的:
192.168.9.100
10.90.8.100
数据库初始化,实在没有太多要说的,可以按照自己已有的规范,或者来一个基本版操作,假设软件解压在了目录/usr/local/mysql-5.7.25-linux-glibc2.12-x86_64下面。
/usr/local/mysql-5.7.25-linux-glibc2.12-x86_64/bin/mysqld --no-defaults --basedir=/usr/local/mysql-5.7.25-linux-glibc2.12-x86_64 --datadir=/data/mysql_4308 --explicit_defaults_for_timestamp --initialize-insecure
配置参数文件,一个简陋的模板如下:
[mysqld]
# server configuration
datadir=/data/mysql_4308
basedir=/usr/local/mysql-5.7.25-linux-glibc2.12-x86_64
port=4308
socket=/data/mysql_4308/mysql.sock
server_id=4308
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= "192.168.9.100:43081"
loose-group_replication_group_seeds= "10.90.8.100:43081"
loose-group_replication_bootstrap_group= off
配置所在文件夹的权限为mysql和组
chown -R mysql.mysql /data/mysql_4308
启动MySQL
/usr/local/mysql-5.7.25-linux-glibc2.12-x86_64/bin/mysqld_safe --defaults-file=/data/mysql_4308/my.cnf &
MGR端相关配置如下:
节点1执行:
create user rpl_user@'%';
grant replication slave on *.* to rpl_user@'%' identified by 'rpl_pass';
所有节点都执行:
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
show plugins;
change master to master_user='rpl_user',master_password='rpl_pass' for channel 'group_replication_recovery';
节点1开启GR:
SET GLOBAL group_replication_bootstrap_group = ON;
START GROUP_REPLICATION;
SELECT * FROM performance_schema.replication_group_members;
其他节点开启GR:
set global group_replication_allow_local_disjoint_gtids_join=ON;
START GROUP_REPLICATION;
看起来已经很简单了。我做一些补充,可能是官网上也没有明确说的:
可以看到GR成员的信息中,是默认通过主机名的方式注册的,我们就需要在不同节点间来满足这个主机域名的互通,需要在/etc/hosts下面配置主机名。
在本例中的服务器是跨网段的,在搭建MGR的时候就会有一定的潜在问题。 在节点1中会看到节点2的注册信息被拒绝,同网段不存在这类问题。
[GCS] Connection attempt from IP address xxxxx refused. Address is not in the IP whitelist
我们需要设置一个新的参数和白名单相关,
set global group_replication_ip_whitelist="192.168.9.100,10.90.8.100,127.0.0.1/8";
然后重新启动GR就OK了。
对于应用使用来说,目前主要存在的潜在需求就是对于表需要包含主键,而且自增列的使用会有一些偏差。