共計 5486 個字符,預計需要花費 14 分鐘才能閱讀完成。
這篇文章主要介紹“MYSQL Group Replication 的搭建過程”,在日常操作中,相信很多人在 MYSQL Group Replication 的搭建過程問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”MYSQL Group Replication 的搭建過程”的疑惑有所幫助!接下來,請跟著丸趣 TV 小編一起來學習吧!
1.
環境準備
操作系統 redhat linux 6.8
虛擬機 3 臺
一臺用于 primary, 另外兩臺用于做 secondary
注意:
請先設置好各個主機的 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 數據服務
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
注意:三個環境都需要安裝
在三臺主機上執行以下命令:
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 服務
三臺主機都增加配置文件: /etc/my.cnf
其中 143 的配置文件內容:
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=
在這里有一些技術細節要說明一下:
上面的三個配置文件省略了所有不必要的配置項、但是看起來還是有點多、這些都是 mgr 環境要求的。
server_id 每個實例都要不要樣
loose-group_replication_group_name:為 mgr 高可用組起一個名字,這個名字一定要是 uuid 格式的。
loose-group_replication_local_address:mgr 各實例之前都是要進行通信的、這個配置項設置的就是本實例所監聽的 ip:端口
loose-group_replication_group_seeds:各 mgr 實例所監聽的 ip: 端口信息
三個環境初始化 mysql(注意,此處 mysql 的 root 用戶密碼會被設置為空值):
/usr/local/mysql/bin/mysqld –defaults-file=/etc/my.cnf
–datadir=/database/mysql/data/3306/ –user=mysql –initialize-insecure
三個環境將 mysql 加入系統服務
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
修改環境變量:
echo PATH=/usr/local/mysql/bin/:$PATH /etc/profile
啟動 mysql 服務:
service mysqld start
停止 mysql 服務:
service mysqld stop
4. 配置 MGR
4.1 創建 mgr 所需的用戶(第一個節點)
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 配置復制所使用的用戶
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. 初始化一個復制組
set global
group_replication_bootstrap_group=on;
start
group_replication;
set
global group_replication_bootstrap_group=off;
4.5. 配置 MGR 的第二個節點
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;
使用以上腳本依次處理剩余節點。
驗證:
至此,配置完成
mgr 中所有的結點都屬于一個邏輯上的組、這個組就像是 QQ 群一樣、是由群主建起來的、有了這個上組之后、其它的結點就可以加入到這個組中來了。
搭建中的注意項:
1.
安裝虛擬機操作系統時,因 hostname 安裝時未能設置好,修改了 hostname, 重啟了操作系統之后,group_replication 不能正常啟動
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.
在參數文件 /etc/my.cnf 中加入了 relay-log-recovery= 1 之后,才正常啟動復制
2. 安裝 mysql 服務前,最好先設置好 hostname 與 /etc/hosts
本案例中 /etc/hosts 的內容為:
192.168.43.143
mgrhost01
192.168.43.144
mgrhost02
192.168.43.145 mgrhost03
3. select * from performance_schema.replication_group_members ; 這個 SQL 查詢的列的 member_state 字段應都為 state 才是正常的
到此,關于“MYSQL Group Replication 的搭建過程”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注丸趣 TV 網站,丸趣 TV 小編會繼續努力為大家帶來更多實用的文章!