提示: 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 [email protected]:/etc/ rsync -e "ssh -p22" -avpgolr /etc/my.cnf [email protected]:/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/