亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

MGR 實戰

對一個企業級系統來說,數據庫是非常核心的組成部分,數據庫的可用性尤為重要。因此,數據庫架構在設計時必須考慮足夠的高可用,才可以確保業務的連續性,不會因為故障而導致業務中斷。在高可用這一章,我們一起來學習一套時髦的 MySQL 高可用架構:3節點 MGR+3節點 ProxySQL+3節點 Consul

1. 一套時髦的高可用架構

提起 MySQL的高可用,大家都會想到 MHA、MMM、PXC、MGR,特別是 MGR,近幾年成為新一代網紅,也是 MySQL 官方主推的一套高可用方案。在 MGR 的基礎上,結合一些成熟的開源軟件,可以組合出幾乎滿足所有業務場景的高可用方案。

在這里介紹一套時髦的高可用架構:3節點 MGR+3節點 ProxySQL+3節點 Consul

該架構主要分為三層:

  1. Consul:dns解析、服務發現、健康檢查;
  2. ProxySQL:負載均衡、讀寫分離、故障發現;
  3. MGR:單主模式、故障轉移、強一致性。

圖片描述

2. MGR

下面從實戰的角度一步步搭建 MGR 環境。

2.1 基本環境

MySQL-1 MySQL-2 MySQL-3
MySQL版本 MySQL 5.7.30 MySQL 5.7.30 MySQL 5.7.30
操作系統 CentOS 7.8 CentOS 7.8 CentOS 7.8
服務器IP 192.168.0.1 192.168.0.2 192.168.0.3
端口 對外服務端口-3066
MGR通訊端口-33061
對外服務端口-3066
MGR通訊端口-33061
對外服務端口-3066
MGR通訊端口-33061
服務器配置 2c4g 2c4g 2c4g

2.2 安裝配置

1. 安裝插件:

--安裝mgr插件
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
--檢查
show plugins

2. 配置 hosts:

vi /etc/hosts
192.168.0.1 mysql-1
192.168.0.2 mysql-2
192.168.0.3 mysql-3

3. 修改 auto.cnf:

如果三臺 MySQL 目錄的 server-uuid 一致,需進行修改

vi /mysql/data/auto.cnf
--主庫的server-uuid的末尾建議設置成0001,依次類推,這樣方便識別
[auto]
server-uuid=c734397b-3b0a-11e8-add1-fa163e8e0001

4. 配置 my.cnf:

#Group Replication
binlog_checksum = NONE
transaction_write_set_extraction = XXHASH64
slave_preserve_commit_order = true
loose-group_replication_group_name = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'
loose-group_replication_start_on_boot = off
loose-group_replication_local_address = '192.168.0.1:33061'
loose-group_replication_group_seeds ='192.168.0.2:33061, 192.168.0.3:33061, 192.168.0.1:33061'
loose-group_replication_bootstrap_group = off
# single primary
loose-group_replication_single_primary_mode = on
# multi primary
#loose-group_replication_single_primary_mode = off
#loose-group_replication_enforce_update_everywhere_checks=true

5. 啟動MGR-主庫

--配置復制用戶
set sql_log_bin=off;
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%' IDENTIFIED BY '123456';
set sql_log_bin=on;
 
--建立channel
CHANGE MASTER TO MASTER_USER='repl_user', MASTER_PASSWORD='123456' FOR CHANNEL 'group_replication_recovery';

--第一個節點啟動時,需要設置bootstrap_group
SET GLOBAL group_replication_bootstrap_group = ON;

--啟動MGR
START GROUP_REPLICATION;

--取消bootstrap_group
SET GLOBAL group_replication_bootstrap_group = OFF;

--查看當前MGR成員信息
SELECT * FROM performance_schema.replication_group_members;

6. 啟動MGR-從庫

--配置復制用戶
set sql_log_bin=off;
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%' IDENTIFIED BY '123456';
set sql_log_bin=on;
 
--建立channel
CHANGE MASTER TO MASTER_USER='repl_user', MASTER_PASSWORD='123456' FOR CHANNEL 'group_replication_recovery';

--啟動MGR
START GROUP_REPLICATION;

7. 查看MGR

--查看當前MGR成員信息
SELECT * FROM performance_schema.replication_group_members;
--查看只讀參數
show variables like '%read_only%';

2.3 基礎維護

1. 啟動MGR

START GROUP_REPLICATION;

2. 停止MGR

STOP GROUP_REPLICATION;

3. 小結

本小節主要介紹了當前主流的高可用架構:3節點 MGR+3節點 ProxySQL+3節點 Consul,以及從實戰角度介紹如何搭建 MGR 環境。

MGR 在 MySQL 高可用領域,屬于新一代網紅,也是 MySQL 官方主推的高可用方案,掌握 MGR 這門技術已經變得越來越重要。