搜尋
首頁資料庫mysql教程詳細介紹MySQL Group Replication[Single-Primary Mode]的建置部署過程

1,關於MySQL Group Replication

基於群組的複製(Group-basedReplication)是一種被使用在容錯系統中的技術。 Replication-group(複製群組)是由能夠相互通訊的多個伺服器(節點)組成的。

在通訊層,Groupreplication實作了一系列的機制:例如原子訊息(atomicmessage delivery)和全序化訊息(totalorderingof messages)。

這些原子化,抽象化的機制,為實現更先進的資料庫複製方案提供了強有力的支援。

MySQL Group Replication正是基於這些技術和概念,實作了多主全更新的複製協定。

簡而言之,一個Replication-group就是一組節點,每個節點都可以獨立執行事務,而讀寫事務則會在於group內的其他節點進行協調之後再commit。

因此,當一個交易準備提交時,會自動在group內進行原子性的廣播,告知其他節點變更了什麼內容/執行了什麼交易。

這種原子廣播的方式,使得這個事務在每一個節點上都保持著同樣順序。

這表示每個節點都以同樣的順序,接收了相同的事務日誌,所以每個節點以同樣的順序重演了這些事務日誌,最後整個group保持了完全一致的狀態

 

然而,不同的節點上執行的事務之間有可能存在資源爭用。這種現象容易出現在兩個不同的並發事務上。

假設在不同的節點上有兩個並發事務,更新了同一行數據,那麼就會發生資源爭用。

面對這種情況,GroupReplication判定先提交的事務為有效事務,會在整個group裡面重演,後提交的事務會直接中斷,或者回滾,最後丟棄掉。

 

因此,這也是一個無共享的複製方案,每個節點都保存了完整的資料副本。看如下圖01.png,描述了具體的工作流程,能夠簡潔的和其他方案進行比較。這個複製方案,在某種程度上,和資料庫狀態機(DBSM)的Replication方法比較類似。

 

 

2,安裝mysql5.7.17

#官方下載,不過官方只保留最新的version,5.7.17這個url地址不一定長期有效,所以,需要的不一定有,我這裡在百度雲盤保留了下來,版本是5.7.17,可以隨時去下載使用,

 

在三台db伺服器上面設定/etc/hosts映射,如下:

# #192.168.121.71     db1                                                                                                                                                               

192.168.121.24     db3

########################################################################n]


已安裝的資料庫伺服器:

3317#192.168.121.111(db2)3317/data/mysql/data#12002#192.168.121.24(db3)

已安裝的資料庫伺服器                                           

資料目錄                                     

# #          

#192.168.121.71(db1)

##/data/mysql/data

12001        

#1C

#3317 /data/mysql/data

12003

  #3
,建立複製環境


設定hostname和ip映射
在db1、db2、db3上都設定
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
在db1/db2/db3上建立複製帳號:

#

GRANT REPLICATION SLAVE ON *.* TO  'repl'@'192.168.%' IDENTIFIED BY 'rlpbright_1927@ys';

4,安裝group replication

外掛程式

在db1、db2、db3上依序安裝group replication外掛程式
mysql> INSTALL PLUGIN group_replication SONAME 'group_replication.so';                        
Query OK, 0 rows affected (0.01 sec)
 
mysql>
plugin-load=group_replication或直接在設定檔

my.cnf中設定:

查看group replication元件
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>
#5設定:

,設定group replication參數#確保

binlog_format

# #row

格式。

mysql> show variables like 'binlog_format';                                            
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW   |
+---------------+-------+
1 row in set (0.00 sec)
 
mysql>
兩種設定方式,線上新增OR 設定檔#5.1線上新增

############(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  = 'db1:6606';
 set @@global.group_replication_group_seeds =  'db2:6607,db3:6608';
### ##########(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 = 'db1:6606';
Query OK, 0 rows affected (0.00 sec)
 
mysql> set  @@global.group_replication_group_seeds = 'db2:6607,db3:6608';
Query OK, 0 rows affected (0.00 sec)
 
mysql>
### ###### #########(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 = 'db2:6607';
Query OK, 0 rows affected (0.00 sec)
 
mysql>  set @@global.group_replication_group_seeds =  'db1:6606,db3:6608';
Query OK, 0 rows affected (0.01 sec)
 
mysql>
### #########(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 = 'db3:6608'  ;
Query OK, 0 rows affected (0.00 sec)
 
mysql>   set @@global.group_replication_group_seeds  = 'db1:6606,db2:6607' ;
Query OK, 0 rows affected (0.00 sec)
 
mysql>
############

 

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

 

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

 

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

 

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

6,启动mgr集群

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

