mysql-cluster集群搭建步驟


 

1.從官網下載mysql-cluster安裝包: https://dev.mysql.com/downloads/cluster/

2.解壓安裝包

#上傳到服務器目錄/usr/softwares並解壓
tar -xzvf mysql-cluster-gpl-7.5.15-linux-glibc2.12-x86_64.tar.gz

#新建/usr/local/mysql目錄
mkdir /usr/local/mysql
#將解壓的文件重命名為mysql,並放到/usr/local/mysql目錄下 mv mysql-cluster-gpl-7.6.7-linux-glibc2.12-x86_64 /usr/local/mysql

 

3.配置安裝管理節點

  1)新增管理節點命令

#將文件ndb_mgm和ndb_mgmd拷貝到/usr/local/bin/目錄下
cp /usr/local/mysql/bin/ndb_mgm* /usr/local/bin/
 
#ndb_mgm,ndb客戶端命令
#ndb_mgmd,ndb管理節點啟動命令
#ndb_mgm是ndb_mgmd(MySQL Cluster Server)的客戶端管理工具,通過它可以方便的檢查Cluster的狀態、啟動備份、關閉Cluster等功能。

  2)修改管理節點的配置文件

#創建數據庫集群配置文件的目錄
mkdir /var/lib/mysql-cluster
 
#創建並編輯配置文件
vim /var/lib/mysql-cluster/config.ini
 
[ndbd default]
NoOfReplicas=2 #數據節點的個數
DataMemory=512M
IndexMemory=64M
 
[ndb_mgmd] #管理節點
NodeId=1
hostname=192.168.17.130
datadir=/var/lib/mysql-cluster/
 
[ndbd] #數據節點
NodeId=2
hostname=192.168.17.131
datadir=/usr/local/mysql/data/
[ndbd]
NodeId=3
hostname=192.168.17.132
datadir=/usr/local/mysql/data/
 
[mysqld] #sql節點
NodeId=4
hostname=192.168.17.133
[mysqld]
NodeId=5
hostname=192.168.17.134
 

[NDBD DEFAULT]:表示每個數據節點的默認配置,在每個節點的[NDBD]中不用再寫這些選項,只能有一個。

NoOfReplicas:副本數量,數據節點數必須是副本數的整數倍。

[NDB_MGMD]:表示管理節點的配置,只有一個,默認的對其他節點的端口是1186,故服務器需要開放1186端口。

[NDBD]:表示每個數據節點的配置,可以有多個,分別寫上不同數據節點的IP地址。

[MYSQLD]:表示SQL節點的配置,可以有多個,分別寫上不同SQL節點的IP地址。

  3)啟動管理節點

ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial

ndb_mgmd是mysql cluster的管理服務器,后面的-f表示后面的參數是啟動的參數配置文件。如果在啟動后過了幾天又添加了一個數據節點,這時修改了配置文件啟動時就必須加上--initial參數,不然添加的節點不會作用在mysql cluster中。

 

3.配置安裝數據節點

  1)配置my.cnf文件

[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
character_set_server=utf8
 
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
 
[mysql_cluster]
ndb-connectstring=192.168.17.130:1186

  2)新增用戶和權限

#分別添加mysql組和mysql用戶
groupadd mysql
useradd mysql -g mysql
 
#進入mysql目錄
cd /usr/local/mysql/
 
#把mysql的目錄設置成所有者為root
chown -R root .
 
#創建data目錄,並把data目錄設置所有者為mysql
mkdir data
chown -R mysql data
 
#把mysql的目錄改成所屬組為mysql
chgrp -R mysql .

  3)安裝數據庫

#執行安裝腳本,初始化數據庫
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
 
#注意其中用戶為mysql的名稱需要跟配置文件my.cnf中的user=mysql相同
#另外,這里一定要把--basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ 加上,
#否則會最后啟動MySQL服務的時候會出現"table mysql.plugin doesn't exist","Can\'t open the mysql.plugin table. Please run mysql_upgrade to create it."錯誤,以及"PID"獲取失敗的錯誤

在安裝的打印信息最后,有首次登陸的密碼,需要特別注意;

  4)設置mysqld服務開機自啟

#加入到service服務
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
 
#加入到開機自啟動列表
chkconfig --add mysqld

  5)修改數據庫密碼

#啟動數據庫
[root@localhost bin]# service mysqld start
 
#進入客戶端
[root@localhost bin]# ./mysql -uroot -p
Enter password:這里輸入之前的臨時密碼
 
