Maison > base de données > tutoriel mysql > le corps du texte

Introduction détaillée au processus de construction et de déploiement de la réplication de groupe MySQL [Mode primaire unique]

黄舟
Libérer: 2017-03-22 13:46:05
original
3590 Les gens l'ont consulté

1, À propos de la Réplication de groupe MySQL

La réplication basée sur le groupe est une méthode utilisée dans la technologie des systèmes tolérants aux pannes. Le groupe de réplication est composé de plusieurs serveurs (nœuds) pouvant communiquer entre eux.

Dans la couche de communication, Groupreplication implémente une série de mécanismes : tels que la livraison atomique des messages et l'ordre total des messages.

Ces mécanismes atomiques et abstraits fournissent un support solide pour la mise en œuvre de solutions de réplication de bases de données plus avancées.

MySQL Group Replication implémente un protocole de réplication multi-maître entièrement mis à jour basé sur ces technologies et concepts.

En bref, un groupe de réplication est un groupe de nœuds. Chaque nœud peut exécuter des transactions indépendamment, et les transactions de lecture et d'écriture seront coordonnées avec les autres nœuds du groupe avant d'être validées.

Par conséquent, lorsqu'une transaction est prête à être soumise, elle sera automatiquement diffusée de manière atomique au sein du groupe pour informer les autres nœuds du contenu qui a été modifié/des transactions qui ont été effectuées.

Cette méthode de diffusion atomique maintient cette transaction dans le même ordre sur chaque nœud.

Cela signifie que chaque nœud reçoit le même journal de transactions dans le même ordre, donc chaque nœud relit ces journaux de transactions dans le même ordre, et finalement l'ensemble du groupe reste complètement cohérent Statut .

Cependant, il peut y avoir un conflit de ressources entre les transactions s'exécutant sur différents nœuds. Ce phénomène se produit facilement dans deux transactions simultanées différentes.

Supposons qu'il y ait deux transactions simultanées sur des nœuds différents qui mettent à jour la même ligne de données, un conflit de ressources se produira.

Face à cette situation, GroupReplication détermine que la transaction soumise en premier est une transaction valide et sera répétée dans l'ensemble du groupe. La transaction soumise plus tard sera directement interrompue, ou annulée, et finalement rejetée.

Par conséquent, il s'agit également d'un schéma de réplication sans partage, et chaque nœud enregistre une copie complète des données. Voir l'image suivante 01.png, qui décrit le flux de travail spécifique et peut être comparé de manière concise à d'autres solutions. Ce schéma de réplication est, dans une certaine mesure, similaire à la méthode de réplication de la machine à états de base de données (DBSM).

2, installez mysql5.7.17

Téléchargement officiel, mais le fonctionnaire ne conserve que la dernière version. L'adresse URL 5.7.17 peut ne pas être valide pendant une longue période, elle n'est donc peut-être pas nécessaire. Je l'ai conservée sur Baidu Cloud Disk. . Vous pouvez y accéder à tout moment. Téléchargez et utilisez,


Définissez le mappage /etc/hosts sur trois serveurs de base de données, comme suit :

192.168.121.71     db1                                                                                                                                                                                                               

192.168.121.111     db2                       

192.168.121.24     db3

192.168.121.71 db1                                                                                                                                                                                                                                       121,24 db3


Serveur de base de données installé :

/data/mysql/data192.168.121.111 (db2)

数据库服务器地址                                                 

端口                                                

数据目录                                      

Server-id                                      

192.168.121.71(db1)

3317

/data/mysql/data

12001        

192.168.121.111(db2)

3317

/data/mysql/data

12002

192.168.121.24(db3)

3317

/data/mysql/data

12003

Adresse du serveur de base de données                                                                                   

Port                                                                                      

ID du serveur                                                                                                                                                                                         haut">3317

12001

3317
vim /etc/hosts
192.168.121.71 db1 hch_test_dbm2_121_71                                                                                              
192.168.121.111 db2 bpe_service
192.168.121.24 db3 hch_test_web_1_24
Copier après la connexion