mysql>  CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='rlpbright_1927@ys' FOR CHANNEL 'group_replication_recovery';
Query OK, 0 rows affected, 2 warnings (0.02 sec)
 
mysql>

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>

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: 'getstart group_id 41e28b21'
2017-01-10T07:58:47.624090Z 0 [Note] Plugin group_replication reported: 'getstart group_id 41e28b21'
2017-01-10T07:58:53.116957Z 0 [Note] Plugin group_replication reported: 'Marking group replication view change with view_id 14840330835325176:6'
 
再去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>

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: 'getstart group_id 41e28b21'
2017-01-10T08:00:54.699130Z 0 [Note] Plugin group_replication reported: 'getstart group_id 41e28b21'
2017-01-10T08:00:56.567427Z 0 [Note] Plugin group_replication reported: 'Marking group replication view change with view_id 14840330835325176:9'

最后查看集群状态,都为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>

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,'a';
ERROR 3098 (HY000): The table does notcomply with the requirements by an external plugin.
mysql>
mysql> insert into t1(id,cn)values(1,'a');
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,'a';
Query OK, 1 row affected (0.01 sec)
Records: 1 Duplicates: 0  Warnings: 0
 
mysql>

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

mysql> select * from db1.t1;
+----+------+
| id | cn  |
+----+------+
|  1| a    |
+----+------+
1 row in set (0.00 sec)
 
mysql>

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

mysql> insert into t1 select 2,'b';
ERROR 1290 (HY000): The MySQL server isrunning with the --super-read-only option so it cannot execute this statement
mysql>

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:'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'
 [ERROR]Plugin group_replication reported: 'The member contains transactions notpresent in the group. The member will now exit the group.'
 [Note] Plugin group_replication reported: 'Toforce this member into the group you can use the group_replication_allow_local_disjoint_gtids_joinoption'

 

【解决办法】:

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

mysql> set globalgroup_replication_allow_local_disjoint_gtids_join=ON;

再执行开启组复制:

mysql> start group_replication;
Query OK, 0 rows affected (7.89 sec)
 
mysql>

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>

再查看后台error日志,

2017-01-10T09:17:39.449488Z 146 [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: 2003
2017-01-10T09:17:39.450289Z 146 [Note] Slave I/O thread for channel 'group_replication_recovery' killed while connecting to master
2017-01-10T09:17:39.450449Z 146 [Note] Slave I/O thread exiting for channel 'group_replication_recovery', read up to log 'FIRST', position 4
2017-01-10T09:17:39.451579Z 144 [ERROR] Plugin group_replication reported: 'There was an error when connecting to the donor server. 
Check group replication recovery's connection credentials.'
2017-01-10T09:17:39.452341Z 144 [Note] Plugin group_replication reported: 'Retrying group recovery connection with another donor. Attempt 2/10'
2017-01-10T09:17:39.457834Z 0 [Note] Plugin group_replication reported: 'Marking group replication view change with view_id 14840330835325176:25'
2017-01-10T09:18:39.456629Z 144 [Note] 'CHANGE MASTER TO FOR CHANNEL 'group_replication_recovery' executed'. 
Previous state master_host='hch_test_dbm2_121_71', master_port= 3317, master_log_file='', master_log_pos= 4, master_bind=''. 
New state master_host='hch_test_dbm2_121_71', master_port= 3317, master_log_file='', master_log_pos= 4, master_bind=''.
2017-01-10T09:18:39.485250Z 144 [Note] Plugin group_replication reported: 'Establishing 
connection to a group replication recovery donor 3d872c2e-d670-11e6-ac1f-b8ca3af6e36c at hch_test_dbm2_121_71 port: 3317.'
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 'START SLAVE Syntax' in the MySQL Manual for more information.
2017-01-10T09:18:39.493511Z 150 [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
2017-01-10T09:18:39.493912Z 150 [Note] Slave I/O thread for channel 'group_replication_recovery' killed while connecting to master
2017-01-10T09:18:39.494069Z 150 [Note] Slave I/O thread exiting for channel 'group_replication_recovery', read up to log 'FIRST', position 4
2017-01-10T09:18:39.495155Z 144 [ERROR] Plugin group_replication reported: 
'There was an error when connecting to the donor server. Check group replication recovery's connection credentials.'
2017-01-10T09:18:39.496838Z 144 [Note] Plugin group_replication reported: 'Retrying group recovery connection with another donor. Attempt 3/10'

【解决办法】:

看报错[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

然后在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>

再去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>

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.

 

【解决办法】:

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>

以上是詳細介紹MySQL Group Replication[Single-Primary Mode]的建置部署過程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
MySQL的位置:數據庫和編程MySQL的位置:數據庫和編程Apr 13, 2025 am 12:18 AM

MySQL在數據庫和編程中的地位非常重要,它是一個開源的關係型數據庫管理系統,廣泛應用於各種應用場景。 1)MySQL提供高效的數據存儲、組織和檢索功能,支持Web、移動和企業級系統。 2)它使用客戶端-服務器架構,支持多種存儲引擎和索引優化。 3)基本用法包括創建表和插入數據,高級用法涉及多表JOIN和復雜查詢。 4)常見問題如SQL語法錯誤和性能問題可以通過EXPLAIN命令和慢查詢日誌調試。 5)性能優化方法包括合理使用索引、優化查詢和使用緩存,最佳實踐包括使用事務和PreparedStatemen

