【DB寶18】在Docker中安裝使用MySQL高可用之MGR


 

目錄

1、建立3臺MySQL環境2、修改MySQL參數3、重啓MySQL環境4、安裝MGR插件(全部節點執行)5、設置複製帳號(全部節點執行)6、啓動MGR單主模式  6.一、啓動MGR,在主庫(172.72.0.15)上執行  6.二、其餘節點加入MGR,在從庫(172.72.0.16,172.72.0.17)上執行7、多主和單主模式切換  7.一、查詢當前模式  7.二、函數實現多主和單主切換    7.2.一、單主切多主模式    7.2.二、多主切單主模式  7.三、手動切換    7.3.一、單主切多主模式    7.3.二、多主切單主模式8、測試同步9、MGR新增節點  9.一、建立新MySQL節點  9.二、新節點安裝MGR插件  9.三、新節點設置複製帳號  9.四、在原3節點執行修改參數  9.五、新節點加入  9.六、查看全部節點10、重置MGR配置
  

1、建立3臺MySQL環境

 1# 拉取鏡像
 2docker pull mysql:8.0.20
 3# 建立專用網絡
 4docker network create --subnet=172.72.0.0/24 mysql-network
 5
 6# 建立目錄存儲數據
 7mkdir -p /usr/local/mysql/lhrmgr15/conf.d
 8mkdir -p /usr/local/mysql/lhrmgr15/data
 9mkdir -p /usr/local/mysql/lhrmgr16/conf.d
10mkdir -p /usr/local/mysql/lhrmgr16/data
11mkdir -p /usr/local/mysql/lhrmgr17/conf.d
12mkdir -p /usr/local/mysql/lhrmgr17/data
13
14
15# 建立3個節點的MySQL
16docker run -d --name mysql8020mgr33065 \
17   -h lhrmgr15 -p 33065:3306 --net=mysql-network --ip 172.72.0.15 \
18   -v /usr/local/mysql/lhrmgr15/conf.d:/etc/mysql/conf.d -v /usr/local/mysql/lhrmgr15/data:/var/lib/mysql/ \
19   -e MYSQL_ROOT_PASSWORD=lhr \
20   -e TZ=Asia/Shanghai \
21   mysql:8.0.20
22
23docker run -d --name mysql8020mgr33066 \
24   -h lhrmgr16 -p 33066:3306 --net=mysql-network --ip 172.72.0.16 \
25   -v /usr/local/mysql/lhrmgr16/conf.d:/etc/mysql/conf.d -v /usr/local/mysql/lhrmgr16/data:/var/lib/mysql/ \
26   -e MYSQL_ROOT_PASSWORD=lhr \
27   -e TZ=Asia/Shanghai \
28   mysql:8.0.20
29
30docker run -d --name mysql8020mgr33067 \
31   -h lhrmgr17 -p 33067:3306 --net=mysql-network --ip 172.72.0.17 \
32   -v /usr/local/mysql/lhrmgr17/conf.d:/etc/mysql/conf.d -v /usr/local/mysql/lhrmgr17/data:/var/lib/mysql/ \
33   -e MYSQL_ROOT_PASSWORD=lhr \
34   -e TZ=Asia/Shanghai \
35   mysql:8.0.20
     