/data/mysql/data

GRANT REPLICATION SLAVE ON *.* TO  'repl'@'192.168.%' IDENTIFIED BY 'rlpbright_1927@ys';
Copier après la connexion
12002

192.168.121.24 (db3)
3317 /data/mysql /data12003

3
mysql> INSTALL PLUGIN group_replication SONAME 'group_replication.so';                        
Query OK, 0 rows affected (0.01 sec)
 
mysql>
Copier après la connexion

, créez un environnement de réplication

Définissez le nom d'hôte et le mappage IP

dans db1, db2 et db3 sont configurés
mysql> show plugins;
+----------------------------+----------+--------------------+----------------------+---------+
| Name                       | Status   | Type               | Library              | License |
+----------------------------+----------+--------------------+----------------------+---------+
| binlog                     | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| mysql_native_password      | ACTIVE   | AUTHENTICATION     | NULL                 | GPL     |
| sha256_password            | ACTIVE   | AUTHENTICATION     | NULL                 | GPL     |
| MyISAM                     | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| PERFORMANCE_SCHEMA         | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| InnoDB                     | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| INNODB_TRX                 | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_LOCKS               | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_LOCK_WAITS          | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMP                 | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMP_RESET           | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMPMEM              | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMPMEM_RESET        | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMP_PER_INDEX       | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMP_PER_INDEX_RESET | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_BUFFER_PAGE         | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_BUFFER_PAGE_LRU     | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_BUFFER_POOL_STATS   | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_TEMP_TABLE_INFO     | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_METRICS             | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_DEFAULT_STOPWORD | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_DELETED          | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_BEING_DELETED    | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_CONFIG           | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_INDEX_CACHE      | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_INDEX_TABLE      | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_TABLES          | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_TABLESTATS      | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_INDEXES         | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_SYS_COLUMNS         | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_SYS_FIELDS          | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_FOREIGN         | ACTIVE   | INFORMATION SCHEMA | NULL                | GPL     |
| INNODB_SYS_FOREIGN_COLS    | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_SYS_TABLESPACES     | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_DATAFILES       | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_SYS_VIRTUAL         | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| MRG_MYISAM                 | ACTIVE   | STORAGE ENGINE     | NULL              | GPL     |
| MEMORY                     | ACTIVE   | STORAGE ENGINE     | NULL              | GPL     |
| CSV                        | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| BLACKHOLE                  | ACTIVE   | STORAGE ENGINE     | NULL               | GPL     |
| partition                  | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| FEDERATED                  | DISABLED | STORAGE ENGINE     | NULL            | GPL     |
| ARCHIVE                    | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| ngram                      | ACTIVE   | FTPARSER      | NULL      | GPL     |
| group_replication          | ACTIVE   | GROUP REPLICATION  | group_replication.so | GPL     |
+----------------------------+----------+--------------------+----------------------+---------+
45 rows in set (0.00 sec)
 
mysql>
Copier après la connexion

Créez un compte de réplication sur db1/db2/db3 : < td valign="top" style="word-break : break-all;">
4, installez le

plug-in de réplication de groupe Installez le plug-in de réplication de groupe <🎜 sur db1, db2 et db3 dans l'ordre >plugin-load=group_replication ou configurez-le directement dans le fichier de configurationmy.cnf :

Afficher le composant de réplication de groupe
mysql> show variables like &#39;binlog_format&#39;;                                            
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW   |
+---------------+-------+
1 row in set (0.00 sec)
 
mysql>
Copier après la connexion

5, configurez réplication de groupe

paramètres

(1) 配置命令如下,具体到某一个db节点会有所调整,大部分参数是一致的:

set  @@global.transaction_write_set_extraction = XXHASH64;
 set @@global.group_replication_start_on_boot  = OFF;
 set  @@global.group_replication_bootstrap_group = OFF;
 set @@global.group_replication_group_name =  "0c6d3e5f-90e2-11e6-802e-842b2b5909d6";                                                                                                                          
 set @@global.group_replication_local_address  = &#39;db1:6606&#39;;
 set @@global.group_replication_group_seeds =  &#39;db2:6607,db3:6608&#39;;
