mysql数据库group_key_【MySQL】数据库复制:组复制(Group Replication)
[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)相关推荐
- linux企业实战 --MySQL数据库之组复制
文章目录 实验环境 组复制前需要清空mysql环境 server1配置 server2配置 server3配置 测试 实验环境 hostname IP server1 172.25.42.1 mast ...
- 死磕数据库系列(二十六):MySQL 高可用之单主、双主模型组复制配置实践
点关注公众号,回复"1024"获取2TB学习资源! 前面我们学习:MySQL 高可用之组复制(MGR)技术的相关原理知识,今天我将详细的为大家介绍 MySQL 高可用技术组复制的单 ...
- Mysql进阶(2)——组复制
前言 组复制模型: MySQL组复制是MySQL 5.7.17开始引入的新功能,为主从复制实现高可用功能.它支持单主模型和多主模型两种工作方式(默认是单主模型). 单主模型:从复制组中众多个MySQL ...
- MySQL5.7 Group Replication (MGR)--Mysql的组复制之多主模式
MGR--Mysql的组复制之多主模式 以下测试在VMware环境: 操作系统:Centos 6.9 X86_64 数据库:Mysql 5.7 (mysql Ver 14.14 Distrib 5. ...
- mysql 开发复制协议_MySQL组复制MGR(一)– 技术概述
(一)复制技术的发展 MySQL的复制技术主要经历了异步主从复制,半同步复制,组复制(Group Replication)3个阶段. (1)传统的异步主从复制 传统的MySQL提供了一种简单的主从复制 ...
- MySQL的异步、半异步、组复制
1.基本介绍 这里主要介绍MySQL在复制过程中的内容. 首先介绍MySQL中的事物.这里指的就是一组原子性的SQL查询,亦或一个独立的步骤,但该步骤中包含很多SQL语句.数据库中的管理任务通产就是安 ...
- Mysql组复制(MGR)——操作
该部分描述部署组复制的不同模式,解释管理组的常见操作,并提供关于如何调整组的信息. 一.部署多主或单主模式 组复制按照如下不同模式进行操作: 1)单主模式. 2)多主模式. 默认模式为单主模式.组成员 ...
- mysql组复制(MGR)——背景
本文提供mysql组复制相关的背景信息. 创建容错系统的最常用方式是采用组件冗余方式,换句话说,就是组件能被移除且系统应该继续如期操作.这产生了一系列将系统复杂度上升到不同等级的挑战.特别是,复制数据 ...
- MySQL 8 复制(十)——组复制性能与限制
目录 一.组复制性能 1. 概述 2. 测试规划 3. 消息压缩 4. 组通信线程循环 5. 写入集 6. 流控 7. 其它配置 8. 主从.半同步.组复制性能对比测试 二.组复制要求与限制 1. 组 ...
- MySQL 8 复制(九)——组复制联机配置
目录 一.配置组复制模式 1. 单主模式 2. 多主模式 3. 联机配置组复制模式 4. 配置并发写实例数 5. 设置组的通信协议版本 二.保证数据一致性 1. 组复制数据一致性简介 2. 防止主库故 ...
最新文章
- 解决微信小程序textarea层级太高遮挡其他组件的问题
- STM32开发 -- 低功耗模式详解(3)
- Spring Security OAuth2——自定义OAuth2第三方登录(Gitee)
- 调用微信和支付宝调三方接口扫描二维码?
- 摘自《解析极限编程-拥抱变化》
- 798. 差分矩阵 (二维差分)
- 《软件需求分析》阅读笔记3
- Cannot find module ‘https-proxy-agent‘
- List<实体>转json
- 蓝桥杯省赛2015年——奇妙的数字
- MIPS处理器 CPU数据通路
- erdas几何校正_ERDAS遥感图像的几何校正.docx
- 元素周期表排列的规律_元素周期表中的几个规律
- 手机html编辑器微信,135微信(135编辑器手机版网页版)
- Bada学习-应用模块
- vs2010 玩转金山界面库 (2) 应用基础
- angular 实现类似脑图树结构
- 【MCP3208/MCP3204】STM32多通道AD采集,有源码
- Charles 乱码问题解决
- 前端模块化require和import
热门文章
- 立根融资租赁:内部系统平台上云
- 多点在线构建Noxmobi全球化精准营销系统
- 阿里云应用高可用 AHAS 正式商用,可一键提升云上应用可用性
- 阿里研究院入选中国企业智库系统影响力榜
- K8S精华问答 | Kubernetes集群不能正常工作,难道是防火墙问题?
- 云重磅|中西合璧 联想凌拓瓜熟蒂落;5G实锤 华为推出首部5G折叠手机;​IBM打造Kubernetes无处不在”的模式...
- Gartner的预言:通向混合IT之旅
- 顺序写磁盘比随机写内存_深入理解 linux磁盘顺序写、随机写
- mysql显示百分比例_显示值mysql的百分比
- python queue模块安装_Python -- Queue模块