1. 程式人生 > >在windows環境下搭建mysql叢集

在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,下載地址在下面~

下載地址

根據自己的作業系統選擇

博主的是64位的,選第二個~

下載完成後解壓

(2)配置管理節點

在管理節點的C盤新建一個mysql資料夾,然後在mysql資料夾下新建一個bin資料夾和mysql-cluster資料夾。在剛剛解壓出來的資料夾中的bin資料夾下找到ndb_mgm.exe和ndb_mgmd.exe,然後複製到剛剛新建的bin資料夾下,並在此資料夾下新cluster-logs資料夾、config.ini檔案和my.ini檔案。

 C:\mysql\

 C:\mysql\bin\

編輯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 

 C:\mysqlcluster\datanode\mysql

C:\mysqlcluster\datanode\mysql\bin

C:\mysqlcluster\datanode\mysql\cluster-data

由於資料節點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服務

啟動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:

啟動資料節點1

資料節點2操作相同:

啟動資料節點2

E、啟動SQL節點

到SQL節點1開啟命令列視窗,切到C:\mysqlcluster\sqlnode\mysql\bin,輸入:
mysqld –console

SQL節點1

啟動SQL節點1

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;