그룹 기반 복제는 내결함성 시스템 기술에서 사용되는 방법입니다. 복제 그룹은 서로 통신할 수 있는 여러 개의 서버(노드)로 구성됩니다.
통신 계층에서 그룹 복제는 원자성 메시지 전달 및 메시지 전체 순서 지정과 같은 일련의 메커니즘을 구현합니다.
이러한 원자 및 추상 메커니즘은 고급 데이터베이스 복제 솔루션 구현을 위한 강력한 지원을 제공합니다.
MySQL 그룹 복제는 이러한 기술과 개념을 기반으로 완전히 업데이트된 다중 마스터 복제 프로토콜을 구현합니다.
간단히 말하면 복제 그룹은 노드 그룹입니다. 각 노드는 독립적으로 트랜잭션을 실행할 수 있으며 트랜잭션 읽기 및 쓰기는 커밋하기 전에 그룹 내 다른 노드와 조정됩니다.
따라서 트랜잭션을 제출할 준비가 되면 그룹 내에서 자동으로 자동으로 방송되어 어떤 내용이 변경되었는지/어떤 트랜잭션이 수행되었는지 다른 노드에 알립니다.
이 원자 브로드캐스트 방법은 모든 노드에서 이 트랜잭션을 동일한 순서로 유지합니다.
즉, 각 노드는 동일한 트랜잭션 로그를 동일한 순서로 수신하므로 각 노드는 이러한 트랜잭션 로그를 동일한 순서로 재생하며 궁극적으로 전체 그룹은 상태 완전히 일관되게 유지됩니다.
그러나 서로 다른 노드에서 실행되는 트랜잭션 간에 리소스 경합이 있을 수 있습니다. 이 현상은 두 개의 서로 다른 동시 트랜잭션에서 쉽게 발생합니다.
동일한 데이터 행을 업데이트하는 두 개의 동시 트랜잭션이 서로 다른 노드에 있다고 가정하면 리소스 경합이 발생합니다.
이러한 상황에 직면한 GroupReplication은 먼저 제출된 트랜잭션이 유효한 트랜잭션이라고 판단하고 나중에 제출된 트랜잭션이 직접 중단되거나 롤백된 후 최종적으로 폐기됩니다.
따라서 이 역시 비공유 복제 방식이며 각 노드는 데이터의 전체 복사본을 저장합니다. 특정 작업 흐름을 설명하고 다른 솔루션과 간결하게 비교할 수 있는 다음 그림 01.png를 참조하세요. 이 복제 방식은 DBSM(데이터베이스 상태 머신)의 복제 방법과 어느 정도 유사합니다.
공식 다운로드인데 공식에서는 최신 버전만 유지하고 있습니다. URL 주소 5.7.17은 오랫동안 유효하지 않을 수 있으므로 Baidu Cloud Disk에 버전은 5.7.17로 유지해 두었습니다. . 언제든지 다운로드하여 사용할 수 있습니다.
다음과 같이 3개의 db 서버에 /etc/hosts 매핑을 설정합니다.
|
설치된 데이터베이스 서버:
| 포트 | > top">/data/mysql/data | 12001 | ||||||||||||||||
192.168.121.111 (db2) |
3317 |
/data/mysql/data |
| ||||||||||||||||
192.168.121.24 (db3) | 3317 | /data/mysql/data | 12003 |
호스트 이름 및 IP 매핑 설정
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.%' IDENTIFIED BY 'rlpbright_1927@ys';
그룹 복제플러그인 그룹 복제 플러그인 mysql> INSTALL PLUGIN group_replication SONAME 'group_replication.so';
Query OK, 0 rows affected (0.01 sec)
mysql>
그룹 복제 구성요소 보기
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>
(1) 配置命令如下,具体到某一个db节点会有所调整,大部分参数是一致的: mysql> show variables like 'binlog_format'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | binlog_format | ROW | +---------------+-------+ 1 row in set (0.00 sec) mysql> 로그인 후 복사
(2) 在db1执行过程如下: 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'; 로그인 후 복사
(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.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> 로그인 후 복사
(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.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> 로그인 후 복사 |
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>
<🎜>(1) <🎜>특정<🎜>db에 대한 구성 명령은 다음과 같습니다. <🎜 >노드가 조정되며 대부분의 매개변수는 동일합니다.<🎜><🎜>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 로그인 후 복사 로그인 후 복사 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 로그인 후 복사 로그인 후 복사 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 로그인 후 복사 로그인 후 복사 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> 로그인 후 복사 로그인 후 복사 |
(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 로그인 후 복사 로그인 후 복사
(2)db2上的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 로그인 후 복사 로그인 후 복사
(3)db3上的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 配置文件配置方式实现。
开始构建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>
测试,在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>
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>
在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库不上,所以问题在这里,我们赋予的复制账号是ip的repl@'192.168.%',所以还需要做一个hostname(hch_test_dbm2_121_71)和db1的ip地址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>
操作问题
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 그룹 복제[단일 기본 모드]의 구성 및 배포 프로세스에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!