2、修改MySQL參數

  1cat > /usr/local/mysql/lhrmgr15/conf.d/my.cnf <<"EOF"
  2[mysqld]
  3user=mysql
  4port=3306
  5character_set_server=utf8mb4
  6secure_file_priv=''
  7server-id = 802033065
  8default-time-zone = '+8:00'
  9log_timestamps = SYSTEM
 10log-bin = 
 11binlog_format=row
 12binlog_checksum=NONE
 13log-slave-updates=1
 14skip-name-resolve
 15auto-increment-increment=2
 16auto-increment-offset=1
 17gtid-mode=ON
 18enforce-gtid-consistency=on
 19default_authentication_plugin=mysql_native_password
 20max_allowed_packet = 500M
 21
 22master_info_repository=TABLE
 23relay_log_info_repository=TABLE
 24relay_log=lhrmgr15-relay-bin-ip15
 25
 26
 27transaction_write_set_extraction=XXHASH64
 28loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
 29loose-group_replication_start_on_boot=OFF
 30loose-group_replication_local_address= "172.72.0.15:33061"
 31loose-group_replication_group_seeds= "172.72.0.15:33061,172.72.0.16:33062,172.72.0.17:33063"
 32loose-group_replication_bootstrap_group=OFF
 33loose-group_replication_ip_whitelist="172.72.0.15,172.72.0.16,172.72.0.17"
 34
 35report_host=172.72.0.15
 36report_port=3306
 37
 38EOF
 39
 40
 41cat >  /usr/local/mysql/lhrmgr16/conf.d/my.cnf <<"EOF"
 42[mysqld]
 43user=mysql
 44port=3306
 45character_set_server=utf8mb4
 46secure_file_priv=''
 47server-id = 802033066
 48default-time-zone = '+8:00'
 49log_timestamps = SYSTEM
 50log-bin = 
 51binlog_format=row
 52binlog_checksum=NONE
 53log-slave-updates=1
 54gtid-mode=ON
 55enforce-gtid-consistency=ON
 56skip_name_resolve
 57default_authentication_plugin=mysql_native_password
 58max_allowed_packet = 500M
 59
 60master_info_repository=TABLE
 61relay_log_info_repository=TABLE
 62relay_log=lhrmgr16-relay-bin-ip16
 63
 64
 65transaction_write_set_extraction=XXHASH64
 66loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
 67loose-group_replication_start_on_boot=OFF
 68loose-group_replication_local_address= "172.72.0.16:33062"
 69loose-group_replication_group_seeds= "172.72.0.15:33061,172.72.0.16:33062,172.72.0.17:33063"
 70loose-group_replication_bootstrap_group=OFF
 71loose-group_replication_ip_whitelist="172.72.0.15,172.72.0.16,172.72.0.17"
 72
 73report_host=172.72.0.16
 74report_port=3306
 75
 76EOF
 77
 78
 79cat > /usr/local/mysql/lhrmgr17/conf.d/my.cnf <<"EOF"
 80[mysqld]
 81user=mysql
 82port=3306
 83character_set_server=utf8mb4
 84secure_file_priv=''
 85server-id = 802033067
 86default-time-zone = '+8:00'
 87log_timestamps = SYSTEM
 88log-bin = 
 89binlog_format=row
 90binlog_checksum=NONE
 91log-slave-updates=1
 92gtid-mode=ON
 93enforce-gtid-consistency=ON
 94skip_name_resolve
 95default_authentication_plugin=mysql_native_password
 96max_allowed_packet = 500M
 97
 98
 99master_info_repository=TABLE
100relay_log_info_repository=TABLE
101relay_log=lhrmgr16-relay-bin-ip16
102
103
104transaction_write_set_extraction=XXHASH64
105loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
106loose-group_replication_start_on_boot=OFF
107loose-group_replication_local_address= "172.72.0.17:33063"
108loose-group_replication_group_seeds= "172.72.0.15:33061,172.72.0.16:33062,172.72.0.17:33063"
109loose-group_replication_bootstrap_group=OFF
110loose-group_replication_ip_whitelist="172.72.0.15,172.72.0.16,172.72.0.17"
111
112report_host=172.72.0.17
113report_port=3306
114
115EOF
     

3、重啓MySQL環境

 1# 重啓MySQL
 2docker restart mysql8020mgr33065 mysql8020mgr33066 mysql8020mgr33067
 3docker ps
 4
 5# 進入MySQL
 6docker exec -it mysql8020mgr33065 bash
 7docker exec -it mysql8020mgr33065 mysql -uroot -plhr
 8
 9#遠程鏈接MySQL
10mysql -uroot -plhr -h192.168.1.35 -P33065 
11mysql -uroot -plhr -h192.168.1.35 -P33066 
12mysql -uroot -plhr -h192.168.1.35 -P33067 
13
14# 查看MySQL日誌
15docker logs -f --tail 10 mysql8020mgr33065
16docker logs -f --tail 10 mysql8020mgr33066
17docker logs -f --tail 10 mysql8020mgr33067
18
19# 查看MySQL的主機名、server_id和server_uuid
20mysql -uroot -plhr -h192.168.1.35 -P33065 -e "select @@hostname,@@server_id,@@server_uuid"
21mysql -uroot -plhr -h192.168.1.35 -P33066 -e "select @@hostname,@@server_id,@@server_uuid"
22mysql -uroot -plhr -h192.168.1.35 -P33067 -e "select @@hostname,@@server_id,@@server_uuid"
 

