说明:

此次配置的是异机的三台MGR环境,多实例的方式可能有些差异,建议根据实际情况调整。

主机                       hostname  数据库端口    MGR配置端口   linux版本

192.169.100.160    mgr1          3307             33071               centos 6.5

192.169.100.161    mgr2          3307             33071               centos 6.5

192.169.100.162    mgr3          3307             33071               centos 6.5

配置步骤

1. 配置主机名和hosts文件(所有主机)

vi /etc/sysconfig/network
  NETWORKING=yes
  HOSTNAME=mgr1-3

vi /etc/hosts
 127.0.0.1 localhost localhost.localdomain
 192.169.100.160 mgr1
 192.169.100.161 mgr2
 192.169.100.162 mgr3

2.关闭防火墙和selinx

service iptables stop
chkconfig disalbe iptables

vi /etc/selinux/config 
 SELINUX=disabled

3.  配置数据库配置文件(数据库安装部分略过)

192.169.100.160 (以下是简单的MGR配置文件)
vi /etc/mymgr.cnf

[mysqld]
user=mysql
datadir=/data/mysql3307/data
basedir=/usr/local/mysql
port=3307
socket=/data/mysql3307/data/mysql.sock
log-error = /data/mysql3307/logs/mysql3306.err
log-bin = /data/mysql3307/logs/binary/mybinlog
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="e2f6a3b1-2e19-4873-a5d6-9ab8455f5ce2" #该名称的配置是三个节点须一致,否者将无法加入其它节点
loose-group_replication_start_on_boot=off
loose-group_replication_local_address="192.169.100.160:33071"  #对应自己的ip和端口
loose-group_replication_group_seeds="192.169.100.160:33071,192.169.100.161:33071,192.169.100.162:33071"
loose-group_replication_bootstrap_group=off
loose-group_replication_single_primary_mode=FALSE
loose-group_replication_enforce_update_everywhere_checks= TRUE
relay-log-recovery=1
#skip-grant-tables=1

192.169.100.161 (以下是简单的MGR配置文件)
[mysqld]
user=mysql
datadir=/data/mysql3307/data
basedir=/usr/local/mysql
port=3307
socket=/data/mysql3307/data/mysql.sock
log-error = /data/mysql3307/logs/mysql3306.err
log-bin = /data/mysql3307/logs/binary/mybinlog
server_id=2
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
#skip-grant-tables=1
transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="e2f6a3b1-2e19-4873-a5d6-9ab8455f5ce2"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address="192.169.100.161:33071"
loose-group_replication_group_seeds="192.169.100.160:33071,192.169.100.161:33071,192.169.100.162:33071"
loose-group_replication_bootstrap_group=off
loose-group_replication_single_primary_mode=FALSE
loose-group_replication_enforce_update_everywhere_checks= TRUE
relay-log-recovery=1
192.169.100.162 (以下是简单的MGR配置文件)
[mysqld]
user=mysql
datadir=/data/mysql3307/data
basedir=/usr/local/mysql
port=3307
socket=/data/mysql3307/data/mysql.sock
log-error = /data/mysql3307/logs/mysql3306.err
log-bin = /data/mysql3307/logs/binary/mybinlog
server_id=3
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
#skip-grant-tables=1
transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="e2f6a3b1-2e19-4873-a5d6-9ab8455f5ce2"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address="192.169.100.162:33071"
loose-group_replication_group_seeds="192.169.100.160:33071,192.169.100.161:33071,192.169.100.162:33071"
loose-group_replication_bootstrap_group=off
loose-group_replication_single_primary_mode=FALSE
loose-group_replication_enforce_update_everywhere_checks= TRUE
relay-log-recovery=1

 

4. 初始化三台mysql 数据库(数据库安装部分略过)

/usr/local/mysql/bin/mysqld --defaults-file=/etc/mymgr.cnf --basedir=/usr/local/mysql --datadir=/data/mysql3307/data --user=mysql --initialize &

 

5.启动数据库

/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/mymgr.cnf &
配置密码之后登录:
mysql -uroot -proot -S /data/mysql3307/data/mysql.sock

6. 添加mgr用户用于复制:(所有节点)

set sql_log_bin=0;
grant replication slave,replication client on *.* to repl@'localhost' identified by 'repl';
grant replication slave,replication client on *.* to repl@'127.0.0.1' identified by 'repl';
grant replication slave,replication client on *.* to repl@'192.169.100.%' identified by 'repl';
SET SQL_LOG_BIN=1;
flush privileges;

7.192.169.100.160 上执行(开启分布式复制):

开启分布式复制
change master to master_user='repl',master_password='repl' for channel 'group_replication_recovery';

加载GR插件
install plugin group_replication soname 'group_replication.so';
show plugins;

启动复制程序(主)

set global group_replication_bootstrap_group=ON;

启动单主模式:

set global group_replication_enforce_update_everywhere_checks=OFF;

set global group_replication_single_primary_mode=on;

允许其它节点加入:

set global group_replication_allow_local_disjoint_gtids_join=ON;

设置白名单:
SET GLOBAL group_replication_ip_whitelist="192.169.100.160,192.169.100.161,192.169.100.162";
start group_replication;
set global group_replication_bootstrap_group=OFF;

 

#检测组是否创建并已加入新成员
select * from performance_schema.replication_group_members;

8.192.169.100.161 和192.169.100.162 上执行:

备库启动
set global group_replication_enforce_update_everywhere_checks=OFF;
set global group_replication_single_primary_mode=on;
set global group_replication_allow_local_disjoint_gtids_join=ON;
SET GLOBAL group_replication_ip_whitelist="192.169.100.160,192.169.100.161,192.169.100.162";
START GROUP_REPLICATION;

 

9.MGR 环境下设置vip

*/1 * * * * sh /etc/mysqlvip/call_setvip.sh

[root@mysql1 ~]# cat /etc/mysqlvip/call_setvip.sh

#!/bin/sh
export LANG=en_US.UTF-8
dir=`dirname $0`
ps -ef |grep  -w "setvip.sh"
CNT=`ps -ef |grep -w "setvip.sh"|grep -v grep|wc -l`
echo count:  $CNT
cd ${curdir}
if [ $CNT -eq 0 ] ; then
cd ${dir}
nohup sh  ${dir}/setvip.sh  &
echo 'start setvip  at '`date "+%Y-%m-%d %H:%M"` >> ${dir}/start_setvip.log
fi