MySQL:從小型企業到大型企業MySQL:從小型企業到大型企業Apr 13, 2025 am 12:17 AM

MySQL適合小型和大型企業。 1)小型企業可使用MySQL進行基本數據管理,如存儲客戶信息。 2)大型企業可利用MySQL處理海量數據和復雜業務邏輯,優化查詢性能和事務處理。

幻影是什麼讀取的,InnoDB如何阻止它們(下一個鍵鎖定)?幻影是什麼讀取的,InnoDB如何阻止它們(下一個鍵鎖定)?Apr 13, 2025 am 12:16 AM

InnoDB通過Next-KeyLocking機制有效防止幻讀。 1)Next-KeyLocking結合行鎖和間隙鎖,鎖定記錄及其間隙,防止新記錄插入。 2)在實際應用中,通過優化查詢和調整隔離級別,可以減少鎖競爭,提高並發性能。

mysql:不是編程語言,而是...mysql:不是編程語言,而是...Apr 13, 2025 am 12:03 AM

MySQL不是一門編程語言,但其查詢語言SQL具備編程語言的特性:1.SQL支持條件判斷、循環和變量操作;2.通過存儲過程、觸發器和函數,用戶可以在數據庫中執行複雜邏輯操作。

MySQL:世界上最受歡迎的數據庫的簡介MySQL:世界上最受歡迎的數據庫的簡介Apr 12, 2025 am 12:18 AM

MySQL是一種開源的關係型數據庫管理系統,主要用於快速、可靠地存儲和檢索數據。其工作原理包括客戶端請求、查詢解析、執行查詢和返回結果。使用示例包括創建表、插入和查詢數據,以及高級功能如JOIN操作。常見錯誤涉及SQL語法、數據類型和權限問題,優化建議包括使用索引、優化查詢和分錶分區。

MySQL的重要性:數據存儲和管理MySQL的重要性:數據存儲和管理Apr 12, 2025 am 12:18 AM

MySQL是一個開源的關係型數據庫管理系統,適用於數據存儲、管理、查詢和安全。 1.它支持多種操作系統,廣泛應用於Web應用等領域。 2.通過客戶端-服務器架構和不同存儲引擎,MySQL高效處理數據。 3.基本用法包括創建數據庫和表,插入、查詢和更新數據。 4.高級用法涉及復雜查詢和存儲過程。 5.常見錯誤可通過EXPLAIN語句調試。 6.性能優化包括合理使用索引和優化查詢語句。

為什麼要使用mysql?利益和優勢為什麼要使用mysql?利益和優勢Apr 12, 2025 am 12:17 AM

選擇MySQL的原因是其性能、可靠性、易用性和社區支持。 1.MySQL提供高效的數據存儲和檢索功能,支持多種數據類型和高級查詢操作。 2.採用客戶端-服務器架構和多種存儲引擎,支持事務和查詢優化。 3.易於使用,支持多種操作系統和編程語言。 4.擁有強大的社區支持,提供豐富的資源和解決方案。

描述InnoDB鎖定機制(共享鎖,獨家鎖,意向鎖,記錄鎖,間隙鎖,下一鍵鎖)。描述InnoDB鎖定機制(共享鎖,獨家鎖,意向鎖,記錄鎖,間隙鎖,下一鍵鎖)。Apr 12, 2025 am 12:16 AM

InnoDB的鎖機制包括共享鎖、排他鎖、意向鎖、記錄鎖、間隙鎖和下一個鍵鎖。 1.共享鎖允許事務讀取數據而不阻止其他事務讀取。 2.排他鎖阻止其他事務讀取和修改數據。 3.意向鎖優化鎖效率。 4.記錄鎖鎖定索引記錄。 5.間隙鎖鎖定索引記錄間隙。 6.下一個鍵鎖是記錄鎖和間隙鎖的組合,確保數據一致性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用