在windows環境下搭建mysql叢集
1. 前(fei)言(hua)
最近實訓老師給我們佈置了一個建立mysql叢集的任務,並扔了兩個部落格連結給我們參考,然後就沒有然後了。根據老師給的部落格上面的步驟試了一下,發現並不能成功建立,於是自己百度,找到了一個挺靠譜的部落格,於是參考了一下,感覺總體還是不錯的~
2. 理論基礎知識
首先需要了解什麼是管理節點、資料節點和SQL節點~
(1)管理結點:
從名字可以看出來,這種結點的作用就是管理其他結點的,這個節點可以檢視其他資料節點和SQL節點的連線狀態,並可以控制這些的節點重啟。
(2)資料節點:
這些節點的作用就是存放資料,每個資料節點都有這個mysql叢集的全部資料(資料冗餘),也就是隻要存在一個能執行就可以了~
(3)SQL節點:
這些節點向外提供SQL介面,所有資料庫操作都發往這裡,也是隻要存在一個能執行就可以~
(ps:本文側重實際操作,理論基礎知識請自行百度學習~)
3. 實際操作過程(博主的作業系統是WIN10~)
以下使用5臺電腦來實現mysql叢集(1個管理節點,2個數據節點,2個SQL節點)
管理節點的IP:192.168.1.66
資料節點1的IP:192.168.1.50
資料節點2的IP:192.168.1.53
SQL節點1的IP:192.168.1.63
SQL節點2的IP:192.168.1.56
(1)到mysql官網下載一個解壓版的mysql cluster,下載地址在下面~
根據自己的作業系統選擇
下載完成後解壓
(2)配置管理節點
在管理節點的C盤新建一個mysql資料夾,然後在mysql資料夾下新建一個bin資料夾和mysql-cluster資料夾。在剛剛解壓出來的資料夾中的bin資料夾下找到ndb_mgm.exe和ndb_mgmd.exe,然後複製到剛剛新建的bin資料夾下,並在此資料夾下新cluster-logs資料夾、config.ini檔案和my.ini檔案。
編輯config.ini檔案:
[ndbd default]
# Options affecting ndbd processes on all data nodes:
# Number of replicas 資料節點數
NoOfReplicas=2
DataDir=c:/mysqlcluster/datanode/mysql/bin/cluster-data
# Directory for each data node's data files
# Memory allocated to data storage 資料節點存放資料的路徑
DataMemory=80M
# Memory allocated to index storage
IndexMemory=18M
# For DataMemory and IndexMemory, we have used the
# default values.
[ndb_mgmd]
# Management process options:
# Hostname or IP address of management node 管理節點 IP
HostName=192.168.1.66
# Directory for management node log files 管理節點日誌存放路徑
DataDir=C:/mysql/bin/cluster-logs
[ndbd]
# Options for data node "1":
# (one [ndbd] section per data node)
# Hostname or IP address 資料節點1 IP
HostName=192.168.1.50
[ndbd]
# Options for data node "2":
# Hostname or IP address 資料節點2 IP
HostName=192.168.1.53
[mysqld]
# SQL node options:
# Hostname or IP address sql節點1 IP
HostName=192.168.1.63
[mysqld]
# SQL node options:
# Hostname or IP address sql節點2 IP
HostName=192.168.1.56
編輯my.ini檔案:
[mysql_cluster]
# Options for management node process config.ini存放路徑
config-file=C:/mysql/bin/config.ini
(3)配置資料節點:
在資料節點1新建C:\mysqlcluster\datanode\mysql資料夾,在這個mysql資料夾中新建一個bin資料夾和cluster-data資料夾,在這個新建bin資料夾中新建一個也叫cluster-data的資料夾。接下來將解壓的資料夾中data目錄下所有檔案複製到C:\mysqlcluster\datanode\mysql\cluster-data,再到解壓資料夾中的bin目錄下複製一個ndbd.exe到C:\mysqlcluster\datanode\mysql\bin,最後再新建一個my.ini檔案。
編輯my.ini:
[mysql_cluster]
# Options for data node process:
# location of management server 管理節點IP
ndb-connectstring=192.168.1.66
由於資料節點2的配置與這個一毛一樣,你可以選擇再弄一次加深印象,也可以在資料節點2先新建C:\mysqlcluster\datanode,然後偷懶把這個資料節點1的C:\mysqlcluster\datanode下的mysql資料夾整個複製到資料節點2的C:\mysqlcluster\datanode目錄下。
(4)配置SQL節點
在SQL節點1新建C:\mysqlcluster\sqlnode\mysql資料夾,將安裝包檔案解壓到mysql目錄下,然後在C:\mysqlcluster\sqlnode\mysql下新建my.ini檔案
編輯my.ini:
[mysqld]
# Options for mysqld process:
# run NDB storage engine
ndbcluster
# location of management server 管理節點IP
ndb-connectstring=192.168.1.66
記得要把my-default.ini 檔案刪除或更名為其他名字
SQL節點2的配置和SQL節點1一毛一樣,自己看著辦~
(5)開啟mysql cluster
A、先開啟SQL節點的服務:(dos命令列)
如果沒有安裝MySQL服務,則到SQL節點進入C:\mysqlcluster\sqlnode\mysql\bin目錄下,使用mysqld –install安裝MySQL服務,使用net start mysql命令啟動MySQL服務
如果已經安裝了MySQL服務,則直接使用net start mysql命令啟動MySQL服務
SQL節點2也做相同操作
B、為root使用者分配遠端連線的相關許可權
到管理節點進入C:\mysqlcluster\sqlnode\mysql\bin目錄下,使用mysql -uroot -p,然後輸入密碼(預設為空)
然後輸入
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
C、啟動管理節點
到管理節點開啟命令列視窗,切到C:\mysql\bin目錄,輸入
ndb_mgmd -f config.ini --configdir=C:\mysql\mysql-cluster
這個視窗不能關掉,否則服務不可用。
開啟
D、啟動資料節點
到資料節點1開啟命令列視窗,切到C:\mysqlcluster\datanode\mysql\bin,輸入 ndbd
資料節點1:
資料節點2操作相同:
E、啟動SQL節點
到SQL節點1開啟命令列視窗,切到C:\mysqlcluster\sqlnode\mysql\bin,輸入:
mysqld –console
SQL節點1
SQL節點1啟動完成:
SQL節點2操作相同
4. 測試
到任意一個SQL節點建立資料庫,在新建的資料庫裡面新建一張表
create database db;
use db;
create table t (id int) engine=ndbcluster;
到另一個SQL節點查詢看看能否看到新建的資料庫db和表t,如果有那就沒問題了~
show databases;
use db;
show tables;