【實驗】 2臺虛擬機(ubuntu)搭建分佈式數據庫集羣環境(二)
考慮到虛擬機數量過多會影響性能,本實驗使用2臺linux虛擬機作爲實驗環境。Linux 選擇Ubuntu 16.04 Server. 事先在VMware上安裝linux操作系統。 安裝設置Windows 與Linux虛擬機共享文件夾參考如下:
爲了方便編輯配置文件,可以先安裝 vim
sudo apt-get install vim
1. 集羣配置如下
數據節點1:192.168.50.128 nodeID 11
數據節點2:192.168.50.129 nodeID 12
管理節點:192.168.50.129 nodeID 1
sql節點1:192.168.50.128 nodeID
sql節點2:192.168.50.129 nodeID
使用2臺機器進行配置,各臺機器上的均配置爲SQL服務節點、數據節點與sql節點;192.168.50.129上配置一個管理節點。
(如果大家有條件建立多臺虛擬機,可以將管理節點和SQL服務節點分開,也可以不再所有的數據節點上配置SQL節點。)
對於MySQL-Cluster的安裝包下載,下載地址見http://dev.mysql.com/downloads/cluster/,務必根據linux操作系統選擇正確的版本,並下載。
如果之前安裝過mysql-server,在進行此次實驗之前,需要將mysql-server卸載,執行以下指令卸載mysql
sudo apt-get autoremove --purge mysql-server™
sudo apt-get remove mysql-server
sudo apt-get autoremove mysql-server
sudo apt-get remove mysql-common (非常重要)
2. 準備(192.168.150.129)
安裝
adduser mysql
usermod -aG sudo mysql
下載 mysql-cluster_8.0.19-1ubuntu16.04_amd64.deb-bundle.tar
並放入Windows下的共享文件夾,然後在Linux虛擬機中存取。也可以在Linux虛擬機中下載。假定已經獲取mysql-cluster_8.0.19-1ubuntu16.04_amd64.deb-bundle.tar到mysql home目錄。解壓文件到install目錄
mkdir install
tar -xvf mysql-cluster_8.0.19-1ubuntu16.04_amd64.deb-bundle.tar -C install/
cd install
在安裝 MySQL server binary前,可能需要安裝一些依賴包
sudo apt update
(也許還需要 sudu apt-get update)
sudo apt install libaio1 libmecab2
克隆一個虛擬機,按着集羣配置設置IP地址。這樣就有兩臺linux有mysql cluster包的服務器。
3 安裝配置集羣管理器
用dpkg指令在Cluster Manager 服務器 (假定爲 192.168.50.129)上安裝 ndb_mgmd。
sudo dpkg -i mysql-cluster-community-management-server_7.6.6-1ubuntu18.04_amd64.deb
在第一次運行ndb_mgmd前需要對其進行配置,正確配置是保證數據節點正確同步和負載分配的前提。
Cluster Manager 應該是MySQL Cluster 第一個啓動的組件.它需要一個配置文件來加載參數. 我門創建配置文件: /var/lib/mysql-cluster/config.ini.
在Cluster Manager 所在機器上創建 /var/lib/mysql-cluster目錄:
sudo mkdir /var/lib/mysql-cluster
然後用你熟悉的編輯器編輯配置文件:
sudo vim /var/lib/mysql-cluster/config.ini
內容如下:
[ndbd default]
# Options affecting ndbd processes on all data nodes:
NoOfReplicas=2 # Number of replicas
[ndb_mgmd]
# Management process options:
hostname=192.168.50.129 # Hostname of the manager
NodeId=1
datadir=/var/lib/mysql-cluster # Directory for the log files
[ndbd]
hostname=192.168.50.128 # Hostname/IP of the first data node
NodeId=11 # Node ID for this data node
datadir=/usr/local/mysql/data # Remote directory for the data files
[ndbd]
hostname=192.168.50.129 # Hostname/IP of the second data node
NodeId=12 # Node ID for this data node
datadir=/usr/local/mysql/data # Remote directory for the data files
[mysqld]
# SQL node options:
hostname=192.168.50.129 # MySQL server/client i manager
[mysqld]
# SQL node options:
hostname=192.168.50.128 # MySQL server/client i manager
注意IP地址要正確
如果是生產環境,應該根據實際情況調整配置參數,參考MySQL Cluster. 你還可以增加 data nodes (ndbd) 或 MySQL server nodes (mysqld).
現在可以啓動管理器,執行:
sudo ndb_mgmd -f /var/lib/mysql-cluster/config.ini
檢查ndb_mgmd 使用的端口 1186:
sudo netstat -plntu
從Windows編輯config.ini可能會報錯,需要在Linux系統下編輯。
在啓動服務前,可能需要殺掉正在運行的服務:
sudo pkill -f ndb_mgmd
下面打開並編輯下面 systemd Unit 文件,使服務可以自動加載::
sudo vim /etc/systemd/system/ndb_mgmd.service
鍵下面文件內容:
[Unit]
Description=MySQL NDB Cluster Management Server
After=network.target auditd.service
[Service]
Type=forking
ExecStart=/usr/sbin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
保存並關閉文件.
這裏只是加入瞭如何啓動、停止和重啓動ndb_mgmd 進程的最小選項集合. 想要知道更多的相關信息,參閱systemd manual.
採用daemon-reload重新加載systemd’s manager 配置:
sudo systemctl daemon-reload
讓我們剛創建的服務生效,使MySQL Cluster Manage 可以開機執行:
sudo systemctl enable ndb_mgmd
最後,啓動服務:
sudo systemctl start ndb_mgmd
可以通過如下語句驗證NDB Cluster Management service服務正在執行:
sudo systemctl status ndb_mgmd
輸出類似下面內容:
這表明ndb_mgmd MySQL Cluster Management server 作爲一個系統服務運行了。
最後一步是設置Cluster Manager 允許其它MySQL Cluster 節點連入.
如果沒有配置過ufw 防火牆,可以跳過這個操作,進入第4步…
添加允許數據節點連入的規則:
sudo ufw allow from 192.168.50.128
sudo ufw allow from 192.168.50.129
會見到如下輸出:
Output
Rule added
現在Cluster Manager 應該啓動運行了,並且能夠通過局域網與集羣其它節點通信了。
4 配置一個數據節點(假定在192.168.50.129上進行)
安裝依賴包
sudo apt-get –f install
sudo apt install libclass-methodmaker-perl
安裝數據節點包
sudo dpkg -i mysql-cluster-community-data-node_8.0.19-1ubuntu18.04_amd64.deb
數據節點將從固定位置/etc/my.cnf獲取配置文件.創建文件並編輯:
sudo vim /etc/my.cnf
[mysql_cluster]
# Options for NDB Cluster processes:
ndb-connectstring=192.168.50.129 # location of cluster manager
本配置設定在管理器配置數據目錄爲 /usr/local/mysql/data. 運行服務前要創建相關目錄:
sudo mkdir -p /usr/local/mysql/data
然後就可以啓動服務了:
sudo ndbd
顯示如下:
NDB 數據節點守護程序成功啓動!!!
如果出現連接問題,請打開防火牆:
sudo ufw allow from 192.168.50.129
sudo ufw allow from 192.168.50.128
配置數據節點服務自啓動:
打開並編輯如下 systemd Unit 文件:
sudo vim /etc/systemd/system/ndbd.service
內容如下:
[Unit]
Description=MySQL NDB Data Node Daemon
After=network.target auditd.service
[Service]
Type=forking
ExecStart=/usr/sbin/ndbd
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
這裏只是加入瞭如何啓動、停止和重啓動ndbd進程的最小選項集合. 想要知道更多的相關信息,參閱systemd manual.
採用daemon-reload重新加載systemd’s manager 配置:
sudo systemctl daemon-reload
讓我們剛創建的服務生效,使data node daemon 可以開機執行:
sudo systemctl enable ndbd
最後,啓動服務:
sudo systemctl start ndbd
可以通過如下語句驗證NDB Cluster Management service服務正在執行:
sudo systemctl status ndbd
輸出類似下面內容:
ndbd.service - MySQL NDB Data Node Daemon
Loaded: loaded (/etc/systemd/system/ndbd.service; enabled; vendor preset: enabled)
Active: active (running) since Thu ****-**-** 20:56:29 UTC; 8s ago
Process: 11972 ExecStart=/usr/sbin/ndbd (code=exited, status=0/SUCCESS)
Main PID: 11984 (ndbd)
Tasks: 46 (limit: 4915)
CGroup: /system.slice/ndbd.service
├─11984 /usr/sbin/ndbd
└─11987 /usr/sbin/ndbd
這表明MySQL Cluster 數據節點守護進程作爲一個 systemd service在運行. 數據節點起作用並能夠連接到MySQL Cluster Manager.
其它數據節點可以採用類似步驟配置.