【實驗】 2臺虛擬機(ubuntu)搭建分佈式數據庫集羣環境 (一)

【實驗】 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.

其它數據節點可以採用類似步驟配置.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章