1. 程式人生 > >MySQL Group Replication 動態新增成員節點

MySQL Group Replication 動態新增成員節點

1. 背景

前面文章已經介紹如何部署MySQL GR 的兩種模式:

在前面的部署裡面,因為是預先知道需要部署的組節點規模,所以我們能夠在my.cnf裡面體現出組成員資訊。但是,前面的部署並沒有體現出動態新增組節點。

這篇文章介紹如何動態地往一個組裡面新增新的成員。

前提: MySQL GR 3節點(s1、s2、s3)部署成功,模式定為Multi-Primary Mode,Single-Primary Mode也是一樣的處理。

目標: 不重啟已有GR節點的基礎上,新增新成員s4、s5,組成5節點的GR。

2. 部署過程

假設已經通過3節點的部署(部署參考上面的部落格)

2.1 線上修改已有GR節點配置

分別登陸s1、s2、s3,執行以下命令,修改GR配置:

mysql> set global group_replication_group_seeds="127.0.0.1:24901,127.0.0.1:24902,127.0.0.1:24903,127.0.0.1:24904,127.0.0.1:24905";
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like '%group_replication_group_seeds%';
+-------------------------------+---------------------------------------------------------------------------------+
| Variable_name | Value | +-------------------------------+---------------------------------------------------------------------------------+ | group_replication_group_seeds | 127.0.0.1:24901,127.0.0.1:24902,127.0.0.1:24903,127.0.0.1:24904,127.0.0.1:24905 | +-------------------------------+---------------------------------------------------------------------------------+
1 row in set (0.00 sec)

2.2 部署s4

安裝s4:

mysql-5.7/bin/mysqld --initialize-insecure --basedir=$PWD/mysql-5.7 --datadir=$PWD/data/s4

增加配置s4.cnf:

# server configuration
[mysqld]
datadir=/dba/mysql/data/s4
basedir=/dba/mysql/mysql-5.7/

port=24804
socket=/dba/mysql/data/s4/s4.sock

server_id=4
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW

transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "127.0.0.1:24904"
loose-group_replication_group_seeds= "127.0.0.1:24901,127.0.0.1:24902,127.0.0.1:24903,127.0.0.1:24904,127.0.0.1:24905"
loose-group_replication_bootstrap_group= off
loose-group_replication_single_primary_mode=false
loose-group_replication_enforce_update_everywhere_checks=true

啟動s4:

nohup mysql-5.7/bin/mysqld --defaults-file=data/s4/s4.cnf >data/s4/nohup.out 2>data/s4/nohup.out &

使用以下命令登陸s4:

mysql -uroot -h127.0.0.1 -P24804 --skip-password

修改root密碼:

SET SQL_LOG_BIN=0;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'mysql';
SET SQL_LOG_BIN=1;

建立gr所需要使用者並授權:

SET SQL_LOG_BIN=0;
CREATE USER [email protected]'%';
GRANT REPLICATION SLAVE ON *.* TO [email protected]'%' IDENTIFIED BY 'rpl_pass';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='rpl_pass' FOR CHANNEL 'group_replication_recovery';

安裝組複製外掛並開啟外掛

INSTALL PLUGIN group_replication SONAME 'group_replication.so';

START GROUP_REPLICATION;

驗證s4已經加入GR叢集:

mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 933a5345-d321-11e6-b971-fa163ee40410 | yourhost  |       24801 | ONLINE       |
| group_replication_applier | 95155949-d325-11e6-b68e-fa163ee40410 | yourhost  |       24804 | ONLINE       |
| group_replication_applier | 9abe6249-d321-11e6-bb5c-fa163ee40410 | yourhost  |       24802 | ONLINE       |
| group_replication_applier | a1c89c34-d321-11e6-bbbc-fa163ee40410 | yourhost  |       24803 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
4 rows in set (0.00 sec)

2.3 部署s5

與s4相同的部署即可以將s5加入GR叢集:

s5.cnf配置:

# server configuration
[mysqld]
datadir=/dba/mysql/data/s5
basedir=/dba/mysql/mysql-5.7/

