1、官網下載對應版本mysql_cluster安裝包
https://dev.mysql.com/downloads/cluster/
2、搭建環境
搭建過程中,用三臺計算機來實現MySQL-Cluster環境的配置,具體環境如下:
管理節點(MGM)服務器:192.168.131.130 主機名:jwing nodeid=1
數據節點1(NDB ):192.168.131.131 nodeid=2
數據節點2(NDB):192.168.131.132 nodeid=3
SQL節點1:192.168.131.131 nodeid=4
SQL節點2:192.168.131.132 nodeid=5
3、如果之前安裝過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
管理節點配置
這裏將主機ip爲192.168.131.130的服務器作爲管理節點,進行下面的配置:
// 將下載好的安裝包解壓到自己選擇的目錄下,並修改個短一點的名字
cd /usr/local
tar -zxvf /home/jwing/Downloads/mysql-cluster-gpl-7.3.18-linux-glibc2.12-x86_64.tar.gz
mv mysql-cluster-gpl-7.3.18-linux-glibc2.12-x86_64 mysql_cluster
// 將管理命令(ndb_mgm,ndb_mgmd)複製到/usr/local/bin下
cd mysql_cluster/bin
cp ndb_mgm* /usr/local/bin
// 新建管理文件並配置
mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
vi config.ini
config.ini文件內容:
# Options affecting ndbd processes on all data nodes:
[NDBD DEFAULT]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M
# TCP/IP options:
[TCP DEFAULT]
#portnumber=2202
# Management process options:
[NDB_MGMD]
nodeid=1
HostName=192.168.131.130
DataDir=/var/lib/mysql-cluster/
# Options for data node :
[NDBD]
nodeid=2
HostName=192.168.131.131
DataDir=/usr/local/mysql_cluster/data/
# Options for data node :
[NDBD]
nodeid=3
HostName=192.168.131.132
DataDir=/usr/local/mysql_cluster/data/
# SQL node options:
[MYSQLD]
nodeid=4
HostName=192.168.131.131
[MYSQLD]
nodeid=5
HostName=192.168.131.132
數據節點與sql節點配置
在192.168.131.131主機與192.168.131.132主機上均進行以下配置
1、檢查是否已有mysql用戶與mysql組,若不存在,手動新增
查看:
cat /etc/passwd
cat /etc/group
新增:
groupadd mysql
useradd -g mysql mysql
2、解壓
// 將下載好的安裝包解壓到自己選擇的目錄下,並修改個短一點的名字
cd /usr/local
tar -zxvf /home/jwing/Downloads/mysql-cluster-gpl-7.3.18-linux-glibc2.12-x86_64.tar.gz
mv mysql-cluster-gpl-7.3.18-linux-glibc2.12-x86_64.tar.gz mysql_cluster
// 將ndbd命令複製到/usr/local/bin下
cd mysql_cluster/bin
cp ndbd /usr/local/bin
3、創建系統數據庫:
cd /usr/local/mysql_cluster
apt-get install libaio1 libaio-dev
scripts/mysql_install_db --user=mysql
(報錯提示主機名不匹配,可能是壓縮包下載的版本(確認操作系統是32位還是64位)問題。若是提示文件夾不存在,可能是壓縮包版本(有些版本沒有scripts文件夾)問題或是因爲之前mysql沒有完全卸載。或者在bin目錄底下)
4、設置權限
chown -R root .
chown -R mysql data
chgrp -R mysql .
5、設置自啓動
// 將MySQL啓動腳本拷貝恰當的目錄下
cp support-files/mysql.server /etc/init.d
// 使之成爲可執行的腳本
chmod +x /etc/init.d/mysql.server
// 設置它能在啓動操作系統時啓動
apt-get install sysv-rc-conf
sysv-rc-conf mysql.server on
6、配置my.cnf
數據節點與sql節點可在同一個文件中配置,配置文件的默認位置爲/etc/my.cnf
// 新建並編輯my.cnf
vi /etc/my.cnf
6、配置my.cnf
數據節點與sql節點可在同一個文件中配置,配置文件的默認位置爲/etc/my.cnf
// 新建並編輯my.cnf
vi /etc/my.cnf
my.cnf內容:
[MYSQLD]
ndbcluster
ndb-connectstring=192.168.131.130
#管理節點ip
[MYSQL_CLUSTER]
ndb-connectstring=192.168.131.130
#管理節點ip
7、配置mysql環境變量
vi /etc/profile
source /etc/profile
在文件最下方配置內容如下:
export MYSQL_HOME=/usr/local/mysql_cluster
PATH=${MYSQL_HOME}/bin:$PATH
export PATH
運行
1、管理節點:
配置結束後運行ndb_mgmd --ndb-nodeid=1 --initial --configdir=/var/lib/mysql-cluster/ -f /var/lib/mysql-cluster/config.ini。失敗的情況請用命令ndb_mgmd --help查看參數提示。確保配置文件路徑與配置文件內容是正確的。
ndb_mgm可進入管理模式,再輸入show可查看當前各節點狀態:
2、數據節點:
運行ndbd --initial
(參數--initial
只有第一次運行需要添加,該參數會導致之前的內容清空)
數據節點連接後:
3、sql節點:
/usr/local/mysql_cluster/bin/mysqld_safe --user=mysql &
// 若執行上方命令時出現不能同時寫syslog和error.log的情況,則使用以下指令:
/usr/local/mysql_cluster/bin/mysqld_safe --user=mysql --skip-syslog &
均連接成功後:
測試
1、登錄mysql(以下數據庫的操作方式不多做贅述)
在192.168.131.131與192.168.131.132登錄mysql
mysql -u root -p // 安裝的默認密碼
2、同步測試
在192.168.131.131主機的mysql上新建數據庫、表與數據。在192.168.131.132主機的mysql中查看數據是否已經被同步。
create database cluster;
use cluster;
// 創建表時需要指定引擎爲ndbcluster(engine=ndb or engine=ndbcluster)
create table test(id int, name char(10))engine=ndb;
insert into test(id, name)values(1,"myname");
3、高可用測試
在192.168.131.131主機中關閉ndbd連接
pkill ndbd //關閉ndbd有關進程
修改其中一個節點,查看數據是否同步。
在192.168.131.132主機中關閉sql節點的連接
pkill mysqld //關閉mysqld有關進程
在192.168.131.131主機中修改數據,再將192.168.131.132主機中的節點連接回去,查看數據是否同步。
(關閉節點後能在管理節點的ndb_mgm觀察到狀態)此時繼續測試集羣的同步性時可以發現數據仍然同步,說明了當有一個SQL節點或數據節點宕機後,整個MySQL-Cluster環境仍然可以工作。
---------------------
以上參考:https://blog.csdn.net/a807557328/article/details/78247269
注意:(遠程連接授權是新建用戶不是直接授權。否則會報錯的)
二、爲需要遠程登錄的用戶賦予權限
1、新建用戶遠程連接mysql數據庫
grant all on *.* to admin@'%' identified by '123456' with grant option;
flush privileges;
允許任何ip地址(%表示允許任何ip地址)的電腦用admin帳戶和密碼(123456)來訪問這個mysql server。
注意admin賬戶不一定要存在。
2、支持root用戶允許遠程連接mysql數據庫
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
flush privileges;