結果:mysql

 1[root@docker35 ~]# mysql -uroot -plhr -h192.168.1.35 -P33065 -e "select @@hostname,@@server_id,@@server_uuid"
 2mysql: [Warning] Using a password on the command line interface can be insecure.
 3+------------+-------------+--------------------------------------+
 4| @@hostname | @@server_id | @@server_uuid                        |
 5+------------+-------------+--------------------------------------+
 6| lhrmgr15   |   802033065 | 611717fe-d785-11ea-9342-0242ac48000f |
 7+------------+-------------+--------------------------------------+
 8[root@docker35 ~]# mysql -uroot -plhr -h192.168.1.35 -P33066 -e "select @@hostname,@@server_id,@@server_uuid"
 9mysql: [Warning] Using a password on the command line interface can be insecure.
10+------------+-------------+--------------------------------------+
11| @@hostname | @@server_id | @@server_uuid                        |
12+------------+-------------+--------------------------------------+
13| lhrmgr16   |   802033066 | 67090f47-d785-11ea-b76c-0242ac480010 |
14+------------+-------------+--------------------------------------+
15[root@docker35 ~]# mysql -uroot -plhr -h192.168.1.35 -P33067 -e "select @@hostname,@@server_id,@@server_uuid"
16mysql: [Warning] Using a password on the command line interface can be insecure.
17+------------+-------------+--------------------------------------+
18| @@hostname | @@server_id | @@server_uuid                        |
19+------------+-------------+--------------------------------------+
20| lhrmgr17   |   802033067 | 678cf064-d785-11ea-b8ce-0242ac480011 |
21+------------+-------------+--------------------------------------+
22[root@docker35 ~]#
     

4、安裝MGR插件(全部節點執行)

 1MySQL [(none)]> INSTALL PLUGIN group_replication SONAME 'group_replication.so';
 2Query OK, 0 rows affected (0.23 sec)
 3
 4MySQL [(none)]> show plugins;
 5+---------------------------------+----------+--------------------+----------------------+---------+
 6| Name                            | Status   | Type               | Library              | License |
 7+---------------------------------+----------+--------------------+----------------------+---------+
 8| group_replication               | ACTIVE   | GROUP REPLICATION  | group_replication.so | GPL     |
 9+---------------------------------+----------+--------------------+----------------------+---------+
1045 rows in set (0.00 sec)
     

5、設置複製帳號(全部節點執行)

1SET SQL_LOG_BIN=0;
2CREATE USER repl@'%' IDENTIFIED BY 'lhr';
3GRANT REPLICATION SLAVE ON *.* TO repl@'%';
4FLUSH PRIVILEGES;
5SET SQL_LOG_BIN=1;
6CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='lhr' FOR CHANNEL 'group_replication_recovery';
 

執行過程:sql

 1MySQL [(none)]> SET SQL_LOG_BIN=0;
 2Query OK, 0 rows affected (0.00 sec)
 3
 4MySQL [(none)]> CREATE USER repl@'%' IDENTIFIED BY 'lhr';
 5Query OK, 0 rows affected (0.01 sec)
 6
 7MySQL [(none)]> GRANT REPLICATION SLAVE ON *.* TO repl@'%';
 8Query OK, 0 rows affected (0.00 sec)
 9
10MySQL [(none)]> FLUSH PRIVILEGES;
11Query OK, 0 rows affected (0.00 sec)
12
13MySQL [(none)]> SET SQL_LOG_BIN=1;
14Query OK, 0 rows affected (0.00 sec)
15
16MySQL [(none)]> CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='lhr' FOR CHANNEL 'group_replication_recovery';
17Query OK, 0 rows affected, 1 warning (0.04 sec)
     

6、啓動MGR單主模式

 

6.一、啓動MGR,在主庫(172.72.0.15)上執行

1SET GLOBAL group_replication_bootstrap_group=ON;
2START GROUP_REPLICATION;
3SET GLOBAL group_replication_bootstrap_group=OFF;
4
5-- 查看MGR組信息 
6SELECT * FROM performance_schema.replication_group_members;
 

執行過程:docker

 1MySQL [(none)]> SET GLOBAL group_replication_bootstrap_group=ON;
 2Query OK, 0 rows affected (0.00 sec)
 3
 4MySQL [(none)]> START GROUP_REPLICATION;
 5Query OK, 0 rows affected (3.49 sec)
 6
 7MySQL [(none)]> SET GLOBAL group_replication_bootstrap_group=OFF;
 8Query OK, 0 rows affected (0.00 sec)
 9
