MySQL之——MySQL Cluster集群搭建詳解(基于RPM安裝包 雙管理中心)

1、下載mysql-cluster 7.3.7

http://dev.mysql.com/downloads/cluster/

2、環境清理及安裝

1)清理CentOS6.5自帶的MySQL服務,其中第一個命令我不執行也可以,其他系統如果不可以,還是建議執行

#?yum?-y?remove?mysql??  #?rpm?-qa?|?grep?mysql*??  #?rpm?-e?--nodeps?mysql-libs-5.1.71-1.el6.x86_64

2)環境準備 ?
創建文件夾(分如下3個類來創建對應的文件夾)

存儲節點:#?mkdir?/var/lib/mysql/data???  管理節點:#?mkdir?/var/lib/mysql-cluster????SQL節點:可不用??文件夾授權??  進程DIR:#?mkdir?/var/run/mysqld????????????????  使用如下的命令來變更權限保證可寫入:??  #?chmod?-R?1777?/var/lib/mysql??  #?chmod?-R?1777?/var/run/mysqld??  #?chmod?-R?1777?/var/lib/mysql-cluster

3)安裝mysql-cluster

首先解壓MySQL-Cluster-gpl-7.4.2-1.el6.x86_64.rpm-bundle.tar??  #?tar?xvf?MySQL-Cluster-gpl-7.4.2-1.el6.x86_64.rpm-bundle.tar??  然后執行如下命令安裝??  #?rpm?-ivh?MySQL-Cluster-server-gpl-7.3.4-1.el6.x86_64.rpm??  #?rpm?-ivh?MySQL-Cluster-client-gpl-7.3.4-1.el6.x86_64.rpm

特別注意,當安裝完畢server gpl包后,將出現如下提示信息,提醒我們整個cluster安裝后的初次超級賬戶密碼存在/root/.mysql_secret這個文件當中。

---------------------------------------------------------------------------------------------------------------------??  A?RANDOM?PASSWORD?HAS?BEEN?SET?FOR?THE?MySQL?root?USER?!??  You?will?find?that?password?in?'/root/.mysql_secret'.??  You?must?change?that?password?on?your?first?connect,??  no?other?statement?but?'SET?PASSWORD'?will?be?accepted.??  See?the?manual?for?the?semantics?of?the?'password?expired'?flag.??  Also,?the?account?for?the?anonymous?user?has?been?removed.??  In?addition,?you?can?run:??  /usr/bin/mysql_secure_installation??  which?will?also?give?you?the?option?of?removing?the?test?database.??  This?is?strongly?recommended?for?production?servers.??  -----------------------------------------------------------

3、配置管理節點

1)執行如下命令:

#?cd?/var/lib/mysql-cluster??  #?vi?config.ini

2)配置config.ini文件,如附件
100.218的配置文件:

config.ini

配置信息:

[computer]??  Id=mgr-server-01??  HostName=192.168.100.218??  [mgm?default]??  datadir=/var/lib/mysql-cluster??  [mgm]??  HostName=192.168.100.218??  NodeId=60??  [mgm]??  HostName=192.168.100.217??  NodeId=61??  [ndbd?default]??  NoOfReplicas?=?2??  DataMemory?=?50M??  IndexMemory?=?50M??  MaxNoOfTables?=?1024??  MaxNoOfAttributes?=?5000000??  MaxNoOfOrderedIndexes?=?10000??  [ndbd]??  HostName=192.168.100.217??  DataDir=/var/lib/mysql??  NodeId=1??  [ndbd]??  HostName=192.168.100.218??  DataDir=/var/lib/mysql??  NodeId=2??  [mysqld]??  HostName=192.168.100.217??  NodeId=81??  [mysqld]??  HostName=192.168.100.218??  NodeId=82

100.217的配置文件
config.ini

[computer]??  Id=mgr-server-02??  HostName=192.168.100.217??  [mgm?default]??  datadir=/var/lib/mysql-cluster??  [mgm]??  HostName=192.168.100.218??  NodeId=60??  [mgm]??  HostName=192.168.100.217??  NodeId=61??  [ndbd?default]??  NoOfReplicas?=?2??  DataMemory?=?50M??  IndexMemory?=?50M??  MaxNoOfTables?=?1024??  MaxNoOfAttributes?=?5000000??  MaxNoOfOrderedIndexes?=?10000??  [ndbd]??  HostName=192.168.100.217??  DataDir=/var/lib/mysql??  NodeId=1??  [ndbd]??  HostName=192.168.100.218??  DataDir=/var/lib/mysql??  NodeId=2??  [mysqld]??  HostName=192.168.100.217??  NodeId=81??  [mysqld]??  HostName=192.168.100.218??  NodeId=82

