[root@wallet01 ~]# uuidgen

8d1945a5-5c74-4ba0-8240-e9d731110753

[root@wallet01 ~]# vi /etc/my.cnf

##单主模型参数

[mysqld]

server-id = 1

gtid_mode = on

enforce_gtid_consistency = on

log_bin = mysql-bin

binlog_format = row

binlog_checksum = none

binlog_cache_size = 16M

max_binlog_cache_size = 4G

max_binlog_size = 128M

expire_logs_days = 7

relay_log = relay-bin

master_info_repository = table

relay_log_info_repository = table

log_slave_updates = on

slave_parallel_type = LOGICAL_CLOCK

slave_parallel_workers = 4

slave_preserve_commit_order = 1

plugin_load_add='group_replication.so'

transaction_write_set_extraction = XXHASH64

group_replication_group_name = "8d1945a5-5c74-4ba0-8240-e9d731110753"

group_replication_start_on_boot = off

group_replication_member_weight = 40

group_replication_local_address = "192.168.1.201:20001"

group_replication_group_seeds="192.168.1.201:20001,192.168.1.202:20001,192.168.1.203:20001"

[root@wallet01 ~]# vi /etc/my.cnf

##多主模型参数

[mysqld]

group_replication_enforce_update_everywhere_checks = on

group_replication_single_primary_mode = off

[root@wallet01 ~]# mysql -uroot -pabcd@2019

mysql> grant replication slave on *.* to 'repl'@'192.168.1.%' identified by 'repl@2019';

Query OK, 0 rows affected, 1 warning (0.02 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.03 sec)

mysql> reset master;

Query OK, 0 rows affected (0.10 sec)

mysql> change master to master_user='repl',master_password='repl@2019' for channel 'group_replication_recovery';

Query OK, 0 rows affected, 2 warnings (0.25 sec)

mysql> set @@global.group_replication_bootstrap_group=on;

Query OK, 0 rows affected (0.00 sec)

mysql> start group_replication;

Query OK, 0 rows affected (2.46 sec)

mysql> set @@global.group_replication_bootstrap_group=off;

Query OK, 0 rows affected (0.00 sec)

mysql> select * from performance_schema.replication_group_members;

+---------------------------+--------------------------------------+-------------+-------------+--------------+

| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |

+---------------------------+--------------------------------------+-------------+-------------+--------------+

| group_replication_applier | d386a328-5494-11eb-8ff3-000c29f06629 | wallet01    |        3306 | ONLINE       |

+---------------------------+--------------------------------------+-------------+-------------+--------------+

1 row in set (0.00 sec)

mysql>  create user xtrabackup@'localhost' identified by 'xtrabackup@2019';

Query OK, 0 rows affected (0.07 sec)

mysql> grant reload,lock tables,replication client,process on *.* to xtrabackup@'localhost';

Query OK, 0 rows affected (0.02 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.03 sec)

[root@wallet01 ~]# su - mysql

[mysql@wallet01 ~]$ ssh-keygen

