MySQL 8.0.18 InnoDB Cluster 主從(MGR)完整安裝配置


提示: MySQL InnoDB Cluster底層依賴Group Replication模式,至少3台機器

1.  准備3台 CentOS Linux 7 (Core), 修改各主機名:db-host1, db-host2, db-host3  然后配置各台機器 hosts 映射, 對應如下

cat << EOF >> /etc/hosts
192.168.50.181 db-host1
192.168.50.182 db-host2
192.168.50.183 db-host3
EOF

2. 確保3台服務器要互相訪問正常,為了保險期間請關閉防火牆,firewalld常用命令 如:

# 啟動 
systemctl start firewalld

# 關閉
systemctl stop firewalld

# 查看狀態
systemctl status firewalld 

# 開機禁用 
systemctl disable firewalld

# 開機啟用
systemctl enable firewalld

# 查看所有打開的端口
 firewall-cmd --zone=public --list-ports

3. 確保互訪使用ssh 共享,這里使用root 賬戶 如:在db-host1 執行,其它以此類推:

ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.50.182

ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.50.183

4. 准備安裝 mysql-community-server,mysql-shell,mysql-router 在3台機器安裝,注意版本:

wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
rpm -ivh mysql80-community-release-el7-3.noarch.rpm
yum install mysql-community-server
wget https://dev.mysql.com/get/Downloads/MySQL-Shell/mysql-shell-8.0.18-1.el7.x86_64.rpm
rpm -ivh mysql-shell-8.0.18-1.el7.x86_64.rpm
yum install mysql-shell
wget https://dev.mysql.com/get/Downloads/MySQL-Router/mysql-router-community-8.0.18-1.el7.x86_64.rpm
rpm -ivh mysql-router-community-8.0.17-1.el7.x86_64.rpm
yum install mysql-router

5. 安裝完MysqlServer 后,依次每台初始化mysql,步驟如下:#初始化:

mysqld --initialize;


#賦訪問權限:
chown mysql:mysql /var/lib/mysql -R
#啟動mysql服務:
systemctl start mysqld.service;
#設置mysql開機自啟
mysql systemctl enable mysqld;
#命令查看數據庫的密碼:
cat /var/log/mysqld.log | grep password
#進入mysql命令行:
mysql -uroot -p (輸入上述查看的數據庫密碼進入mysql命令行)
#命令來修改密碼:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密碼'; #創建遠程訪問權限:
create user 'root'@'%' identified with mysql_native_password by '密碼';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; flush privileges;

6. 由於依賴組復制,在host1 修改  /etc/my.cnf

server_id = 4000000161
loose-group_replication_group_name="a38e32fd-5fb6-11e8-ad7a-00259015d941"
loose-group_replication_local_address= "192.168.50.181:3306"
loose-group_replication_group_seeds= "192.168.50.181:3306,192.168.50.182:3306,192.168.50.183:3306"
loose-group_replication_single_primary_mode=TRUE

然后拷貝 /etc/my.cnf到另外2台機器

rsync -e "ssh -p22" -avpgolr /etc/my.cnf root@192.168.50.182:/etc/
rsync -e "ssh -p22" -avpgolr /etc/my.cnf root@192.168.50.183:/etc/

確保各自 server_id  和 address

host1    server_id = 4000000161   

loose-group_replication_local_address= "192.168.50.181:3306"

host2    server_id = 4000000162

loose-group_replication_local_address= "192.168.50.182:3306"

host3    server_id = 4000000163

loose-group_replication_local_address= "192.168.50.183:3306"

7. 3台mysql server 啟動組復制

start group_replication

 

 

8. 檢查實例配置, 使用 mysqlsh

dba.checkInstanceConfiguration('root@db-host1:3306')
dba.checkInstanceConfiguration('root@db-host2:3306')
dba.checkInstanceConfiguration('root@db-host3:3306')

 

 

8. 配置實例

dba.configureInstance('root@db-host1:3306',{'restart': true})
dba.configureInstance('root@db-host2:3306',{'restart': true})
dba.configureInstance('root@db-host3:3306',{'restart': true})

 

 

9. 創建添加實例

var cluster = dba.createCluster('mycluster');
var cluster=dba.getCluster('mycluster')
cluster.addInstance('root@db-host2:3306');
cluster.addInstance('root@db-host3:3306');

10. 登錄主服務器 ,查看,配置成功

mysql> select * from performance_schema.replication_group_members;

 

 

注意:由於8.0 中的一些變化和5.X配置有所配置不同,按照以前的配置容易出錯,要善於對應分析日志進行排錯

推薦參考資料:

https://blog.csdn.net/wzy0623/article/details/100779450

https://www.jianshu.com/p/6e2918845ec8

https://lefred.be/content/mysql-8-0-innodb-cluster-the-quick-hands-on-manual/

https://cloud.tencent.com/developer/article/1445710

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM