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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/525717.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网易容器云平台的微服务化实践

摘要:网易云容器平台期望能给实施了微服务架构的团队提供完整的解决方案和闭环的用户体验,为此从 2016 年开始,我们容器服务团队内部率先开始进行 dogfooding 实践,看看容器云平台能不能支撑得起容器服务本身的微服务架构&#xf…

逐鹿工具显示服务器错误连接不上怎么解决,win7系统安装逐鹿工具箱提示“error launching installer”错误的解决方法...

win7系统使用久了,好多网友反馈说win7系统安装逐鹿工具箱提示“error launching installer”错误的问题,非常不方便。有什么办法可以永久解决win7系统安装逐鹿工具箱提示“error launching installer”错误的问题,面对win7系统安装逐鹿工具箱…

唯品会2017年双11大促技术保障实践,全域提供25万QPS服务能力

作者简介:刘惊惊,唯品会业务架构部高级架构师,负责唯品会电商平台的用户系统,营销系统和库存系统的架构设计工作。2016年加入唯品会,参与了唯品会电商系统的大重构,负责多个核心系统的梳理和大促准备。 张…

iis7 mysql_windows 7 下搭建php开发环境(windows7+IIS7+php+mysql)

首先需要说明的是,基于IIS v6.0/v7.0(2008),可以支持的脚本相当完整,不仅支持Linux无法支持的asp/asp.net,还可以安装php、mysql、zend实现php环境。同时,利用Serv-U可以实现ftp管理。操作简单,无需键入任何…

从核心技术到高可用实践——解密数据库深度挖掘指南

SDCC系列峰会各站在技术圈遍地花开之余,主办方CSDN为了更好地服务技术开发者并拓展受众,同步启动SDCC 2017系列之线上峰会——线上线下双管齐下,一举打破地域限制,内容为基,便捷加成,带来更友好的听众体验。…

Unity中Shader观察空间推导

文章目录 前言一、本地空间怎么转化到观察空间二、怎么得到观察空间的基向量1、Z轴向量2、假设 观察空间的 Y~假设~ (0,1,0)3、X Y 与 Z 的叉积4、Y X 与 Z 的叉积 三、求 [V~world~]^T^1、求V~world~2、求[V~world~]^T^ 四、求出最后在Unity中使用的公式1、偏移坐标轴2、把…

mysql 几级缓存_Mysql中一级缓存二级缓存区别

一级缓存:也称本地缓存,sqlSession级别的缓存。一级缓存是一直开启的;与数据库同一次会话期间查询到的数据会放在本地缓存中。如果需要获取相同的数据,直接从缓存中拿,不会再查数据库。一级缓存失效的四种情况&#xf…

portainer 启动mysql_docker 安装portainer容器后,启动/Portainer 安装MySQL并开启远程访问...

启动命令:docker run -d -p 9000:9000 --restartalways -v /var/run/docker.sock:/var/run/docker.sock --name portainer docker.io/portainer/portainer下载mysql镜像文件:docker search mysqldocker pull mysql:5.7.32创建mysql容器:docker run -d --…

追求极简:Docker镜像构建演化史

作者简介:白明,东软互联网运营平台技术负责人,毕业于哈尔滨工业大学,Go语言专家,GopherChina讲师,技术培训师和撰稿人,博客tonybai.com作者,拥有多年后端服务架构设计和开发经验。目…

mysql datetime不支持小数_如何从python向MYSQL中插入空小数/datetime?

我有数据文件:Laura, Laura Ellenburg, 5342 Picklied Trout Lane, Nashville, TN,38010,2000-02-22, , 454-56-768注意结尾附近的“”。在我使用的是python代码:^{pr2}$我的桌子是:create table PV_employee(employeeid varchar(10) not nu…

特征选择算法在微博业务应用中的演进历程

近年来,人工智能与机器学习的应用越来越广泛,尤其是在互联网领域。在微博,机器学习被广泛地应用于微博的各个业务,如Feed流、热门微博、消息推送、反垃圾、内容推荐等。值得注意的是,深度学习作为人工智能和机器学习的…

c winform mysql类_C#连接MySQL数据库操作类

首先需要安装MySQL Connector Net 6.8.3然后在项目中引用MySQL Connector,如下图所示C#连接MySQL的操作类代码如下:public class MySQLHelper{private string db_host "localhost"; //数据库服务器private string db_port "3306";…

病历智能处理引擎的架构设计、实现和应用

作者简介:吴大帅,新屿算法工程师,曾供职于宅米网、新达达,从事系统架构设计、算法设计等工作。 李智慧,《大型网站技术架构:核心原理与案例分析》作者,从事大型网站、分布式系统、大数据方面的研…

django2连接mysql_Django2.2连接MySQL问题解决

报错一&#xff1a;django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.解决方法&#xff1a;编辑文件&#xff0c;注释掉如下行&#xff1a;version Database.version_info# if version < (1, 3, 13):# raise Improp…

Heron:来自Twitter的新一代流处理引擎应用篇

作者 | 吴惠君&#xff0c;吕能&#xff0c;符茂松责编 | 郭芮【导语】 本文对比了Heron和常见的流处理项目&#xff0c;包括Storm、Flink、Spark Streaming和Kafka Streams&#xff0c;归纳了系统选型的要点。此外实践了Heron的一个案例&#xff0c;以及讨论了Heron在这一年开…

mysql dump 数据时间_使用mysqldump备份数据及做时间点还原测试步骤

1、备份dbtest数据库数据# mysqldump --databases dbtest --master-data2 --single-transaction >s2.sql记录当前的库的status信息# cat s2.sql |grep CHANGE-- CHANGE MASTER TO MASTER_LOG_FILEmaster.000004, MASTER_LOG_POS4415;mysql> show master status ;|master…

2017 JavaScript 调查报告概述

本文转载自极光日报知乎专栏&#xff0c;地址&#xff1a;https://zhuanlan.zhihu.com/p/32260460简评&#xff1a;最近一份超过 23,000 名开发者参与的关于 JavaScript 的调查报告 - the State of JavaScript 2017 出炉了。内容包含框架的流行趋势、薪资水平等等&#xff0c;感…

mysql rpm 安装多实例_MySQL搭建系列之多实例

所谓多实例。就是在一台server上搭建、执行多个MySQL实例&#xff0c;每一个实例使用不同的服务port。通过不同的socket监听&#xff1b;物理上&#xff0c;每一个实例拥有独立的參数配置文件及数据库。通常情况下。一台server是不建议执行多个MySQL实例的。尤其是生产环境&…

python动态_python --动态类型

动态类型(dynamic typing)是Python另一个重要的核心概念。我们之前说过&#xff0c;Python的变量(variable)不需要声明&#xff0c;而在赋值时&#xff0c;变量可以重新赋值为任意值。这些都与动态类型的概念相关。动态类型在我们接触的对象中&#xff0c;有一类特殊的对象&…

微博热点事件背后数据库运维的“功守道”

作者 | 张冬洪责编 | 仲培艺【导语】 微博拥有超过3.76亿月活用户&#xff0c;是当前社会热点事件传播的主要平台。而热点事件往往具有不可预测性和突发性&#xff0c;较短时间内可能带来流量的翻倍增长&#xff0c;甚至更大。如何快速应对突发流量的冲击&#xff0c;确保线上服…