10MySQL [(none)]> SELECT * FROM performance_schema.replication_group_members;
11+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
12| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
13+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
14| group_replication_applier | 611717fe-d785-11ea-9342-0242ac48000f | 172.72.0.15 |        3306 | ONLINE       | PRIMARY     | 8.0.20         |
15+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
161 row in set (0.01 sec)
     

6.二、其餘節點加入MGR,在從庫(172.72.0.16,172.72.0.17)上執行

1START GROUP_REPLICATION;
2-- 查看MGR組信息
3SELECT * FROM performance_schema.replication_group_members;
 

執行結果:bootstrap

1MySQL [(none)]> SELECT * FROM performance_schema.replication_group_members;
2+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
3| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
4+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
5| group_replication_applier | 611717fe-d785-11ea-9342-0242ac48000f | 172.72.0.15 |        3306 | ONLINE       | PRIMARY     | 8.0.20         |
6| group_replication_applier | 67090f47-d785-11ea-b76c-0242ac480010 | 172.72.0.16 |        3306 | ONLINE       | SECONDARY   | 8.0.20         |
7| group_replication_applier | 678cf064-d785-11ea-b8ce-0242ac480011 | 172.72.0.17 |        3306 | ONLINE       | SECONDARY   | 8.0.20         |
8+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
93 rows in set (0.01 sec)
 

能夠看到,3個節點狀態爲online,而且主節點爲172.72.0.15,只有主節點能夠寫入,其餘節點只讀,MGR單主模式搭建成功。bash

 

7、多主和單主模式切換

 

7.一、查詢當前模式

 1MySQL [(none)]>  show variables like '%group_replication_single_primary_mode%';
 2+---------------------------------------+-------+
 3| Variable_name                         | Value |
 4+---------------------------------------+-------+
 5| group_replication_single_primary_mode | ON    |
 6+---------------------------------------+-------+
 71 row in set (0.01 sec)
 8
 9MySQL [(none)]> SELECT @@group_replication_single_primary_mode;
10+-----------------------------------------+
11| @@group_replication_single_primary_mode |
12+-----------------------------------------+
13|                                       1 |
14+-----------------------------------------+
151 row in set (0.00 sec)
 

參數group_replication_single_primary_mode爲ON,表示單主模式。網絡

 

7.二、函數實現多主和單主切換

函數切換:從MySQL 8.0.13開始,可使用函數進行在線修改MGR模式。app

1-- 單主切多主
2select group_replication_switch_to_multi_primary_mode(); 
3-- 多主切單主,入參須要傳入主庫的server_uuid
4select group_replication_switch_to_single_primary_mode('@@server_uuid') ;
5
6-- 查看組信息
7SELECT * FROM performance_schema.replication_group_members;
     

7.2.一、單主切多主模式

 1MySQL [(none)]> SELECT @@group_replication_single_primary_mode;
 2+-----------------------------------------+
 3| @@group_replication_single_primary_mode |
 4+-----------------------------------------+
 5|                                       1 |
 6+-----------------------------------------+
 71 row in set (0.00 sec)
 8
 9MySQL [(none)]> SELECT * FROM performance_schema.replication_group_members;
10+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
11| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
12+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
13| group_replication_applier | 611717fe-d785-11ea-9342-0242ac48000f | 172.72.0.15 |        3306 | ONLINE       | PRIMARY     | 8.0.20         |
14| group_replication_applier | 67090f47-d785-11ea-b76c-0242ac480010 | 172.72.0.16 |        3306 | ONLINE       | SECONDARY   | 8.0.20         |
15| group_replication_applier | 678cf064-d785-11ea-b8ce-0242ac480011 | 172.72.0.17 |        3306 | ONLINE       | SECONDARY   | 8.0.20         |
16+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
173 rows in set (0.00 sec)
18
19MySQL [(none)]> select group_replication_switch_to_multi_primary_mode();
20+--------------------------------------------------+
21| group_replication_switch_to_multi_primary_mode() |
22+--------------------------------------------------+
23| Mode switched to multi-primary successfully.     |
24+--------------------------------------------------+
251 row in set (1.01 sec)
26
27MySQL [(none)]> SELECT * FROM performance_schema.replication_group_members;
28+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
29| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
30+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
31| group_replication_applier | 611717fe-d785-11ea-9342-0242ac48000f | 172.72.0.15 |        3306 | ONLINE       | PRIMARY     | 8.0.20         |
32| group_replication_applier | 67090f47-d785-11ea-b76c-0242ac480010 | 172.72.0.16 |        3306 | ONLINE       | PRIMARY     | 8.0.20         |
33| group_replication_applier | 678cf064-d785-11ea-b8ce-0242ac480011 | 172.72.0.17 |        3306 | ONLINE       | PRIMARY     | 8.0.20         |
34+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
353 rows in set (0.00 sec)
36MySQL [(none)]> SELECT @@group_replication_single_primary_mode;
37+-----------------------------------------+
38| @@group_replication_single_primary_mode |
39+-----------------------------------------+
40|                                       0 |
41+-----------------------------------------+
     