[mysql@wallet01 ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub mysql@wallet02

[mysql@wallet01 ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub mysql@wallet03

[mysql@wallet01 ~]$ ssh wallet02 date

Mon Feb 18 10:41:16 CST 2019

[mysql@wallet01 ~]$ ssh wallet03 date

Mon Feb 18 10:42:30 CST 2019

[mysql@wallet01 ~]$ xtrabackup --backup --user=xtrabackup --password=xtrabackup@2019 --stream=tar | ssh mysql@wallet02 \ "gzip >/home/mysql/backup/`date '+%Y-%m-%d_%H-%M-%S'`.tar.gz"

[mysql@wallet01 ~]$ xtrabackup --backup --user=xtrabackup --password=xtrabackup@2019 --stream=tar | ssh mysql@wallet03 \ "gzip >/home/mysql/backup/`date '+%Y-%m-%d_%H-%M-%S'`.tar.gz"

[root@wallet02 ~]# vi /etc/my.cnf

[mysqld]

server-id = 2

gtid_mode = on

enforce_gtid_consistency = on

log_bin = mysql-bin

binlog_format = row

binlog_checksum = none

binlog_cache_size = 16M

max_binlog_cache_size = 4G

max_binlog_size = 128M

expire_logs_days = 7

relay_log = relay-bin

master_info_repository = table

relay_log_info_repository = table

log_slave_updates = on

slave_parallel_type = LOGICAL_CLOCK

slave_parallel_workers = 4

slave_preserve_commit_order = 1

plugin_load_add='group_replication.so'

transaction_write_set_extraction = XXHASH64

group_replication_group_name = "8d1945a5-5c74-4ba0-8240-e9d731110753"

group_replication_start_on_boot = off

group_replication_member_weight = 30

group_replication_local_address = "192.168.1.202:20001"

group_replication_group_seeds="192.168.1.201:20001,192.168.1.202:20001,192.168.1.203:20001"

[root@wallet02 ~]# su - mysql

[mysql@wallet02 ~]$ cd backup

[mysql@wallet02 backup]$ tar izxvf 2019-08-22_10-48-1.tar.gz

[mysql@wallet02 backup]$ xtrabackup --prepare --target-dir=/home/mysql/backup

[mysql@wallet02 backup]$ xtrabackup --copy-back --target-dir=/home/mysql/backup

[mysql@wallet02 backup]$ cat xtrabackup_binlog_info

mysql-bin.000001        50522845        8d1945a5-5c74-4ba0-8240-e9d731110753:1-10758

[root@wallet02 ~]# service mysqld start

Logging to '/var/lib/mysql/wallet02.err'.

Starting mysqld:                                           [  OK  ]

[root@wallet02 ~]# mysql -uroot -pabcd@2019

mysql> set global gtid_purged='8d1945a5-5c74-4ba0-8240-e9d731110753:1-10758';

Query OK, 0 rows affected (0.02 sec)

mysql> change master to master_user='repl',master_password='repl@2019' for channel 'group_replication_recovery';

Query OK, 0 rows affected, 2 warnings (0.11 sec)

mysql> start group_replication;

Query OK, 0 rows affected (5.91 sec)

mysql> select * from performance_schema.replication_group_members;

+---------------------------+--------------------------------------+-------------+-------------+--------------+

| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |

+---------------------------+--------------------------------------+-------------+-------------+--------------+

| group_replication_applier | d386a328-5494-11eb-8ff3-000c29f06629 | wallet02    |        3306 | ONLINE       |

| group_replication_applier | da0cec61-549c-11eb-a0a4-000c29bd9bc5 | wallet01    |        3306 | ONLINE       |

+---------------------------+--------------------------------------+-------------+-------------+--------------+

2 rows in set (0.00 sec)

[root@wallet03 ~]# vi /etc/my.cnf

[mysqld]

server-id = 3

gtid_mode = on

enforce_gtid_consistency = on

log_bin = mysql-bin

binlog_format = row

binlog_checksum = none

binlog_cache_size = 16M

max_binlog_cache_size = 4G

max_binlog_size = 128M

expire_logs_days = 7

relay_log = relay-bin

master_info_repository = table

relay_log_info_repository = table

log_slave_updates = on

slave_parallel_type = LOGICAL_CLOCK

slave_parallel_workers = 4

slave_preserve_commit_order = 1

plugin_load_add='group_replication.so'

transaction_write_set_extraction = XXHASH64

group_replication_group_name = "8d1945a5-5c74-4ba0-8240-e9d731110753"

group_replication_start_on_boot = off

group_replication_member_weight = 20

group_replication_local_address = "192.168.1.203:20001"

group_replication_group_seeds="192.168.1.201:20001,192.168.1.202:20001,192.168.1.203:20001"

[root@wallet03 ~]# su - mysql

[mysql@wallet03 ~]$ cd backup

[mysql@wallet03 backup]$ tar izxvf 2019-08-22_11-03-21.tar.gz

[mysql@wallet03 backup]$ xtrabackup --prepare --target-dir=/home/mysql/backup

[mysql@wallet03 backup]$ xtrabackup --copy-back --target-dir=/home/mysql/backup

[mysql@wallet03 backup]$ cat xtrabackup_binlog_info

mysql-bin.000001        50523169        8d1945a5-5c74-4ba0-8240-e9d731110753:1-10759

[root@wallet03 ~]# service mysqld start

Logging to '/var/lib/mysql/wallet03.err'.

Starting mysqld:                                           [  OK  ]

[root@wallet03 ~]# mysql -uroot -pabcd@2019

mysql> set global gtid_purged='8d1945a5-5c74-4ba0-8240-e9d731110753:1-10759';

Query OK, 0 rows affected (0.04 sec)

mysql> change master to master_user='repl',master_password='repl@2019' for channel 'group_replication_recovery';

Query OK, 0 rows affected, 2 warnings (0.13 sec)

mysql> start group_replication;

Query OK, 0 rows affected (3.39 sec)

mysql> select * from performance_schema.replication_group_members;

+---------------------------+--------------------------------------+-------------+-------------+--------------+

| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |

+---------------------------+--------------------------------------+-------------+-------------+--------------+

| group_replication_applier | d386a328-5494-11eb-8ff3-000c29f06629 | wallet01    |        3306 | ONLINE       |

| group_replication_applier | da0cec61-549c-11eb-a0a4-000c29bd9bc5 | wallet02    |        3306 | ONLINE       |

| group_replication_applier | f11984e0-549d-11eb-b271-000c29906702 | wallet03    |        3306 | ONLINE       |

+---------------------------+--------------------------------------+-------------+-------------+--------------+

3 rows in set (0.00 sec)

mysql> show status like 'group_replication_primary_member';

+----------------------------------+--------------------------------------+

| Variable_name                    | Value                                |

+----------------------------------+--------------------------------------+

| group_replication_primary_member | d386a328-5494-11eb-8ff3-000c29f06629 |

+----------------------------------+--------------------------------------+

1 row in set (0.00 sec)

mysql> select * from performance_schema.replication_group_member_stats\G;

*************************** 1. row ***************************

CHANNEL_NAME: group_replication_applier

VIEW_ID: 16104300602378309:3

MEMBER_ID: f11984e0-549d-11eb-b271-000c29906702

COUNT_TRANSACTIONS_IN_QUEUE: 0

COUNT_TRANSACTIONS_CHECKED: 3825

COUNT_CONFLICTS_DETECTED: 0

COUNT_TRANSACTIONS_ROWS_VALIDATING: 18

TRANSACTIONS_COMMITTED_ALL_MEMBERS: 8d1945a5-5c74-4ba0-8240-e9d731110753:1-3851

LAST_CONFLICT_FREE_TRANSACTION: 8d1945a5-5c74-4ba0-8240-e9d731110753:3851

1 row in set (0.00 sec)组复制限制

仅支持innodb引擎的表,能够创建非innodb引擎的表,但是无法写入数据,向非innodb表写数据直接报错。

mysql> create table tb_myisam(id int, name varchar(50), primary key(id)) engine=myisam;

Query OK, 0 rows affected (0.05 sec)

mysql> insert into tb_myisam select 1, '1';

ERROR 3098 (HY000): The table does not comply with the requirements by an external plugin.

仅支持innodb引擎的表,并且该表必须有显式的主键,或者非Null的唯一键,否则即使能够创建表,也无法向表中写入数据。

# 创建没有主键的表,写入数据失败

mysql> create table tb_no_primary_key(name varchar(50));

Query OK, 0 rows affected (0.15 sec)

mysql> insert into tb_no_primary_key select '1';

ERROR 3098 (HY000): The table does not comply with the requirements by an external plugin.

# 创建Null唯一索引的表,写入数据失败

mysql> create table tb_null_unique_key(name varchar(50), unique key(name));

Query OK, 0 rows affected (0.09 sec)

mysql> insert into tb_null_unique_key select '1';

ERROR 3098 (HY000): The table does not comply with the requirements by an external plugin.

# 创建非Null唯一索引的表,写入数据成功

mysql> create table tb_no_null_unique_key(name varchar(50) not null, unique key(name));

Query OK, 0 rows affected (0.04 sec)

mysql> insert into tb_no_null_unique_key select '1';

Query OK, 1 row affected (0.06 sec)

Records: 1  Duplicates: 0  Warnings: 0

GTID限制

CREATE TABLE … SELECT语句不支持

因为该语句会被拆分成 CREATE TABLE 和 INSERT 两个事务,并且这个两个事务被分配了同一个 GTID,这会导致 INSERT 被备库忽略掉。

mysql> create table history01 select * from history;

ERROR 1786 (HY000): Statement violates GTID consistency: CREATE TABLE ... SELECT.

解决方法

mysql> create table history01 like history;

Query OK, 0 rows affected (0.32 sec)

mysql> insert into history01 select * from history;

Query OK, 301277 rows affected (7.27 sec)

Records: 301277  Duplicates: 0  Warnings: 0

临时表事务内部不能执行

创建临时表语句,但可以在事务外执行,但必须设置 set autocommit=1 。另外 procedures, functions, and triggers在使用GTID时不能 CREATE TEMPORARY TABLE and DROP TEMPORARY TABLE 语句

mysql> begin;

Query OK, 0 rows affected (0.00 sec)

mysql> create temporary table test(id INT);

ERROR 1787 (HY000): Statement violates GTID consistency: CREATE TEMPORARY TABLE and DROP TEMPORARY TABLE can only be executed outside transactional context.

These statements are also not allowed in a function or trigger because functions and triggers are also considered to be multi-statement transactions.

mysql数据库group_key_【MySQL】数据库复制:组复制(Group Replication)相关推荐

  1. linux企业实战 --MySQL数据库之组复制

    文章目录 实验环境 组复制前需要清空mysql环境 server1配置 server2配置 server3配置 测试 实验环境 hostname IP server1 172.25.42.1 mast ...

  2. 死磕数据库系列(二十六):MySQL 高可用之单主、双主模型组复制配置实践

    点关注公众号,回复"1024"获取2TB学习资源! 前面我们学习:MySQL 高可用之组复制(MGR)技术的相关原理知识,今天我将详细的为大家介绍 MySQL 高可用技术组复制的单 ...

  3. Mysql进阶(2)——组复制

    前言 组复制模型: MySQL组复制是MySQL 5.7.17开始引入的新功能,为主从复制实现高可用功能.它支持单主模型和多主模型两种工作方式(默认是单主模型). 单主模型:从复制组中众多个MySQL ...

  4. MySQL5.7 Group Replication (MGR)--Mysql的组复制之多主模式

    MGR--Mysql的组复制之多主模式 以下测试在VMware环境: 操作系统:Centos 6.9 X86_64 数据库:Mysql 5.7 (mysql  Ver 14.14 Distrib 5. ...

  5. mysql 开发复制协议_MySQL组复制MGR(一)– 技术概述

    (一)复制技术的发展 MySQL的复制技术主要经历了异步主从复制,半同步复制,组复制(Group Replication)3个阶段. (1)传统的异步主从复制 传统的MySQL提供了一种简单的主从复制 ...

  6. MySQL的异步、半异步、组复制

    1.基本介绍 这里主要介绍MySQL在复制过程中的内容. 首先介绍MySQL中的事物.这里指的就是一组原子性的SQL查询,亦或一个独立的步骤,但该步骤中包含很多SQL语句.数据库中的管理任务通产就是安 ...

  7. Mysql组复制(MGR)——操作

    该部分描述部署组复制的不同模式,解释管理组的常见操作,并提供关于如何调整组的信息. 一.部署多主或单主模式 组复制按照如下不同模式进行操作: 1)单主模式. 2)多主模式. 默认模式为单主模式.组成员 ...

  8. mysql组复制(MGR)——背景

    本文提供mysql组复制相关的背景信息. 创建容错系统的最常用方式是采用组件冗余方式,换句话说,就是组件能被移除且系统应该继续如期操作.这产生了一系列将系统复杂度上升到不同等级的挑战.特别是,复制数据 ...

  9. MySQL 8 复制(十)——组复制性能与限制

    目录 一.组复制性能 1. 概述 2. 测试规划 3. 消息压缩 4. 组通信线程循环 5. 写入集 6. 流控 7. 其它配置 8. 主从.半同步.组复制性能对比测试 二.组复制要求与限制 1. 组 ...

  10. MySQL 8 复制(九)——组复制联机配置

    目录 一.配置组复制模式 1. 单主模式 2. 多主模式 3. 联机配置组复制模式 4. 配置并发写实例数 5. 设置组的通信协议版本 二.保证数据一致性 1. 组复制数据一致性简介 2. 防止主库故 ...

最新文章

  1. 解决微信小程序textarea层级太高遮挡其他组件的问题
  2. STM32开发 -- 低功耗模式详解(3)
  3. Spring Security OAuth2——自定义OAuth2第三方登录(Gitee)
  4. 调用微信和支付宝调三方接口扫描二维码?
  5. 摘自《解析极限编程-拥抱变化》
  6. 798. 差分矩阵 (二维差分)
  7. 《软件需求分析》阅读笔记3
  8. Cannot find module ‘https-proxy-agent‘
  9. List<实体>转json
  10. 蓝桥杯省赛2015年——奇妙的数字
  11. MIPS处理器 CPU数据通路
  12. erdas几何校正_ERDAS遥感图像的几何校正.docx
  13. 元素周期表排列的规律_元素周期表中的几个规律
  14. 手机html编辑器微信,135微信(135编辑器手机版网页版)
  15. Bada学习-应用模块
  16. vs2010 玩转金山界面库 (2) 应用基础
  17. angular 实现类似脑图树结构
  18. 【MCP3208/MCP3204】STM32多通道AD采集,有源码
  19. Charles 乱码问题解决
  20. 前端模块化require和import

热门文章

  1. 立根融资租赁:内部系统平台上云
  2. 多点在线构建Noxmobi全球化精准营销系统
  3. 阿里云应用高可用 AHAS 正式商用,可一键提升云上应用可用性
  4. 阿里研究院入选中国企业智库系统影响力榜
  5. K8S精华问答 | Kubernetes集群不能正常工作,难道是防火墙问题?
  6. 云重磅|中西合璧 联想凌拓瓜熟蒂落;5G实锤 华为推出首部5G折叠手机;​IBM打造Kubernetes无处不在”的模式...
  7. Gartner的预言:通向混合IT之旅
  8. 顺序写磁盘比随机写内存_深入理解 linux磁盘顺序写、随机写
  9. mysql显示百分比例_显示值mysql的百分比
  10. python queue模块安装_Python -- Queue模块