生產部署InnoDB集羣node
一、先決條件python
InnoDB集羣使用組複製技術,因此InnoDB中的實例須要知足組複製要求。能夠查看MySQL文檔中組複製相關的部分,也能夠經過AdminAPI提供的dba.checkInstanceConfiguration() 方法檢查實例是否知足要求,若是不知足可使用 dba.configureInstance() 方法配置實例以知足要求。mysql
組複製成員的表須要使用InnoDB存儲引擎。若是表示用其餘存儲引擎,須要先轉化爲使用InnoDB存儲引擎。linux
Performance Schema須要開啓,這個默認是打開的。sql
MySQL Shell提供用於配置服務器的腳本須要Pthon 2.7以上的版本。經過/usr/bin/env python查看Python當前版本,不知足的話,若是經過源碼安裝更新的Python版本,注意將其加入到環境變量中。好比在/usr/bin/python和安裝位置作個軟連接。chrome
從MySQL 8.0.17版本開始,InnoDB中的實例必須有惟一的Server ID。若是經過Cluster.addInstance(instance) 操做添加實例到集羣環境,而該實例的Server ID與集羣中實例衝突,則添加實例的操做失敗。shell
二、下載並安裝須要的組件vim
MySQL Server服務器
MySQL Shellapp
MySQL Router
經過RPM方式安裝MySQL Shell 和 MySQL Router:
rpm -ivh mysql-shell-8.0.18-1.el7.x86_64.rpm mysql-router-community-8.0.18-1.el7.x86_64.rpm
三、InnoDB集羣生產部署涉及的內容
用戶權限
InnoDB集羣建立的用戶
配置主機名
推薦的解決方案:每臺機器配置其餘機器的IP地址到主機名的映射,好比:
vim /etc/hosts
192.168.1.140 mysql-node1
192.168.1.150 mysql-node2
192.168.1.160 mysql-node3
配置端口
localAdress地址端口計算方式:實例端口 * 10 + 1。若是得出的值超過65535,在建立集羣時,指定localAdress端口,好比:
mysql-js> dba.createCluster('testCluster', {'localAddress':'root@mysql-node1:33061'}
若是有防火牆或者啓用了SElinux,注意集羣之間端口的連通性。
持久化配置
下面這些操做以後須要持久化更改:
• dba.configureInstance()
• dba.createCluster()
• Cluster.addInstance()
• Cluster.removeInstance()
• Cluster.rejoinInstance()
實例知足下面要求,支持自動持久化更改:
MySQL 8.0.11以上版本
persisted_globals_load 系統變量設置爲 ON
啓動實例沒有添加--no-defaults 選項
注:若是AdminAPI命令在本地實例運行,即運行在本地的MySQL Shell上。對於不支持持久化配置的MySQL Server版本,須要本地進行更改,好比:dba.configureLocalInstance().若是支持持久化,會將更改寫到mysqld-auto.cnf配置文件中。
若是AdminAPI命令運行在遠端實例,支持持久化,會將更改寫到mysqld-auto.cnf配置文件中。不支持持久化,AdminAPI不能自動更改my.cnf選項文件,須要本地更改,好比:dba.configureLocalInstance().
Verbose Logging
控制在MySQL Shell執行AdminAPI日誌輸出等級,好比:
shell> mysqlsh --log-level=DEBUG3
生成的日誌文件在:~/.mysqlsh/mysqlsh.log
控制AdminAPI在MySQL Shell中日誌輸出量:
mysql-js> dba.verbose=2
配置生產實例