#修改密碼
mysql> set password=password('新密碼');
 
#注意此密碼必須要與其他服務器上的數據庫設置的密碼相同

  6)啟動數據節點

cd /usr/local/mysql
./bin/ndbd --initial
 
#非第一次啟動,命令如下
./bin/ndbd

安裝后第一次啟動數據節點時要加上--initial參數。在以后的啟動過程中,則是不能添加該參數的,否則ndbd程序會清除在之前建立的所有用於恢復的數據文件和日志文件。

4.配置安裝sql節點

  1)配置my.cnf文件

[mysqld]
ndbcluster
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
character_set_server=utf8
default-storage-engine=ndbcluster
port=3306
 
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
 
[mysql_cluster]
ndb-connectstring=192.168.17.130:1186

  2)安裝mysql數據庫

  3)啟動sql節點

service mysqld start

如果提示:mysql:mysql is neither service nor target!?報錯,則執行:

systemctl unmask mysqld
service mysql start

 

5.測試

  1)管理節點查看

ndb_mgm
 
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)]    2 node(s)
id=2    @192.168.17.131  (mysql-5.7.23 ndb-7.6.7, Nodegroup: 0, *)
id=3    @192.168.17.132  (mysql-5.7.23 ndb-7.6.7, Nodegroup: 1)
 
[ndb_mgmd(MGM)]    1 node(s)
id=1    @192.168.17.130  (mysql-5.7.23 ndb-7.6.7)
 
[mysqld(API)]    2 node(s)
id=4    @192.168.17.133  (mysql-5.7.23 ndb-7.6.7)
id=5    @192.168.17.134  (mysql-5.7.23 ndb-7.6.7)

  2)測試數據

#登陸數據庫
cd /usr/local/mysql
./bin/mysql -uroot -p
Enter password:輸入密碼
 
#創建數據庫mytest
mysql> create database mytest;
 
#切換到mytest數據庫
mysql> use mytest;
 
#創建表結構sys_myfirst
mysql> create table sys_myfirst(id varchar(36) primary key, name varchar(100), memo varchar(255));
 
#在sys_myfirst中添加幾條數據
mysql> insert into sys_myfirst(id, name, memo) values('1','test1','hello world!');
mysql> insert into sys_myfirst(id, name, memo) values('2','test2','hello world haha!');
mysql> insert into sys_myfirst(id, name, memo) values('3','test3','hello world hehe!');
 
#查看數據
mysql> select * from sys_myfirst;
+----+-------+-------------------+
| id | name  | memo              |
+----+-------+-------------------+
| 2  | test2 | hello world haha! |
| 1  | test1 | hello world!      |
| 3  | test3 | hello world hehe! |
+----+-------+-------------------+
3 rows in set (0.00 sec)

  3)在另一個sql節點查詢

#這里就省去登陸mysql客戶端的步驟了
#查看數據
mysql> select * from sys_myfirst;
+----+-------+-------------------+
| id | name  | memo              |
+----+-------+-------------------+
| 1  | test1 | hello world!      |
| 3  | test3 | hello world hehe! |
| 2  | test2 | hello world haha! |
+----+-------+-------------------+
3 rows in set (0.00 sec)
 

 

6.啟動和停止管理節點

啟動順序:管理節點—數據節點—sql節點

停止順序:管理節點(會同時停止管理節點和數據節點)—sql節點

停止管理節點:

#第一種方法
ndb_mgm -e shutdown
 
#第二種方法
ndb_mgm
ndb_mgm> shutdown;

停止sql節點:

service mysqld stop

 

7.數據存放位置

在數據節點上通過lsof -c ndb命令(以root身份運行)來找出包含ndb進程所有打開的文件,

發現其真正存儲數據的位置在mysql/data/ndb_3_fs/下面(3數字是config.ini的節點id),

各個文件夾中的文件是以16.7M為單位存儲的,臨時文件達到16.7M后就另起一個。

 

參考文檔:

1.mysql-cluster集群搭建:

https://blog.csdn.net/qq_15092079/article/details/82665307

https://blog.csdn.net/csolo/article/details/87086086

https://www.cnblogs.com/linkstar/p/6510713.html

2.增加管理節點:

https://blog.csdn.net/cf20160405/article/details/77864123

3.增加數據節點:

https://blog.csdn.net/yabingshi_tech/article/details/47953109

4.官方文檔:

https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-configuration.html

5.mysqlcluster+haproxy+keepalived

https://blog.csdn.net/csolo/article/details/87363388

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM