這篇文章給大家分享的是有關(guān)如何搭建MySQL Group Replication測(cè)試環(huán)境的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。
創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比旺蒼網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式旺蒼網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋旺蒼地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。
最近看了下MySQL 5.7中的閃亮特性Group Replication,也花了不少做了些測(cè)試,發(fā)現(xiàn)有些方面的表現(xiàn)確實(shí)不賴。當(dāng)然要模擬這么一套環(huán)境還是需要花不少的功夫的,一般來說都是3個(gè)節(jié)點(diǎn)的環(huán)境,實(shí)際中要找這樣的環(huán)境也不是很容易。我們?cè)趺纯焖倌M呢。一種方式就是在一臺(tái)服務(wù)器上搭建多實(shí)例。
這樣一來,服務(wù)器的問題就解決了,下面要解決的問題就要艱巨的多了,那就是部署環(huán)境。
可以看到各路博客中都有了詳細(xì)的解釋,而官方文檔中對(duì)于搭建過程也花了不少的額篇幅來解釋,每一個(gè)步驟,每個(gè)操作,每個(gè)參數(shù)的含義。但是盡管如此,一次性成功搭建出這個(gè)環(huán)境的成功概率還是很低。初始化的部分不說,總是在添加節(jié)點(diǎn)的時(shí)候會(huì)有一些問題,這些問題折磨了我好些天,很多時(shí)候排查問題要做減法,也算是熟能生巧吧。搭建了十多遍,我也把自己的經(jīng)驗(yàn)簡(jiǎn)單總結(jié)出來。這樣的一個(gè)精華就是腳本了。
當(dāng)然這是一個(gè)很初始的腳本,沒有動(dòng)態(tài)變量,沒有復(fù)雜的條件判斷,我就是順序累了這么些代碼,反復(fù)嘗試,算是可以在一分鐘內(nèi)搭建出一個(gè)符合基本要求的環(huán)境。
我就直接上一個(gè)比較簡(jiǎn)單的腳本,其實(shí)嚴(yán)格來說不算是腳本。初始化環(huán)境的部分
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
配置參數(shù)文件
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
啟動(dòng)MySQL服務(wù)
/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 &
中間停頓幾秒,保證服務(wù)能夠正常啟動(dòng)
sleep 10
連接到各個(gè)實(shí)例查看是數(shù)據(jù)庫是否可用
/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"
連接到第一個(gè)節(jié)點(diǎn),運(yùn)行下面的腳本,初始化安裝GR插件,做一個(gè)基本的配置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;
"
連接到第二個(gè)節(jié)點(diǎn),初始化GR插件和基礎(chǔ)配置,和第一個(gè)節(jié)點(diǎn)略有不同。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;
"
連接到第二個(gè)節(jié)點(diǎn),初始化GR插件和基礎(chǔ)配置,和第一個(gè)節(jié)點(diǎn)略有不同。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;
"參數(shù)文件的模板如下,除了紅色的部分,其它都保持不變即可。這里我使用的端口是24801,不是默認(rèn)的3306,當(dāng)然這個(gè)沒有限制。
[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
運(yùn)行腳本的輸出如下,最后會(huì)顯示節(jié)點(diǎn)都添加成功。
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| 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 |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
感謝各位的閱讀!關(guān)于“如何搭建MySQL Group Replication測(cè)試環(huán)境”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!