其實兩個文件差別不大,就在于computer配置中的名稱和標識id

4、SQL節點和數據節點的配置

修改my.cnf文件,添加如下內容:

[client]??  socket=/var/lib/mysql/mysql.sock??  [mysqld]??  max_connections=100??  datadir=/var/lib/mysql??  socket=/var/lib/mysql/mysql.sock??  ndbcluster??  ndb-connectstring=192.168.100.218,192.168.100.217??  [mysqld_safe]??  log-error=/var/log/mysqld.log??  #pid-file=/var/run/mysqld/mysqld.pid??  pid-file=/var/lib/mysql/mysqld.pid??  [mysql_cluster]??  ndb-connectstring=192.168.100.218,192.168.100.217

5、MySQL Cluster初次啟動命令以及用戶密碼更改調整:(請嚴格按照次序啟動)

1)啟動mysql-cluster
執行初次啟動前請先確認 將兩臺機器的防火墻關閉(service iptables stop 或者 設定 防火墻端口可通,兩個端口即通訊端口1186、數據端口3306 )
初次啟動mgt console命令:ndb_mgmd -f /var/lib/mysql-cluster/config.ini? (初始化需要加–initial)
啟動均衡節點命令:????????????? ndbd –initial
啟動數據節點命令:????????????? mysqld_safe –defaults-file=/usr/my.cnf –explicit_defaults_for_timestamp &
my.cnf在有些系統中是在etc目錄下
注意在啟動過程中需要監測整個控制臺輸出,發現有錯誤信息需要及時解決,根據錯誤日志內容來解決。
———————————————————————————————————
如果一起正常,使用如下命令將Management console開啟:? ndb_mgm
執行# show
檢查是否各個節點都已經完全啟動,如下,每個節點都已經連接,如果有節點沒連接,會看到

ndb_mgm>?show??  Connected?to?Management?Server?at:?192.168.100.218:1186??  Cluster?Configuration??  ---------------------??  [ndbd(NDB)]?2?node(s)??  id=1?@192.168.100.217?(mysql-5.6.21?ndb-7.4.2,?Nodegroup:?0)??  id=2?@192.168.100.218?(mysql-5.6.21?ndb-7.4.2,?Nodegroup:?0,?*)??  [ndb_mgmd(MGM)]?1?node(s)??  id=60?@192.168.100.218?(mysql-5.6.21?ndb-7.4.2)??  id=61?@192.168.100.217?(mysql-5.6.21?ndb-7.4.2)??  [mysqld(API)]?2?node(s)??  id=81?@192.168.100.217?(mysql-5.6.21?ndb-7.4.2)??  id=82?@192.168.100.218?(mysql-5.6.21?ndb-7.4.2)

如果有節點沒連接,如下,id=81一行,表示沒連接,檢查問題故障點

ndb_mgm>?show??  Cluster?Configuration??  ---------------------??  [ndbd(NDB)]?2?node(s)??  id=1?@192.168.100.217?(mysql-5.6.21?ndb-7.4.2,?Nodegroup:?0)??  id=2?@192.168.100.218?(mysql-5.6.21?ndb-7.4.2,?Nodegroup:?0,?*)??  [ndb_mgmd(MGM)]?1?node(s)??  id=60?@192.168.100.218?(mysql-5.6.21?ndb-7.4.2)??  id=61?@192.168.100.217?(mysql-5.6.21?ndb-7.4.2)??  [mysqld(API)]?2?node(s)??  id=81?(not?connected,?accepting?connect?from?192.168.100.217)??  id=82?@192.168.100.218?(mysql-5.6.21?ndb-7.4.2)

