MySQL 8 InnoDB 集羣生產部署

生產部署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

 

配置生產實例

 

 

 

 

 

 

 

 

 

 
 

configureInstance()

相關文章
相關標籤/搜索