1. 环境准备

  • CentOS7.3
  • percona-server-5.7.18-14

两台服务器ip地址和主机名

10.0.68.206 yhjr-osd-mysql01-uat

10.0.68.207 yhjr-osd-mysql02-uat

1.配置/etc/hosts使各台主机能够互相解析

mysql安装参考

http://www.cnblogs.com/soysauce/p/6934483.html

其中大部分配置是为了打开group replication必须配置的,详见:

http://mysqlhighavailability.com/mysqlha/gr/doc/limitations.html

详细配置文件

[mysqld]
log_timestamps=SYSTEM
port=3306
socket=/data/mysql/run/mysql.sock
basedir=/usr/local/mysql
datadir=/data/mysql/data
tmpdir=/data/mysql/tmp
slow_query_log_file=/data/mysql/logs/slow.log
innodb_log_group_home_dir=/data/mysql/logs
innodb_data_home_dir=/data/mysql/data
innodb_data_file_path=ibdata1:1000M:autoextend
log-error=/data/mysql/logs/error.log
log-bin=/data/mysql/logs/mysql-bin
character-set-client-handshake=FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
skip-external-locking
key_buffer_size=16M
max_allowed_packet=1M
table_open_cache=64
sort_buffer_size=512K
net_buffer_length=8K
read_buffer_size=256K
read_rnd_buffer_size=512K
myisam_sort_buffer_size=8M
lower_case_table_names=1
init_connect='SET NAMES utf8mb4'
log_bin_trust_function_creators=TRUE
default-storage-engine=InnoDB
character_set_server=utf8mb4
expire_logs_days=14
slow-query-log=1
long_query_time=3
server-id=34176
innodb_buffer_pool_size=8000M
innodb_log_file_size=2G
innodb_log_buffer_size=4G
innodb_flush_log_at_trx_commit=1
innodb_lock_wait_timeout=50
lower_case_table_names=1
gtid-mode=on
enforce-gtid-consistency=1
binlog_format=row

query_cache_size=0
tmp_table_size=256M
max_heap_table_size=256M
max_connections=1000
default-time-zone = '+8:00'
###
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
#######mgr#######
transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="f06db57c-3072-11e7-80a0-005056a34175"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "10.0.68.206:6606"
loose-group_replication_group_seeds= "10.0.68.206:6606,10.0.68.207:6606"
loose-group_replication_bootstrap_group= off
loose-group_replication_single_primary_mode=FALSE
loose-group_replication_enforce_update_everywhere_checks= TRUE

[mysqldump]
quick
max_allowed_packet=16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size=20M
sort_buffer_size=20M
read_buffer=2M
write_buffer=2M

[mysqlhotcopy]
interactive-timeout

2.启动实例

service mysql start

登陆之后建议修改root登陆密码,通过以下语句修改:

SET SQL_LOG_BIN=0;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'mysql';
SET SQL_LOG_BIN=1;

mysql命令行下创建group replication所需要的用户:

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';

3.开启组复制

mysql命令行下执行安装插件:

mysql> INSTALL PLUGIN group_replication SONAME 'group_replication.so';

看见插件安装成功
mysql> show plugins

接下来执行下面的语句,启动group replication:

SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;

执行下面的语句,验证group replication已经成功启动:

mysql> SELECT * FROM performance_schema.replication_group_members;

创建测试用的库和表:

mysql> create databaes test1;
mysql> create table test (c1 INT PRIMARY KEY, c2 TEXT NOT NULL);
mysql> INSERT INTO test VALUES (1, 'bruce');
 

4.增加新成员

修改用户密码:

SET SQL_LOG_BIN=0;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'mysql';
SET SQL_LOG_BIN=1;

之后配置group replication需要的用户:

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';

接下来安装group replication插件:

mysql> INSTALL PLUGIN group_replication SONAME 'group_replication.so';
mysql> set global group_replication_allow_local_disjoint_gtids_join=ON;
mysql>START GROUP_REPLICATION;

 查看同步状态:
mysql> SELECT * FROM performance_schema.replication_group_members;

group_replication_allow_local_disjoint_gtids_join要设置为on否则会报错。

 