7.2.二、多主切單主模式

 1MySQL [(none)]> SELECT @@group_replication_single_primary_mode;
 2+-----------------------------------------+
 3| @@group_replication_single_primary_mode |
 4+-----------------------------------------+
 5|                                       0 |
 6+-----------------------------------------+
 71 row in set (0.00 sec)
 8
 9MySQL [(none)]> select group_replication_switch_to_single_primary_mode('67090f47-d785-11ea-b76c-0242ac480010') ;
10+-----------------------------------------------------------------------------------------+
11| group_replication_switch_to_single_primary_mode('67090f47-d785-11ea-b76c-0242ac480010') |
12+-----------------------------------------------------------------------------------------+
13| Mode switched to single-primary successfully.                                           |
14+-----------------------------------------------------------------------------------------+
151 row in set (1.02 sec)
16
17MySQL [(none)]> SELECT * FROM performance_schema.replication_group_members;
18+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
19| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
20+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
21| group_replication_applier | 611717fe-d785-11ea-9342-0242ac48000f | 172.72.0.15 |        3306 | ONLINE       | SECONDARY   | 8.0.20         |
22| group_replication_applier | 67090f47-d785-11ea-b76c-0242ac480010 | 172.72.0.16 |        3306 | ONLINE       | PRIMARY     | 8.0.20         |
23| group_replication_applier | 678cf064-d785-11ea-b8ce-0242ac480011 | 172.72.0.17 |        3306 | ONLINE       | SECONDARY   | 8.0.20         |
24+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
253 rows in set (0.00 sec)
26
27MySQL [(none)]> SELECT @@group_replication_single_primary_mode;
28+-----------------------------------------+
29| @@group_replication_single_primary_mode |
30+-----------------------------------------+
31|                                       1 |
32+-----------------------------------------+
331 row in set (0.00 sec)
     

7.三、手動切換

MGR切換模式須要從新啓動組複製,因些須要在全部節點上先關閉組複製,設置 group_replication_single_primary_mode=OFF 等參數,再啓動組複製。ide

 

7.3.一、單主切多主模式

一、中止組複製(全部節點執行):函數

1stop group_replication;
2set global group_replication_single_primary_mode=OFF;
3set global group_replication_enforce_update_everywhere_checks=ON;
 

二、隨便選擇某個節點執行測試

1SET GLOBAL group_replication_bootstrap_group=ON; 
2START GROUP_REPLICATION; 
3SET GLOBAL group_replication_bootstrap_group=OFF;
 

三、其餘節點執行

1START GROUP_REPLICATION;
 

四、查看組信息,全部節點的 MEMBER_ROLE 都爲 PRIMARY

1MySQL [(none)]> SELECT * FROM performance_schema.replication_group_members;
2+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
3| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
4+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
5| group_replication_applier | 611717fe-d785-11ea-9342-0242ac48000f | 172.72.0.15 |        3306 | ONLINE       | PRIMARY     | 8.0.20         |
6| group_replication_applier | 67090f47-d785-11ea-b76c-0242ac480010 | 172.72.0.16 |        3306 | ONLINE       | PRIMARY     | 8.0.20         |
7| group_replication_applier | 678cf064-d785-11ea-b8ce-0242ac480011 | 172.72.0.17 |        3306 | ONLINE       | PRIMARY     | 8.0.20         |
8+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
93 rows in set (0.00 sec)
 