2)修改密碼
當mysqld 啟動完畢正常后(可以使用pgrep mysqld來獲取進程ID),我們可以使用如下命令修改:
mysql -u root -p;
隨機密碼(具體請參見/root/.mysql_secret文件獲取),進入后使用如下指令修改密碼:
SET PASSWORD = PASSWORD(‘新密碼’);
但是這個新密碼,必須是hash值,所以要使用如下方式獲取密碼字符串的hash值
select password(‘111111’);
然而執行上面命令,會讓你先設置密碼,郁悶,又繞回來了,那就去其他地方的mysql上執行下吧
111111的hash值是“*FD571203974BA9AFE270FE62151AE967ECA5E0AA”
SET PASSWORD = PASSWORD(‘*FD571203974BA9AFE270FE62151AE967ECA5E0AA’);
好郁悶啊,設置完以后,登陸還必須使用密文,那好吧,就用密文進去,進去后使用如下命令,強制使用明文進行登陸

use?mysql;??  delete?from?user;??  grant?all?on?*.*?to?root@'%'?identified?by?"111111"?with?grant?option;??  flush?privileges;??  quit;
然后,可以使用明文密碼登陸了  幾臺裝有SQL數據節點的服務器皆需要執行一遍上述命令;    6、當上面步奏都操作完成以后,測試cluster是否正常工作  1)簡單功能測試  在218上進入mysql后執行如下:
create?database?clustertest;??  use?clustertest;???  CREATE?TABLE?testtable(Count?INT)?ENGINE=NDBCLUSTER;

注意:ENGINE=NDBCLUSTER; 引擎必須使用NDBCLUSTER才可以同步,否則不會進行同步
檢查是否成功,在217上,進去mysql,查看是否自動創建了database和table,如果創建,則表示成功,如果失敗,請檢查環境配置
2)測試災備情況下數據是否可以同步(一臺數據庫停掉了,再啟動的時候,是否會將遺失的數據自動補充)
停掉217上的mysql服務,在218上執行

insert?into?testtable?values?(1);

啟動217的mysql服務,使用show確認217的數據庫節點已經連接上了,執行如下語句

select?*?from?testtable;

如果發現有數據,則表示功能完備

7、關閉Cluster:(需要嚴格按照次序執行)

關閉數據節點:# mysqld stop? (SQL節點可以用mysqladmin shutdown或別的方式關閉。)
在管理節點上執行:# ndb_mgm -e shutdown
將安全的關閉管理節點和數據節點。
關閉后使用如下的進程檢測命令查看一下是否退出來了:

#?pgrep?mysqld??  #?ps?aux?|?grep?nbdb

如果沒有,找到對應的pid進行kill 操作即可
kill -9 進程號

8、再次啟動Cluster方案:

啟動整個cluster的次序,注意,一些語句已經減去了初始化的內容:

ndb_mgmd?-f?/var/lib/mysql-cluster/config.ini??  ndbd??  mysqld_safe?--defaults-file=/usr/my.cnf?--explicit_defaults_for_timestamp?&

備注:

1、mysql安裝后,默認會自動啟動的,每次啟動cluster的時候,都需要先把mysql的服務關閉,太麻煩,于是可以執行如下命令(我出手有點狠):

chkconfig?--level?123456?mysql?off

2、防火墻問題,偷個懶,我懶得去一一開放端口,干脆把防火墻直接關了(極不推薦的做法)

chkconfig?--level?123456?iptables?off

參考相關文檔:

MySQL Cluster?config.ini文件配置詳解:

? ??http://note.youdao.com/share/?id=376407a1136d2032afb6ef68aa39fba5&type=note

? ??http://note.youdao.com/share/?id=3906996cbe3298a22fbb5a2196d6cbed&type=note

MySQL?Cluster 備份與恢復?http://www.linuxidc.com/Linux/2013-06/85295.htm

MySQL Cluster安裝配置?http://www.linuxidc.com/Linux/2013-07/87705.htm

MySQL Cluster 3臺機器搭建集群環境 DOC?http://www.linuxidc.com/Linux/2013-01/78249.htm

MySQL Cluster7.2在線增加數據節點存在重大弊端?http://www.linuxidc.com/Linux/2012-08/67605.htm

搭建MySQL-Cluster集群架構? ?http://www.linuxidc.com/Linux/2014-05/102218.htm

以上就是?MySQL之——MySQL Cluster集群搭建詳解(基于RPM安裝包 雙管理中心)的內容,更多相關內容請關注PHP中文網(www.php.cn)!

? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享