這篇文章主要介紹“MYSQL Group Replication的搭建過(guò)程”,在日常操作中,相信很多人在MYSQL Group Replication的搭建過(guò)程問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”MYSQL Group Replication的搭建過(guò)程”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
創(chuàng)新互聯(lián),為您提供重慶網(wǎng)站建設(shè)、成都網(wǎng)站制作、網(wǎng)站營(yíng)銷推廣、網(wǎng)站開(kāi)發(fā)設(shè)計(jì),對(duì)服務(wù)成都社區(qū)文化墻等多個(gè)行業(yè)擁有豐富的網(wǎng)站建設(shè)及推廣經(jīng)驗(yàn)。創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司成立于2013年,提供專業(yè)網(wǎng)站制作報(bào)價(jià)服務(wù),我們深知市場(chǎng)的競(jìng)爭(zhēng)激烈,認(rèn)真對(duì)待每位客戶,為客戶提供賞心悅目的作品。 與客戶共同發(fā)展進(jìn)步,是我們永遠(yuǎn)的責(zé)任!1. 環(huán)境準(zhǔn)備
操作系統(tǒng)redhat linux 6.8
虛擬機(jī)3臺(tái)
一臺(tái)用于primary, 另外兩臺(tái)用于做secondary
注意:
請(qǐng)先設(shè)置好各個(gè)主機(jī)的hostname與/etc/hosts
mysql版本: mysql-5.7.20
主名 ip地址 在mgr中的角色
mgrhost01 192.168.43.143 primary
mgrhost02 192.168.43.144 seconde
mgrhost03 192.168.43.145 seconde
2. 安裝mysql數(shù)據(jù)服務(wù)
cd /tmp/
wget
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
tar -xvf
mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
cd /usr/local/
ln -s
mysql-5.7.20-linux-glibc2.12-x86_64 mysql
注意:三個(gè)環(huán)境都需要安裝
在三臺(tái)主機(jī)上執(zhí)行以下命令:
mkdir -p /database/mysql/data/3306
useradd mysql
chown -R mysql:mysql /database/mysql/data/3306
chown -R mysql:mysql /usr/local/mysql*
3.配置mysql服務(wù)
三臺(tái)主機(jī)都增加配置文件: /etc/my.cnf
其中143的配置文件內(nèi)容:
basedir=/usr/local/mysql/
datadir=/database/mysql/data/3306
port=3306
socket=/tmp/mysql.sock
server_id=143
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=mysql-bin
binlog_format=row
relay-log-recovery=1
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= "192.168.43.143:33060"
loose-group_replication_group_seeds= "192.168.43.143:33060,192.168.43.144:33060,192.168.43.145:33060"
loose-group_replication_bootstrap_group=
off
192.168.43.144的/etc/my.cnf
[mysqld]
basedir=/usr/local/mysql/
datadir=/database/mysql/data/3306
port=3306
socket=/tmp/mysql.sock
server_id=144
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=mysql-bin
binlog_format=row
relay-log-recovery=1
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= "192.168.43.144:33060"
loose-group_replication_group_seeds= "192.168.43.143:33060,192.168.43.144:33060,192.168.43.145:3306"
loose-group_replication_bootstrap_group=
off
192.168.43.145的/etc/my.cnf
[mysqld]
basedir=/usr/local/mysql/
datadir=/database/mysql/data/3306
port=3306
socket=/tmp/mysql.sock
server_id=145
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=mysql-bin
binlog_format=row
relay-log-recovery=1
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= "192.168.43.145:33060"
loose-group_replication_group_seeds= "192.168.43.143:33060,192.168.43.144:33060,192.168.43.145:3306"
loose-group_replication_bootstrap_group= off 在這里有一些技術(shù)細(xì)節(jié)要說(shuō)明一下:
上面的三個(gè)配置文件省略了所有不必要的配置項(xiàng)、但是看起來(lái)還是有點(diǎn)多、這些都是mgr環(huán)境要求的。
server_id 每個(gè)實(shí)例都要不要樣
loose-group_replication_group_name:為mgr高可用組起一個(gè)名字,這個(gè)名字一定要是uuid格式的。
loose-group_replication_local_address:mgr各實(shí)例之前都是要進(jìn)行通信的、這個(gè)配置項(xiàng)設(shè)置的就是本實(shí)例所監(jiān)聽(tīng)的ip:端口
loose-group_replication_group_seeds:各mgr實(shí)例所監(jiān)聽(tīng)的ip:端口信息
三個(gè)環(huán)境初始化mysql(注意,此處mysql的root用戶密碼會(huì)被設(shè)置為空值):
/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
--datadir=/database/mysql/data/3306/ --user=mysql --initialize-insecure
三個(gè)環(huán)境將mysql加入系統(tǒng)服務(wù)
cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
chkconfig mysqld on
修改環(huán)境變量:
echo 'PATH=/usr/local/mysql/bin/:$PATH' >>/etc/profile
啟動(dòng)mysql服務(wù):
service mysqld start
停止mysql服務(wù):
service mysqld stop
4.配置MGR
4.1 創(chuàng)建mgr所需的用戶(第一個(gè)節(jié)點(diǎn))
set
sql_log_bin=0;
create user mgruser@'%' identified by 'mtls@352';
grant replication slave,replication client on *.* to mgruser@'%';
create user mgruser@'127.0.0.1' identified by 'mtls@352';
grant replication slave,replication client on *.* to mgruser@'127.0.0.1';
create user mgruser@'localhost' identified by 'mtls@352';
grant replication slave,replication client on *.* to mgruser@'localhost';
set sql_log_bin=1;
4.2 配置復(fù)制所使用的用戶
change master to
master_user='mgruser',
master_password='123456'
for channel 'group_replication_recovery';
4.3 安裝MGR插件 install plugin group_replication soname 'group_replication.so';
4.4. 初始化一個(gè)復(fù)制組
set global
group_replication_bootstrap_group=on;
start group_replication;
set
global group_replication_bootstrap_group=off;
4.5. 配置MGR的第二個(gè)節(jié)點(diǎn)
set sql_log_bin=0;
create user mgruser@'%' identified by '123456';
grant replication slave,replication client on *.* to mgruser@'%';
create user mgruser@'127.0.0.1' identified by '123456';
grant replication slave,replication client on *.* to mgruser@'127.0.0.1';
create user mgruser@'localhost' identified by '123456';
grant replication slave,replication client on *.* to mgruser@'localhost';
set
sql_log_bin=1;
change master
to
master_user='mgruser',
master_password='123456'
for channel 'group_replication_recovery';
install plugin group_replication soname 'group_replication.so'; start group_replication;
使用以上腳本依次處理剩余節(jié)點(diǎn)。
驗(yàn)證:
至此,配置完成
mgr中所有的結(jié)點(diǎn)都屬于一個(gè)邏輯上的組、這個(gè)組就像是QQ群一樣、是由群主建起來(lái)的、有了這個(gè)上組之后、其它的結(jié)點(diǎn)就可以加入到這個(gè)組中來(lái)了。
搭建中的注意項(xiàng):
1.
安裝虛擬機(jī)操作系統(tǒng)時(shí),因hostname安裝時(shí)未能設(shè)置好,修改了hostname, 重啟了操作系統(tǒng)之后,group_replication不能正常啟動(dòng)
mysql> start group_replication;
set global group_replication_bootstrap_group=off;
ERROR 3094
(HY000): The START GROUP_REPLICATION command failed as the applier module
failed to start.
在參數(shù)文件/etc/my.cnf中加入了relay-log-recovery=1之后,才正常啟動(dòng)復(fù)制
2. 安裝mysql服務(wù)前,最好先設(shè)置好hostname與/etc/hosts
本案例中/etc/hosts的內(nèi)容為:
192.168.43.143 mgrhost01
192.168.43.144 mgrhost02
192.168.43.145 mgrhost03
3. select * from performance_schema.replication_group_members ; 這個(gè)SQL查詢的列的member_state字段應(yīng)都為state才是正常的
到此,關(guān)于“MYSQL Group Replication的搭建過(guò)程”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!