port=24805
socket=/dba/mysql/data/s5/s5.sock

server_id=5
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW

transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "127.0.0.1:24905"
loose-group_replication_group_seeds= "127.0.0.1:24901,127.0.0.1:24902,127.0.0.1:24903,127.0.0.1:24904,127.0.0.1:24905"
loose-group_replication_bootstrap_group= off
loose-group_replication_single_primary_mode=false
loose-group_replication_enforce_update_everywhere_checks=true

啟動s5

nohup mysql-5.7/bin/mysqld --defaults-file=data/s5/s5.cnf >data/s5/nohup.out 2>data/s5/nohup.out &

其他後續步驟省略,依據s4的部署執行即可。

最後也成功將s5加入GR叢集:

mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 933a5345-d321-11e6-b971-fa163ee40410 | yourhost  |       24801 | ONLINE       |
| group_replication_applier | 95155949-d325-11e6-b68e-fa163ee40410 | yourhost  |       24804 | ONLINE       |
| group_replication_applier | 9abe6249-d321-11e6-bb5c-fa163ee40410 | yourhost  |       24802 | ONLINE       |
| group_replication_applier | a1c89c34-d321-11e6-bbbc-fa163ee40410 | yourhost  |       24803 | ONLINE       |
| group_replication_applier | e973e06c-d327-11e6-98bc-fa163ee40410 | yourhost  |       24805 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
5 rows in set (0.01 sec)

2.4 後續操作

到這裡我們已經完成了s4和s5的動態新增,當然,為了下次s1、s2、s3重啟後gr配置仍然能夠生效,我們需要修改s1.cnf、s2.cnf和s3.cnf裡面的一個配置項為:

loose-group_replication_group_seeds= "127.0.0.1:24901,127.0.0.1:24902,127.0.0.1:24903,127.0.0.1:24904,127.0.0.1:24905"

這樣能夠確保下次重啟這些節點,GR的配置能夠是最新的配置。

相關推薦

MySQL Group Replication 動態新增成員節點

1. 背景 前面文章已經介紹如何部署MySQL GR 的兩種模式: 在前面的部署裡面,因為是預先知道需要部署的組節點規模,所以我們能夠在my.cnf裡面體現出組成員資訊。但是,前面的部署並沒有體現出動態新增組節點。 這篇文章介紹如何動態地往一個組裡面新

Mysql Group Replication關閉和啟動所有的組成員的注意點

由於的我mgr建立在虛擬機器上面(即使是正式環境,如果計劃內的停機或者斷電都需要關閉所有的節點),如何關閉所有的組成員,關閉的順序還是比較重要的。我的環境是一個primary,多個slave的架構,qht131為parmary,其它qht132,qht133,qht134為s

MySQL Group Replication增加節點

在上一篇文章中,我們大概介紹了Mysql Group Replication的構架及叢集搭建步驟。那麼我們知道,一組優秀的叢集環境有一個很必要的特性,那就是可拓展性。Group Replication的拓展性怎麼樣呢?我們設定如下幾個場景,來看看Group Re

MySQL group replication介紹

group replication“MySQL group replication”group replication是MySQL官方開發的一個開源插件,是實現MySQL高可用集群的一個工具。第一個GA版本正式發布於MySQL5.7.17中;想要使用group replication只需要從官網上下載MySQ

MySQL group replication

出現 上下 art 處理 自動創建 mit 排序 主從 同時 本篇文章主要講解MySQL group replication介紹,文中有關MySQL,group的內容,希望對大家有所幫助。 “MySQL group replication” group replicatio

Mysql Group Replication 簡介及單主模式組復制配置【轉】

ror ipv4 mysql命令 value tail force action dmi where 一 Mysql Group Replication簡介 Mysql Group Replication(MGR)是一個全新的高可用和高擴張的MySQL集群服務。

Mysql Group Replication 簡析

group http 9.png tex 圖片 關於 clas png src 前段時間做了組內分享,寫的關於mysql Group Replication 文章             3, 高擴展     