Copier après la connexion

(2) db1执行过程如下:

mysql> set  @@global.transaction_write_set_extraction = XXHASH64;
Query OK, 0 rows affected (0.00 sec)
 
mysql> set  @@global.group_replication_start_on_boot = OFF;
Query OK, 0 rows affected (0.00 sec)
 
mysql> set  @@global.group_replication_bootstrap_group = OFF;
Query OK, 0 rows affected (0.00 sec)
 
mysql>
mysql>set @@global.group_replication_group_name  = "0c6d3e5f-90e2-11e6-802e-842b2b5909d7";                             
Query OK, 0 rows affected (0.00 sec)
 
mysql> set  @@global.group_replication_local_address = &#39;db1:6606&#39;;
Query OK, 0 rows affected (0.00 sec)
 
mysql> set  @@global.group_replication_group_seeds = &#39;db2:6607,db3:6608&#39;;
Query OK, 0 rows affected (0.00 sec)
 
mysql>
Copier après la connexion

(3) db2执行过程如下:

mysql>   set @@global.transaction_write_set_extraction = XXHASH64;
Query OK, 0 rows affected (0.00 sec)
 
mysql>   set @@global.group_replication_start_on_boot = OFF;
Query OK, 0 rows affected (0.00 sec)
 
mysql>   set @@global.group_replication_bootstrap_group = OFF;
Query OK, 0 rows affected (0.01 sec)
 
mysql>   set @@global.group_replication_group_name =  "0c6d3e5f-90e2-11e6-802e-842b2b5909d6";
Query OK, 0 rows affected (0.00 sec)
 
mysql>   set  @@global.group_replication_local_address = &#39;db2:6607&#39;;
Query OK, 0 rows affected (0.00 sec)
 
mysql>  set @@global.group_replication_group_seeds =  &#39;db1:6606,db3:6608&#39;;
Query OK, 0 rows affected (0.01 sec)
 
mysql>
Copier après la connexion

(4) db3执行过程如下:

mysql>   set @@global.transaction_write_set_extraction = XXHASH64 ;
Query OK, 0 rows affected (0.00 sec)
 
mysql>   set @@global.group_replication_start_on_boot = OFF;
Query OK, 0 rows affected (0.00 sec)
 
mysql>   set @@global.group_replication_bootstrap_group = OFF ;
Query OK, 0 rows affected (0.00 sec)
 
mysql>   set @@global.group_replication_group_name =  "0c6d3e5f-90e2-11e6-802e-842b2b5909d6";
Query OK, 0 rows affected (0.00 sec)
 
mysql>   set  @@global.group_replication_local_address = &#39;db3:6608&#39;  ;
Query OK, 0 rows affected (0.00 sec)
 
mysql>   set @@global.group_replication_group_seeds  = &#39;db1:6606,db2:6607&#39; ;
Query OK, 0 rows affected (0.00 sec)
 
mysql>
Copier après la connexion
<🎜><🎜>Assurez-vous que <🎜><🎜>binlog_format<🎜><🎜> est <🎜>< 🎜>row< 🎜><🎜>format. <🎜><🎜><🎜><🎜>Deux méthodes de configuration, ajouter un fichier de configuration OR en ligne <🎜><🎜><🎜>5.1<🎜><🎜>Ajouter une <🎜><🎜><🎜> configuration en ligne : <🎜>< /tr>
<🎜>(1) <🎜>Les commandes de configuration sont les suivantes, spécifiques à un certain <🎜>db <🎜>Les nœuds seront ajustés, et la plupart des paramètres sont les mêmes : <🎜><🎜><🎜><🎜> <🎜><🎜> (2) <🎜>à<🎜>db1<🎜> Le processus d'exécution est le suivant : <🎜><🎜><🎜><🎜> <🎜><🎜> <🎜><🎜>(3 ) <🎜>Processus d'exécution dans <🎜>db2<🎜> Comme suit : <🎜><🎜><🎜><🎜> <🎜><🎜>(4) <🎜> Dans <🎜>db3<🎜> le processus d'exécution est le suivant : <🎜> <🎜><🎜>