能夠看到全部節點狀態都是online,角色都是PRIMARY,MGR多主模式切換成功。

 

7.3.二、多主切單主模式

一、全部節點執行

1stop group_replication;
2set global group_replication_enforce_update_everywhere_checks=OFF;
3set global group_replication_single_primary_mode=ON;
 

二、主節點(172.72.0.16)執行

1SET GLOBAL group_replication_bootstrap_group=ON; 
2START GROUP_REPLICATION; 
3SET GLOBAL group_replication_bootstrap_group=OFF;
 

三、從節點(172.72.0.1五、172.72.0.17)執行

1START GROUP_REPLICATION;
 

四、查看MGR組信息

1MySQL [(none)]> SELECT * FROM performance_schema.replication_group_members;
2+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
3| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
4+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
5| group_replication_applier | 611717fe-d785-11ea-9342-0242ac48000f | 172.72.0.15 |        3306 | ONLINE       | SECONDARY   | 8.0.20         |
6| group_replication_applier | 67090f47-d785-11ea-b76c-0242ac480010 | 172.72.0.16 |        3306 | ONLINE       | PRIMARY     | 8.0.20         |
7| group_replication_applier | 678cf064-d785-11ea-b8ce-0242ac480011 | 172.72.0.17 |        3306 | ONLINE       | SECONDARY   | 8.0.20         |
8+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
93 rows in set (0.00 sec)
     

8、測試同步

在主節點上執行如下命令,而後在其它節點查詢:

 1create database lhrdb;
 2CREATE TABLE lhrdb.`tb1` (
 3 `id` int(11) NOT NULL AUTO_INCREMENT,
 4 `hostname` varchar(100) DEFAULT NULL,
 5 `server_id` varchar(100) DEFAULT NULL,
 6 PRIMARY KEY (`id`)
 7) ENGINE=InnoDB DEFAULT CHARSET=latin1;
 8
 9
10insert into lhrdb.tb1(hostname,server_id) select @@hostname,@@server_id;
11select * from lhrdb.tb1;
12
13-- 3個節點查詢出來的值同樣
14MySQL [(none)]> select * from lhrdb.tb1;
15+----+----------+-----------+
16| id | hostname | server_id |
17+----+----------+-----------+
18|  1 | lhrmgr16 | 802033066 |
19+----+----------+-----------+
201 row in set (0.02 sec)
     

9、MGR新增節點

 

9.一、建立新MySQL節點

 1mkdir -p /usr/local/mysql/lhrmgr18/conf.d
 2mkdir -p /usr/local/mysql/lhrmgr18/data
 3
 4docker run -d --name mysql8020mgr33068 \
 5  -h lhrmgr18 -p 33068:3306 --net=mysql-network --ip 172.72.0.18 \
 6  -v /usr/local/mysql/lhrmgr18/conf.d:/etc/mysql/conf.d -v /usr/local/mysql/lhrmgr18/data:/var/lib/mysql/ \
 7  -e MYSQL_ROOT_PASSWORD=lhr \
 8  -e TZ=Asia/Shanghai \
 9  mysql:8.0.20
10
11
12
13cat > /usr/local/mysql/lhrmgr18/conf.d/my.cnf <<"EOF"
14[mysqld]
15user=mysql
16port=3306
17character_set_server=utf8mb4
18secure_file_priv=''
19server-id = 802033068
20log-bin = 
21binlog_format=row
22binlog_checksum=NONE
23log-slave-updates=1
24skip-name-resolve
25auto-increment-increment=2
26auto-increment-offset=1
27gtid-mode=ON
28enforce-gtid-consistency=on
29default_authentication_plugin=mysql_native_password
30max_allowed_packet = 500M
31log_slave_updates=on
32
33master_info_repository=TABLE
34relay_log_info_repository=TABLE
35relay_log=lhrmgr18-relay-bin-ip18
36
37transaction_write_set_extraction=XXHASH64
38loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
39loose-group_replication_start_on_boot=OFF
40loose-group_replication_local_address= "172.72.0.18:33064"
41loose-group_replication_group_seeds= "172.72.0.15:33061,172.72.0.16:33062,172.72.0.17:33063,172.72.0.18:33064"
42loose-group_replication_bootstrap_group=OFF
43loose-group_replication_ip_whitelist="172.72.0.15,172.72.0.16,172.72.0.17,172.72.0.18"
44report_host=172.72.0.18
45report_port=3306
46
47EOF
48
49
50
51docker restart mysql8020mgr33068
52
53
54docker ps
55mysql -uroot -plhr -h192.168.1.35 -P33065 -e "select @@hostname,@@server_id,@@server_uuid"
56mysql -uroot -plhr -h192.168.1.35 -P33066 -e "select @@hostname,@@server_id,@@server_uuid"
57mysql -uroot -plhr -h192.168.1.35 -P33067 -e "select @@hostname,@@server_id,@@server_uuid"
58mysql -uroot -plhr -h192.168.1.35 -P33068 -e "select @@hostname,@@server_id,@@server_uuid"
59mysql -uroot -plhr -h192.168.1.35 -P33065 
60mysql -uroot -plhr -h192.168.1.35 -P33066 
61mysql -uroot -plhr -h192.168.1.35 -P33067 
62mysql -uroot -plhr -h192.168.1.35 -P33068 
63docker logs -f --tail 10 mysql8020mgr33065
64docker logs -f --tail 10 mysql8020mgr33066
65docker logs -f --tail 10 mysql8020mgr33067
66docker logs -f --tail 10 mysql8020mgr33068
     

