您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關如何搭建MySQL Group Replication測試環境的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
最近看了下MySQL 5.7中的閃亮特性Group Replication,也花了不少做了些測試,發現有些方面的表現確實不賴。當然要模擬這么一套環境還是需要花不少的功夫的,一般來說都是3個節點的環境,實際中要找這樣的環境也不是很容易。我們怎么快速模擬呢。一種方式就是在一臺服務器上搭建多實例。
這樣一來,服務器的問題就解決了,下面要解決的問題就要艱巨的多了,那就是部署環境。
可以看到各路博客中都有了詳細的解釋,而官方文檔中對于搭建過程也花了不少的額篇幅來解釋,每一個步驟,每個操作,每個參數的含義。但是盡管如此,一次性成功搭建出這個環境的成功概率還是很低。初始化的部分不說,總是在添加節點的時候會有一些問題,這些問題折磨了我好些天,很多時候排查問題要做減法,也算是熟能生巧吧。搭建了十多遍,我也把自己的經驗簡單總結出來。這樣的一個精華就是腳本了。
當然這是一個很初始的腳本,沒有動態變量,沒有復雜的條件判斷,我就是順序累了這么些代碼,反復嘗試,算是可以在一分鐘內搭建出一個符合基本要求的環境。
我就直接上一個比較簡單的腳本,其實嚴格來說不算是腳本。初始化環境的部分
mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/home/mysql/data/s1 --explicit_defaults_for_timestamp
mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/home/mysql/data/s2 --explicit_defaults_for_timestamp
mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/home/mysql/data/s3 --explicit_defaults_for_timestamp
配置參數文件
chown -R mysql:mysql s1 s2 s3
cp s1.cnf s1
cp s2.cnf s2
cp s3.cnf s3
chown -R mysql:mysql s1 s2 s3
啟動MySQL服務
/usr/local/mysql/bin/mysqld_safe --defaults-file=/home/mysql/data/s1/s1.cnf &
/usr/local/mysql/bin/mysqld_safe --defaults-file=/home/mysql/data/s2/s2.cnf &
/usr/local/mysql/bin/mysqld_safe --defaults-file=/home/mysql/data/s3/s3.cnf &
中間停頓幾秒,保證服務能夠正常啟動
sleep 10
連接到各個實例查看是數據庫是否可用
/usr/local/mysql/bin/mysql -P24081 -S /home/mysql/s1.sock -e "show databases"
/usr/local/mysql/bin/mysql -P24082 -S /home/mysql/s2.sock -e "show databases"
/usr/local/mysql/bin/mysql -P24083 -S /home/mysql/s3.sock -e "show databases"
連接到第一個節點,運行下面的腳本,初始化安裝GR插件,做一個基本的配置mysql -P24081 -S /home/mysql/s1.sock -e "
SET SQL_LOG_BIN=0;
CREATE USER rpl_user@'%';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%' 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';
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;
select *from performance_schema.replication_group_members;
"
連接到第二個節點,初始化GR插件和基礎配置,和第一個節點略有不同。mysql -P24082 -S /home/mysql/s2.sock -e "
SET SQL_LOG_BIN=0;
CREATE USER rpl_user@'%';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%' IDENTIFIED BY 'rpl_pass';
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';
set global group_replication_allow_local_disjoint_gtids_join=on;
start group_replication;
select *from performance_schema.replication_group_members;
"
連接到第二個節點,初始化GR插件和基礎配置,和第一個節點略有不同。mysql -P24083 -S /home/mysql/s3.sock -e "
SET SQL_LOG_BIN=0;
CREATE USER rpl_user@'%';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%' IDENTIFIED BY 'rpl_pass';
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';
set global group_replication_allow_local_disjoint_gtids_join=on;
start group_replication ;
select *from performance_schema.replication_group_members;
"參數文件的模板如下,除了紅色的部分,其它都保持不變即可。這里我使用的端口是24801,不是默認的3306,當然這個沒有限制。
[mysqld]
# server configuration
datadir=/home/mysql/data/s1
basedir=/usr/local/mysql
port=24801
socket=/home/mysql/s1.sock
server_id=1
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="1bb1b861-f776-11e6-be42-782bcb377193"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "127.0.0.1:24901"
loose-group_replication_group_seeds= "127.0.0.1:24901,127.0.0.1:24902,127.0.0.1:24903"
loose-group_replication_bootstrap_group= off
運行腳本的輸出如下,最后會顯示節點都添加成功。
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | b3684636-f83d-11e6-bd53-782bcb377193 | grtest | 24801 | ONLINE |
| group_replication_applier | b4a7d208-f83d-11e6-be4e-782bcb377193 | grtest | 24802 | ONLINE |
| group_replication_applier | b5eecf1d-f83d-11e6-80d7-782bcb377193 | grtest | 24803 | ONLINE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
感謝各位的閱讀!關于“如何搭建MySQL Group Replication測試環境”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。