5.2配置文件配置

1 db1上的my.cnf配置:

server-id=12001
transaction_write_set_extraction =  XXHASH64
loose-group_replication_group_name =  "5f847ff2-d701-11e6-819c-b8ca3af6e36c"                                                                                                                                                      
loose-group_replication_start_on_boot =  off
loose-group_replication_local_address  = "db1:23306"
loose-group_replication_group_seeds =  "db1:23306,db2:23307,db3:23308"
loose-group_replication_bootstrap_group =  off
loose-group_replication_single_primary_mode  = true
loose-group_replication_enforce_update_everywhere_checks  = false
Copier après la connexion

2db2上的my.cnf配置:

server-id=12002
transaction_write_set_extraction = XXHASH64
loose-group_replication_group_name =  "5f847ff2-d701-11e6-819c-b8ca3af6e36c"
loose-group_replication_start_on_boot =  off
loose-group_replication_local_address  = "db2:23307"
loose-group_replication_group_seeds =  "db1:23306,db2:23307,db3:23308"
loose-group_replication_bootstrap_group =  off
loose-group_replication_single_primary_mode  = true
loose-group_replication_enforce_update_everywhere_checks  = false
Copier après la connexion

3db3上的my.cnf配置:

server-id=12003
transaction_write_set_extraction =  XXHASH64
loose-group_replication_group_name =  "5f847ff2-d701-11e6-819c-b8ca3af6e36c"
loose-group_replication_start_on_boot =  off
loose-group_replication_local_address  = "db3:23308"
loose-group_replication_group_seeds =  "db1:23306,db2:23307,db3:23308"
loose-group_replication_bootstrap_group =  off
loose-group_replication_single_primary_mode  = true
loose-group_replication_enforce_update_everywhere_checks  = false
Copier après la connexion

配置完后,重启3个db上的mysql服务,本次案例,我们选择5.2 配置文件配置方式实现。

6,启动mgr集群

开始构建group replication集群,通常操作命令

mysql>  CHANGE MASTER TO MASTER_USER=&#39;repl&#39;, MASTER_PASSWORD=&#39;rlpbright_1927@ys&#39; FOR CHANNEL &#39;group_replication_recovery&#39;;
Query OK, 0 rows affected, 2 warnings (0.02 sec)
 
mysql>
Copier après la connexion

Db1上建立基本主库master库:

# 设置group_replication_bootstrap_group为ON是为了标示以后加入集群的服务器以这台服务器为基准,以后加入的就不需要设置。
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 (1.03 sec)
 
mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+----------------------+-------------+--------------+
| CHANNEL_NAME         | MEMBER_ID  | MEMBER_HOST          | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+----------------------+-------------+--------------+
| group_replication_applier | 3d872c2e-d670-11e6-ac1f-b8ca3af6e36c | hch_test_dbm2_121_71 |   3317 | ONLINE  |
+---------------------------+--------------------------------------+----------------------+-------------+--------------+
1 row in set (0.00 sec)
 
mysql>
Copier après la connexion

Db2上启动group_replication:

Db2上mysql命令行上执行启动:
mysql>  START GROUP_REPLICATION;
Query OK, 0 rows affected (1.02 sec)
 
mysql>
 
db1上后台error log显示:
2017-01-10T07:37:39.946919Z 0 [Note] Plugin group_replication reported: &#39;getstart group_id 41e28b21&#39;
2017-01-10T07:58:47.624090Z 0 [Note] Plugin group_replication reported: &#39;getstart group_id 41e28b21&#39;
2017-01-10T07:58:53.116957Z 0 [Note] Plugin group_replication reported: &#39;Marking group replication view change with view_id 14840330835325176:6&#39;
 
再去master库db1上,查看group_replication成员,会有db2的显示
mysql>  SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+----------------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID   | MEMBER_HOST          | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+----------------------+-------------+--------------+
| group_replication_applier | 3d872c2e-d670-11e6-ac1f-b8ca3af6e36c | hch_test_dbm2_121_71 |        3317 | ONLINE       |
| group_replication_applier | fdf2b02e-d66f-11e6-98a8-18a99b76310d | bpe_service          |        3317 | ONLINE       |
+---------------------------+--------------------------------------+----------------------+-------------+--------------+
2 rows in set (0.00 sec)
 
mysql>
Copier après la connexion

Db3上启动group_replication:

-- Db3命令行上执行:
mysql> set global group_replication_allow_local_disjoint_gtids_join=ON;
Query OK, 0 rows affected (0.00 sec)
 
mysql> start group_replication;
Query OK, 0 rows affected (1.99 sec)
 
mysql>
 
-- 再去master库db1上,查看group_replication成员,会有db3的显示,而且已经是ONLINE了
mysql>  SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+----------------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID    | MEMBER_HOST          | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+----------------------+-------------+--------------+
| group_replication_applier | 3d872c2e-d670-11e6-ac1f-b8ca3af6e36c | hch_test_dbm2_121_71 |        3317 | ONLINE       |
| group_replication_applier | ef8ac2de-d671-11e6-9ba4-18a99b763071 | hch_test_web_1_24    |        3317 | ONLINE       |
| group_replication_applier | fdf2b02e-d66f-11e6-98a8-18a99b76310d | bpe_service          |        3317 | ONLINE       |
+---------------------------+--------------------------------------+----------------------+-------------+--------------+
3 rows in set (0.01 sec)
 
mysql>
 
-- db1上后台error log显示:
2017-01-10T08:00:28.866356Z 0 [Note] Plugin group_replication reported: &#39;getstart group_id 41e28b21&#39;
2017-01-10T08:00:54.699130Z 0 [Note] Plugin group_replication reported: &#39;getstart group_id 41e28b21&#39;
2017-01-10T08:00:56.567427Z 0 [Note] Plugin group_replication reported: &#39;Marking group replication view change with view_id 14840330835325176:9&#39;
Copier après la connexion

最后查看集群状态,都为ONLINE就表示OK:

mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+----------------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID   | MEMBER_HOST          | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+----------------------+-------------+--------------+
| group_replication_applier | 3d872c2e-d670-11e6-ac1f-b8ca3af6e36c | hch_test_dbm2_121_71 |        3317 | ONLINE       |
| group_replication_applier | ef8ac2de-d671-11e6-9ba4-18a99b763071 | hch_test_web_1_24    |        3317 | ONLINE       |
| group_replication_applier | fdf2b02e-d66f-11e6-98a8-18a99b76310d | bpe_service          |        3317 | ONLINE       |
+---------------------------+--------------------------------------+----------------------+-------------+--------------+
3 rows in set (0.00 sec)
 
mysql>
Copier après la connexion

7,验证集群复制功能

测试,在master库db1上建立测试库db1,测试表t1,录入一条数据

mysql> create database db1;
Query OK, 1 row affected (0.00 sec)
 
mysql> create table db1.t1(id int,cnvarchar(32));
Query OK, 0 rows affected (0.02 sec)
 
mysql>
mysql> insert into t1 select 1,&#39;a&#39;;
ERROR 3098 (HY000): The table does notcomply with the requirements by an external plugin.
mysql>
mysql> insert into t1(id,cn)values(1,&#39;a&#39;);
ERROR 3098 (HY000): The table does notcomply with the requirements by an external plugin.
mysql>
mysql>
-- # 这里原因是group_replaction环境下面,表必须有主键不然不允许往里insert值。所以修改表t1,将id字段设置程主键即可。
mysql> alter table t1 modify id intprimary key;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0  Warnings: 0
 
mysql> insert into t1 select 1,&#39;a&#39;;
Query OK, 1 row affected (0.01 sec)
Records: 1 Duplicates: 0  Warnings: 0
 
mysql>
Copier après la connexion

去db2/db3上可以看到数据已经同步过去

mysql> select * from db1.t1;
+----+------+
| id | cn  |
+----+------+
|  1| a    |
+----+------+
1 row in set (0.00 sec)
 
mysql>
Copier après la connexion

然后在db2/db3上执行inert操作,则拒绝,因为db2、db3为readonly

mysql> insert into t1 select 2,&#39;b&#39;;
ERROR 1290 (HY000): The MySQL server isrunning with the --super-read-only option so it cannot execute this statement
mysql>
Copier après la connexion

8,问题记录

8.1问题记录一

MySQL窗口报错:

ERROR 3092 (HY000): The server is notconfigured properly to be an active member of the group. Please see moredetails on error log.
后台ERROR LOG报错:
[ERROR] Plugin group_replication reported:&#39;This member has more executed transactions than those present in the group.
Local transactions: f16f7f74-c283-11e6-ae37-fa163ee40410:1 > Grouptransactions: 3c992270-c282-11e6-93bf-fa163ee40410:1,
 aaaaaa:1-5&#39;
 [ERROR]Plugin group_replication reported: &#39;The member contains transactions notpresent in the group. The member will now exit the group.&#39;
 [Note] Plugin group_replication reported: &#39;Toforce this member into the group you can use the group_replication_allow_local_disjoint_gtids_joinoption&#39;
Copier après la connexion

【解决办法】:

根据提示打开group_replication_allow_local_disjoint_gtids_join选项,mysql命令行执行:

mysql> set globalgroup_replication_allow_local_disjoint_gtids_join=ON;
Copier après la connexion

再执行开启组复制:

mysql> start group_replication;
Query OK, 0 rows affected (7.89 sec)
 
mysql>
Copier après la connexion

8.2 问题记录二RECOVERING

在db1上查询集群组成员

mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+----------------------+-------------+--------------+
| CHANNEL_NAME     | MEMBER_ID     | MEMBER_HOST     | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+----------------------+-------------+--------------+
| group_replication_applier | 3d872c2e-d670-11e6-ac1f-b8ca3af6e36c | hch_test_dbm2_121_71 |       3317 | ONLINE       |
| group_replication_applier | ef8ac2de-d671-11e6-9ba4-18a99b763071 | hch_test_web_1_24    |       3317 | RECOVERING   |
| group_replication_applier | fdf2b02e-d66f-11e6-98a8-18a99b76310d | bpe_service        |    3317 | RECOVERING   |
+---------------------------+--------------------------------------+----------------------+-------------+--------------+
3 rows in set (0.00 sec)
 
mysql>
Copier après la connexion

再查看后台error日志,

2017-01-10T09:17:39.449488Z 146 [ERROR] Slave I/O for channel &#39;group_replication_recovery&#39;: 
error connecting to master &#39;repl@hch_test_dbm2_121_71:3317&#39; - retry-time: 60  retries: 1, Error_code: 2003
2017-01-10T09:17:39.450289Z 146 [Note] Slave I/O thread for channel &#39;group_replication_recovery&#39; killed while connecting to master
2017-01-10T09:17:39.450449Z 146 [Note] Slave I/O thread exiting for channel &#39;group_replication_recovery&#39;, read up to log &#39;FIRST&#39;, position 4
2017-01-10T09:17:39.451579Z 144 [ERROR] Plugin group_replication reported: &#39;There was an error when connecting to the donor server. 
Check group replication recovery&#39;s connection credentials.&#39;
2017-01-10T09:17:39.452341Z 144 [Note] Plugin group_replication reported: &#39;Retrying group recovery connection with another donor. Attempt 2/10&#39;
2017-01-10T09:17:39.457834Z 0 [Note] Plugin group_replication reported: &#39;Marking group replication view change with view_id 14840330835325176:25&#39;
2017-01-10T09:18:39.456629Z 144 [Note] &#39;CHANGE MASTER TO FOR CHANNEL &#39;group_replication_recovery&#39; executed&#39;. 
Previous state master_host=&#39;hch_test_dbm2_121_71&#39;, master_port= 3317, master_log_file=&#39;&#39;, master_log_pos= 4, master_bind=&#39;&#39;. 
New state master_host=&#39;hch_test_dbm2_121_71&#39;, master_port= 3317, master_log_file=&#39;&#39;, master_log_pos= 4, master_bind=&#39;&#39;.
2017-01-10T09:18:39.485250Z 144 [Note] Plugin group_replication reported: &#39;Establishing 
connection to a group replication recovery donor 3d872c2e-d670-11e6-ac1f-b8ca3af6e36c at hch_test_dbm2_121_71 port: 3317.&#39;
2017-01-10T09:18:39.489356Z 150 [Warning] Storing MySQL user name or 
password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and 
PASSWORD connection options for START SLAVE; see the &#39;START SLAVE Syntax&#39; in the MySQL Manual for more information.
2017-01-10T09:18:39.493511Z 150 [ERROR] Slave I/O for channel &#39;group_replication_recovery&#39;: 
error connecting to master &#39;repl@hch_test_dbm2_121_71:3317&#39; - retry-time: 60  retries: 1, Error_code: 2005
2017-01-10T09:18:39.493912Z 150 [Note] Slave I/O thread for channel &#39;group_replication_recovery&#39; killed while connecting to master
2017-01-10T09:18:39.494069Z 150 [Note] Slave I/O thread exiting for channel &#39;group_replication_recovery&#39;, read up to log &#39;FIRST&#39;, position 4
2017-01-10T09:18:39.495155Z 144 [ERROR] Plugin group_replication reported: 
&#39;There was an error when connecting to the donor server. Check group replication recovery&#39;s connection credentials.&#39;
2017-01-10T09:18:39.496838Z 144 [Note] Plugin group_replication reported: &#39;Retrying group recovery connection with another donor. Attempt 3/10&#39;
Copier après la connexion

【解决办法】:

看报错[ERROR] Slave I/O for channel'group_replication_recovery': error connecting to master 'repl@hch_test_dbm2_121_71:3317'- retry-time: 60 retries: 1, Error_code:2005,连接master库不上,所以问题在这里,我们赋予的复制账号是iprepl@'192.168.%',所以还需要做一个hostname(hch_test_dbm2_121_71)db1ip地址192.168.121.71的映射关系。

建立hostname和ip映射

vim /etc/hosts
192.168.121.71 db1 hch_test_dbm2_121_71                                          
192.168.121.111 db2 bpe_service
192.168.121.24 db3 hch_test_web_1_24
Copier après la connexion

然后在db2上执行如下命令后重新开启group_replication即可。

mysql> stop group_replication;
Query OK, 0 rows affected (0.02 sec)                                                 
 
mysql> start group_replication;
Query OK, 0 rows affected (5.68 sec)
 
mysql>
Copier après la connexion

再去master库db1上,查看group_replication成员,会有db2的显示

mysql>  SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+----------------------+-------------+--------------+
| CHANNEL_NAME   | MEMBER_ID     | MEMBER_HOST          | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+----------------------+-------------+--------------+
| group_replication_applier | 3d872c2e-d670-11e6-ac1f-b8ca3af6e36c | hch_test_dbm2_121_71 |        3317 | ONLINE       |
| group_replication_applier | fdf2b02e-d66f-11e6-98a8-18a99b76310d | bpe_service          |        3317 | ONLINE       |
+---------------------------+--------------------------------------+----------------------+-------------+--------------+
2 rows in set (0.00 sec)
 
mysql>
Copier après la connexion

8.3问题记录三

操作问题

mysql>
mysql> START GROUP_REPLICATION;
ERROR 3092 (HY000): The server is notconfigured properly to be an active member of the group. Please see moredetails on error log.
Copier après la connexion

【解决办法】:

mysql> SET GLOBALgroup_replication_bootstrap_group = ON;
Query OK, 0 rows affected (0.00 sec)
 
mysql> START GROUP_REPLICATION;
Query OK, 0 rows affected (1.03 sec)
 
mysql>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal