分分鐘搭建MySQL Group Replication測試環境(r11筆記第83天)
最近看了下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 |
+---------------------------+--------------------------------------+-------------+-------------+--------------+這個過程自己多熟悉熟悉,對於理解Group Replication的原理和基本實現是大有幫助,裡面引數的含義沒解釋?文件都解釋的很清楚了,細細看來,留給DBA操作的內容其實不是很多。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-2134072/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 分分鐘搭建MySQL Group Replication測試環境(二)(r12筆記第41天)MySql筆記
- 分分鐘搭建MySQL一主多從環境(r12筆記第31天)MySql筆記
- MGR(MySQL Group Replication)部署搭建測試MySql
- 動態建立MySQL Group Replication的節點(r11筆記第84天)MySql筆記
- 分分鐘搭建Oracle環境Oracle
- MYSQL Group Replication搭建過程記錄MySql
- MySQL Group Replication小試MySql
- 【Mysql】MySQL5.7.17- Group Replication搭建MySql
- kafka學習筆記1:測試環境搭建Kafka筆記
- 使用sysbench壓力測試MySQL(一)(r11筆記第3天)MySql筆記
- 配置Mysql Group Replication遇到的問題筆記MySql筆記
- MySQL Group ReplicationMySql
- 閃回原理測試(二)(r11筆記第23天)筆記
- MySQL InnoDB Cluster環境搭建和簡單測試MySql
- MySQL group replication介紹MySql
- kaldi環境搭建 | yesno 測試
- android測試環境搭建Android
- griffin環境搭建及功能測試
- 搭建自動化測試環境
- 達夢6.0試用之測試環境搭建
- 軟體測試培訓:如何搭建測試環境
- MySQL 5.7 General Tablespace學習(r11筆記第34天)MySql筆記
- MySQL Online DDL(二)(r11筆記第88天)MySql筆記
- MySQL中的undo截斷(r11筆記第89天)MySql筆記
- 筆記一:前期 docker 環境搭建筆記Docker
- Laravel 開發環境搭建-筆記Laravel開發環境筆記
- 學習筆記:MQTT環境搭建筆記MQQT
- MySQL Group Replication 學習(部署篇)MySql
- 新手搭建 kubernetes 測試環境
- 你真的會搭建測試環境嗎?
- OCM實驗-測試環境的搭建
- 搭建rac+DataGuard的測試環境
- 如何搭建良好的軟體測試環境?測試環境對軟體測試起到什麼作用?
- MySQL引數對比淺析(r11筆記第97天)MySql筆記
- MySQL中的半同步複製(r11筆記第65天)MySql筆記
- Python筆記 開發環境搭建Python筆記開發環境
- Android環境搭建學習筆記Android筆記
- 《Kafka筆記》2、環境搭建、Topic管理Kafka筆記