MySQL Group Replication(多主同步復制MGR)

update mod src xtra sla class replicat local trac 開啟replication配置: server-id=1 #標識服務器唯一 log-bin=mys

MySQL Group Replication (MGR) 安裝

exit ever 信息采集 false 操作記錄 create .so lob 一個 MySQL Group Replication 安裝 192.168.10.65192.168.10.66192.168.10.67 OS : CentOS 7.4mysql soft

MySQL Group Replication(組複製MGR)

MGR基本要求: 1、InnoDB儲存引擎 2、主鍵,每個表必須具有已定義的主鍵或等效的主鍵,其中等效項是非null唯一鍵 3、IPv4網路 4、網路效能 5、開啟二進位制日誌並開啟GTID模式 6、mysql版本在5.7.17以上 MGR限制: 1、組複製不支援mysiam引擎 2、不支援

函式的動態新增成員以及返回值

def fun(): print(fun.x) fun() 動態新增 fun.x = 3 fun() 動態刪除 del fun.x fun() 函式呼叫時一般有返回值,沒有定義返回值的時候,python中預設返回None def hello(): print

Mysql group replication

(每臺)安裝元件: 注意:在單個主機上執行的多例項。需要在my.cnf中增加此選項 放在每個選項[mysqld3306]的下面 :report_host=127.0.0.1 並且:skip-name-resolve mysql > INSTALL PLUG

redis叢集動態新增節點和從節點

如上圖所示:我現在有6臺機器的redis叢集,埠為7002,7003,7004為主,埠為7001,7005,7006為從節點 現在準備了兩個沒有在叢集中的redis服務:7007和7008; ok 現在讓我們開始把7007和7008新增到叢集中 第一步:執行下.

redis 叢集之動態新增redis節點,刪除指定ID的redis節點,以及檢視redis叢集中各個節點的資訊

redis cluster配置好,並執行一段時間後,我們想新增節點,或者刪除節點,該怎麼辦呢。首先登陸上去redis叢集內任意一個節點的client端 如:/usr/local/redis303/bin/redis-cli -c -h 192.168.1.108 -p 7713 進行登陸 192.168.1

搭建三節點的 Hbase 環境及動態新增主從節點

目錄 試驗環境 hadoop-2.6.4 + zookeeper-3.4.5 + hbase-0.99.2 搭建過程 hbase-0.99.2 動態新增主節點、從節點 1、試驗環境 1.1 節點為三個: 192.168.2.181  &

Ext入門之---動態新增節點

@{ Layout = null; } <!DOCTYPE html> <html> <head> <title>DynamicAddTreeNode</title> <script

Mysql group replication(MGR)實現高可用切換應用無感知方案的思考

一開始考慮使用ProxySQL+MGR來實現資料庫切換應用無感知方向,考慮了可能的兩種部署模型的優缺點:ProxySQL部署的兩種模型:1、靠近應用端方式:在應用伺服器上直接部署優點:  A、每個應用伺服器有自己的配置 ,配置內容簡單,不容易相互影響故障,變更故障風險最小 

MySQL Group Replication 介紹

2016-12-12,一個重要的日子,mysql5.7.17 GA版釋出,正式推出Group Replication(組複製) 外掛,通過這個外掛增強了mysql原有的高可用方案(原有的Replication方案),提供了重要的特性——多寫,保證組內高可用,確保

Hadoop叢集動態新增datanode節點步驟

總結一下在Hadoop叢集動態新增datanode節點相關步驟。 1.     在新節點安裝好hadoop,並把namenode的有關配置檔案複製到該節點 2.     修改namenode節點的masters和slaves檔案,增加該節點 3.     設定各節點ssh

Centos6.8 下 部署Mysql組複製(MySQL Group Replication)之多主模式(5.7新特性)

MySQL Group Replication(簡稱MGR)是MySQL官方於2016年12月推出的一個全新的高可用與高擴充套件的解決方案。MySQL組複製提供了高可用、高擴充套件、高可靠的MySQL叢集服務。 1.關於MGR介紹 1.1提供的特性: