规划
HOSTNAME | IP | ROLE |
---|---|---|
node1 | 192.168.2.61 | first node |
node2 | 192.168.2.62 | |
node3 | 192.168.2.63 |
三节点重置主从信息
mysql> reset master ;
Query OK, 0 rows affected (0.01 sec)
mysql> stop slave ;
Query OK, 0 rows affected (0.00 sec)
mysql> reset slave all ;
Query OK, 0 rows affected (0.02 sec)
修改配置文件
[mysql@node3 ~]$ cat /mysql1/mysql1.cnf
[client]
port = 3306
socket = /tmp/mysql1.sock
[mysqld]
port = 3306
socket = /tmp/mysql1.sock
#skip-grant-tables
basedir = /usr/local/mysql
datadir = /mysql1/data
pid-file = /mysql1/mysql1.pid
log-error = /mysql1/mysql1.log
log-bin=/mysql1/data/mysql-bin
server_id = 3
#gtid
gtid_mode=on
log_slave_updates=1
enforce_gtid_consistency=1
#rep
slave-parallel-type=LOGICAL_CLOCK
slave-parallel-workers=16
master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log_recovery=ON
binlog_checksum=NONE
slave_preserve_commit_order=1
transaction_write_set_extraction =XXHASH64 # off
loose-group_replication_group_name ="a876d35e-9110-11e6-a365-842b2b5909d6" #
loose-group_replication_start_on_boot =off # off
loose-group_replication_local_address ="192.168.2.63:24900" #
loose-group_replication_group_seeds ="192.168.2.61:24900,192.168.2.62:24900,192.168.2.63:24900"
loose-group_replication_bootstrap_group =off
启动MGR
启动MYSQL实例(三节点)
[mysql@node1 ~]$ mysqld_safe --defaults-file=/mysql1/mysql1.cnf &
[1] 12148
[mysql@node1 ~]$ 2018-08-08T12:52:47.022449Z mysqld_safe Logging to '/mysql1/mysql1.log'.
2018-08-08T12:52:47.049333Z mysqld_safe Starting mysqld daemon with databases from /mysql1/data
[mysql@node2 ~]$ mysqld_safe --defaults-file=/mysql1/mysql1.cnf &
[1] 12052
[mysql@node2 ~]$ 2018-08-08T19:21:33.338535Z mysqld_safe Logging to '/mysql1/mysql1.log'.
2018-08-08T19:21:33.374104Z mysqld_safe Starting mysqld daemon with databases from /mysql1/data
[mysql@node3 ~]$ clearmysqld_safe --defaults-file=/mysql1/mysql1.cnf &
[1] 5831
启动第一节点MGR
mysql> INSTALL PLUGIN group_replication SONAME 'group_replication.so';
Query OK, 0 rows affected (0.19 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 (3.57 sec)
启动其他两个节点MGR(命令相同)
mysql> INSTALL PLUGIN group_replication SONAME 'group_replication.so';
Query OK, 0 rows affected (0.04 sec)
mysql> CHANGE MASTER TO MASTER_USER='dao', MASTER_PASSWORD='dao' FOR CHANNEL 'group_replication_recovery';
Query OK, 0 rows affected, 2 warnings (0.04 sec)
mysql> START GROUP_REPLICATION ;
Query OK, 0 rows affected (7.16 sec)
MGR信息查看
查看是否为主节点
- node1
mysql> SELECT IF((SELECT @@server_uuid) = (SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME= 'group_replication_primary_member'), 1, 0) as is_primary_node ,@@server_id;
+-----------------+-------------+
| is_primary_node | @@server_id |
+-----------------+-------------+
| 1 | 1 |
+-----------------+-------------+
1 row in set (0.00 sec)
- node2
mysql> SELECT IF((SELECT @@server_uuid) = (SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME= 'group_replication_primary_member'), 1, 0) as is_primary_node ,@@server_id;
+-----------------+-------------+
| is_primary_node | @@server_id |
+-----------------+-------------+
| 0 | 2 |
+-----------------+-------------+
1 row in set (0.00 sec)
- node3
mysql> SELECT IF((SELECT @@server_uuid) = (SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME= 'group_replication_primary_member'), 1, 0) as is_primary_node ,@@server_id;
+-----------------+-------------+
| is_primary_node | @@server_id |
+-----------------+-------------+
| 0 | 3 |
+-----------------+-------------+
1 row in set (0.00 sec)
查看主节点信息
mysql> SELECT * FROM performance_schema.replication_group_members WHERE MEMBER_ID = ( SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME= 'group_replication_primary_member' );
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 03fde241-9a55-11e8-aa12-000c291f013a | node1 | 3306 | ONLINE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
1 row in set (0.01 sec)
查看成员状态
mysql> select * from performance_schema.replication_group_member_stats \G;
*************************** 1. row ***************************
CHANNEL_NAME: group_replication_applier
VIEW_ID: 15337333448542910:6
MEMBER_ID: 03fde241-9a55-11e8-aa12-000c291f013a
COUNT_TRANSACTIONS_IN_QUEUE: 0
COUNT_TRANSACTIONS_CHECKED: 0
COUNT_CONFLICTS_DETECTED: 0
COUNT_TRANSACTIONS_ROWS_VALIDATING: 0
TRANSACTIONS_COMMITTED_ALL_MEMBERS: a876d35e-9110-11e6-a365-842b2b5909d6:1-3
LAST_CONFLICT_FREE_TRANSACTION:
1 row in set (0.00 sec)
将MGR从单主模式变为多主模式
停止MGR
- node3
mysql> stop group_replication ;
Query OK, 0 rows affected (1.02 sec)
- node2
mysql> stop group_replication ;
Query OK, 0 rows affected (1.02 sec)
- node1
mysql> stop group_replication ;
Query OK, 0 rows affected (1.02 sec)
修改参数
- node3
mysql> set global group_replication_single_primary_mode =off ;
Query OK, 0 rows affected (0.00 sec)
- node2
mysql> set global group_replication_single_primary_mode =off ;
Query OK, 0 rows affected (0.00 sec)
- node1
mysql> set global group_replication_single_primary_mode =off ;
Query OK, 0 rows affected (0.00 sec)
启动MGR
- node1
mysql> start group_replication ;
Query OK, 0 rows affected (2.16 sec)
- node2
mysql> start group_replication ;
Query OK, 0 rows affected (6.50 sec)
- node3
mysql> start group_replication ;
Query OK, 0 rows affected (6.63 sec)
查看各节点是否为主节点
- node1
mysql> SELECT IF((SELECT @@server_uuid) = (SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME= 'group_replication_primary_member'), 1, 0) as is_primary_node ,@@server_id;
+-----------------+-------------+
| is_primary_node | @@server_id |
+-----------------+-------------+
| 0 | 1 |
+-----------------+-------------+
1 row in set (0.00 sec)
- node2
mysql> SELECT IF((SELECT @@server_uuid) = (SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME= 'group_replication_primary_member'), 1, 0) as is_primary_node ,@@server_id;
+-----------------+-------------+
| is_primary_node | @@server_id |
+-----------------+-------------+
| 0 | 2 |
+-----------------+-------------+
1 row in set (0.00 sec)
- node3
mysql> SELECT IF((SELECT @@server_uuid) = (SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME= 'group_replication_primary_member'), 1, 0) as is_primary_node ,@@server_id;
+-----------------+-------------+
| is_primary_node | @@server_id |
+-----------------+-------------+
| 0 | 3 |
+-----------------+-------------+