9.二、新節點安裝MGR插件

1-- 安裝MGR插件(新增節點執行)
2INSTALL PLUGIN group_replication SONAME 'group_replication.so';
3show plugins;
     

9.三、新節點設置複製帳號

1-- 設置複製帳號(新增節點執行)
2SET SQL_LOG_BIN=0;
3CREATE USER repl@'%' IDENTIFIED BY 'lhr';
4GRANT REPLICATION SLAVE ON *.* TO repl@'%';
5FLUSH PRIVILEGES;
6SET SQL_LOG_BIN=1;
7CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='lhr' FOR CHANNEL 'group_replication_recovery';
     

9.四、在原3節點執行修改參數

1set global group_replication_group_seeds='172.72.0.15:33061,172.72.0.16:33062,172.72.0.17:33063,172.72.0.18:33064';
2stop group_replication;
3set global group_replication_ip_whitelist="172.72.0.15,172.72.0.16,172.72.0.17,172.72.0.18";
4start group_replication;
     

9.五、新節點加入

 1-- 4個節點須要保證如下2個參數的值一致
 2MySQL [(none)]> select @@group_replication_enforce_update_everywhere_checks,@@group_replication_single_primary_mode;
 3+------------------------------------------------------+-----------------------------------------+
 4| @@group_replication_enforce_update_everywhere_checks | @@group_replication_single_primary_mode |
 5+------------------------------------------------------+-----------------------------------------+
 6|                                                    0 |                                       1 |
 7+------------------------------------------------------+-----------------------------------------+
 8
 9-- 若是不一致,那麼須要修改
10set global group_replication_single_primary_mode=ON;
11set global group_replication_enforce_update_everywhere_checks=OFF;
12CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='lhr' FOR CHANNEL 'group_replication_recovery';
13
14-- 新節點加入
15start group_replication;
     

9.六、查看全部節點

 1MySQL [lhrdb]> SELECT * FROM performance_schema.replication_group_members;
 2+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
 3| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
 4+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
 5| group_replication_applier | 611717fe-d785-11ea-9342-0242ac48000f | 172.72.0.15 |        3306 | ONLINE       | PRIMARY     | 8.0.20         |
 6| group_replication_applier | 67090f47-d785-11ea-b76c-0242ac480010 | 172.72.0.16 |        3306 | ONLINE       | SECONDARY   | 8.0.20         |
 7| group_replication_applier | 678cf064-d785-11ea-b8ce-0242ac480011 | 172.72.0.17 |        3306 | ONLINE       | SECONDARY   | 8.0.20         |
 8| group_replication_applier | e4d6bf4b-d78d-11ea-b1b6-0242ac480012 | 172.72.0.18 |        3306 | ONLINE       | SECONDARY   | 8.0.20         |
 9+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
104 rows in set (0.31 sec)
     

10、重置MGR配置

若是須要重置,那麼須要執行以下命令:

1STOP GROUP_REPLICATION;
2reset master;
3SET SQL_LOG_BIN=1;
4CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='lhr' FOR CHANNEL 'group_replication_recovery';
5start GROUP_REPLICATION;
 
相關文章
相關標籤/搜索