MGR部署
場景描述:
使用三台服務器搭建一個簡單MGR集群,使用MySQL 5.7.24版本,服務器列表為:
192.168.1.147 192.168.1.148 192.168.1.149
1、使用普通配置文件啟動MySQL服務,安裝MGR插件(所有節點執行)
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
2、調整MySQL各節點的配置文件並重啟MySQL服務(所有節點執行)
## config master server-id = 17218228149 log-bin = mysql-bin master_info_repository = TABLE binlog_format = ROW expire_logs_days = 7 sync_binlog = 1 gtid_mode = on enforce-gtid-consistency = true binlog_rows_query_log_events = on
binlog_checksum = NONE ## config slave skip-slave-start slave-parallel-workers = 8 slave-parallel-type = LOGICAL_CLOCK slave_preserve_commit_order = 1 log_slave_updates = 1 report_host = 192.168.1.149 ## config relay log relay-log = relay-log relay_log_recovery = ON sync_relay_log = 0 relay_log_info_repository = TABLE ## config group replication transaction_write_set_extraction = XXHASH64 loose-group_replication_group_name = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaa01" loose-group_replication_start_on_boot = OFF loose-group_replication_bootstrap_group = OFF loose-group_replication_local_address = "192.168.1.149:33581" loose-group_replication_group_seeds = "192.168.1.147:33581,192.168.1.148:33581,192.168.1.149:33581" loose-group_replication_ip_whitelist = "192.168.1.147,192.168.1.148,192.168.1.149"
未安裝MGR插件前在配置文件加入MGR配置會報錯。
MGR配置說明:上面黃色部分參數在很多配置文件中都沒提到,但很可能會導致部署失敗,尤其是loose-group_replication_ip_whitelist參數。
3、配置MGR通信賬號,並清理MASTER(所有節點執行)
CREATE USER repl@'%' IDENTIFIED BY 'repl'; GRANT REPLICATION SLAVE ON *.* TO repl@'%'; RESET MASTER;
4、創建MGR依賴的復制環境(所有節點執行)
CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='repl' FOR CHANNEL 'group_replication_recovery';
5、在主節點上啟動MGR(在節點192.168.1.147上執行)
SET GLOBAL group_replication_bootstrap_group=ON; START group_replication; SET GLOBAL group_replication_bootstrap_group=off;
6、在輔助節點上啟動MGR(在節點192.168.1.148和在節點192.168.1.149上執行)
START group_replication;
7、搭建完成后,可以使用下面語句查看狀態:
## 查看各節點狀態 SELECT * FROM performance_schema.replication_group_members; ## 查看當前MGR模式(單主還是多主) SELECT @@group_replication_single_primary_mode;
8、判斷節點狀態
## 查看當前節點狀態 SELECT member_state FROM performance_schema.replication_group_members WHERE member_id=@@server_uuid; ## 通過節點是否可寫來判斷群集是否為主節點 SELECT * FROM performance_schema.global_variables WHERE variable_name IN ('read_only', 'super_read_only');
MGR成員的五種狀態:
ONLINE: The member is in a fully functioning state. RECOVERING: The server has joined a group from which it is retrieving data. OFFLINE: The group replication plugin is installed but has not been started. ERROR: The member has encountered an error, either during applying transactions or during the recovery phase, and is not participating in the group's transactions. UNREACHABLE: The failure detection process suspects that this member cannot be contacted, because the group messages have timed out.
新增MGR節點
目前MySQL不支持自動擴展新節點並將全量數據同步到新節點,因此需要:
1、備份任一節點數據(MySQLDump或Xtrabackup)至新節點並還原
2、在新節點上設置與備份數據對應的Executed_Gtid_Set
3、在新節點上執行下面命令直接啟動MGR復制即可。
CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='repl' FOR CHANNEL 'group_replication_recovery'; START GROUP_REPLICATION;