MySQL Group Replication 搭建[Multi-Primary Mode]的更多相关文章

  1. 找到当前mysql group replication 环境的primary结点

    一.起原: mysql group replication 有两种模式.第一种是single primary 也就是说单个primary .这个模式下只有这一个主可以写入: 第二种是multi pri ...

  2. mysql group replication观点及实践

    一:个人看法 Mysql  Group Replication  随着5.7发布3年了.作为技术爱好者.mgr 是继 oracle database rac 之后. 又一个“真正” 的群集,怎么做到“ ...

  3. MySQL Group Replication 技术点

    mysql group replication,组复制,提供了多写(multi-master update)的特性,增强了原有的mysql的高可用架构.mysql group replication基 ...

  4. MySQL Group Replication配置

    MySQL Group Replication简述 MySQL 组复制实现了基于复制协议的多主更新(单主模式). 复制组由多个 server成员构成,并且组中的每个 server 成员可以独立地执行事 ...

  5. Mysql Group Replication 简介及单主模式组复制配置【转】

    一 Mysql Group Replication简介    Mysql Group Replication(MGR)是一个全新的高可用和高扩张的MySQL集群服务.    高一致性,基于原生复制及p ...

  6. mysql group replication 安装&配置详解

    一.原起: 之前也有写过mysql-group-replication (mgr) 相关的文章.那时也没有什么特别的动力要写好它.主要是因为在 mysql-5.7.20 之前的版本的mgr都有着各种各 ...

  7. 使用ProxySQL实现MySQL Group Replication的故障转移、读写分离(一)

    导读: 在之前,我们搭建了MySQL组复制集群环境,MySQL组复制集群环境解决了MySQL集群内部的自动故障转移,但是,组复制并没有解决外部业务的故障转移.举个例子,在A.B.C 3台机器上搭建了组 ...

  8. 使用ProxySQL实现MySQL Group Replication的故障转移、读写分离(二)

    在上一篇文章<使用ProxySQL实现MySQL Group Replication的故障转移.读写分离(一) > 中,已经完成了MGR+ProxySQL集群的搭建,也测试了ProxySQ ...

  9. Mysql 5.7 基于组复制(MySQL Group Replication) - 运维小结

    之前介绍了Mysq主从同步的异步复制(默认模式).半同步复制.基于GTID复制.基于组提交和并行复制 (解决同步延迟),下面简单说下Mysql基于组复制(MySQL Group Replication ...

随机推荐

  1. 2-5 Sass 的 @ 规则

    @import Sass 支持所有 CSS3 的 @ 规则, 以及一些 Sass 专属的规则,也被称为"指令(directives)". 这些规则在 Sass 中具有不同的功效,详 ...

  2. Docker网络管理机制实例解析+创建自己Docker网络

    实例解析Docker网络管理机制(bridge network,overlay network),介绍Docker默认的网络方式,并创建自己的网络桥接方式,将开发的容器添加至自己新建的网络,提高Doc ...

  3. MySQL数据库(2)----检索信息

    SELECT 语句的简化语法如下: SELECT what to retrive FROM table or tables WHERE conditions that data must satisf ...

  4. PeekMessage&GetMessage

    原文:http://www.cnblogs.com/faceang/archive/2010/05/25/1743757.html PeekMessage与GetMessage的对比相同点:PeekM ...

  5. Android recyclerview删除item刷新列表

    删除item坑 mModels.remove(i); notifyItemRemoved(i); //必须调用这行代码 notifyItemRangeChanged(i, mModels.size() ...

  6. mysql 12小时和24小时转换

    1.12小时显示 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String ...

  7. centos aws 修改使用密码ssh登录

    因为使用pem登录有很多局限性,在此修改为用密码但不是root登录 1.关闭selinux(要重启) vi /etc/selinux/config SELINUX=disabled 2.重置root密 ...

  8. mongodb 3.4复制集详解

    1关闭数据库,打开三个mongodb数据库数据库实例 rs.printReplicationInfo() 2:原理 主库能够进行读写操作,一个复制集群只能有一个活跃的主库 一般情况下复制可以分为好几种 ...

  9. TortoiseGit基本操作

    使用之前需要下载git for windows,tortoisegit . 1.TortoiseGit使用与操作 1.1克隆 打开一个要存放项目的文件夹下,右键Git Clone...进行克隆 弹出克 ...

  10. windows下编译leveldb

    前提条件,下载boost库并编译 boost库弄好后,就可以编译leveldb了 首先,下载leveldb-windows,这个github上有 一. 1文件->新建->从现有代码文件创建 ...