如何搭建一个 MySQL 分布式集群
作者丨茶軸的青春
https://segmentfault.com/a/1190000016829266?utm_source=tag-newest
1、準(zhǔn)備集群搭建環(huán)境
使用6臺虛擬機(jī)來搭建 MySQL分布式集群 ,相應(yīng)的實(shí)驗(yàn)環(huán)境與對應(yīng)的MySQL節(jié)點(diǎn)之間的對應(yīng)關(guān)系如下圖所示:
管理節(jié)點(diǎn)(MGM):這類節(jié)點(diǎn)的作用是管理MySQLCluster內(nèi)的其他節(jié)點(diǎn),如提供配置數(shù)據(jù),并停止節(jié)點(diǎn),運(yùn)行備份等。由于這類節(jié)點(diǎn)負(fù)責(zé)管理其他節(jié)點(diǎn)的配置,應(yīng)該在啟動其他節(jié)點(diǎn)之前啟動這類節(jié)點(diǎn)。MGM節(jié)點(diǎn)是用命令“ndb_mgmd”啟動的;
數(shù)據(jù)節(jié)點(diǎn)(NDB):這類節(jié)點(diǎn)用于保存Cluster的數(shù)據(jù),數(shù)據(jù)節(jié)點(diǎn)的數(shù)目與副本的數(shù)目相關(guān),是片段的倍數(shù)。例如,對于兩個副本,每個副本有兩個片段,那么就有4個數(shù)據(jù)節(jié)點(diǎn),沒有必要設(shè)定過多的副本,在NDB中數(shù)據(jù)會盡量的保存在內(nèi)存中。數(shù)據(jù)節(jié)點(diǎn)使用命令“ndb”啟動的;
SQL節(jié)點(diǎn):這是用來訪問Cluster數(shù)據(jù)的節(jié)點(diǎn),對于MySQL Cluster,客戶端節(jié)點(diǎn)是使用NDB Cluster存儲引擎的傳統(tǒng)MySQL服務(wù)器。通常,SQL節(jié)點(diǎn)使用命令“mysqld-ndbcluster”啟動的;
?
2、準(zhǔn)備安裝包
在官網(wǎng)上下載mysql的安裝包: mysql-cluster-gpl-7.4.11-Linux-glibc2.5-x86_64.tar.gz,并進(jìn)行解壓。
?
3、集群搭建流程
1]將上述安裝包解壓出來的文件都移到/usr/local/mysql下;
2]運(yùn)行script目錄下的mysql-install-db.sh腳本,運(yùn)行命令為./mysql-install-db.sh --user=root--basedir =/usr/local/mysql --datadir=/usr/local/mysql;注意其中用戶為root的名稱需要跟配置文件my.cnf中的相同;
在管理節(jié)點(diǎn),數(shù)據(jù)節(jié)點(diǎn),SQL節(jié)點(diǎn)上都執(zhí)行上述安裝命令,從而完成對mysql的安裝;
?
4、集群配置與啟動
1]在管理節(jié)點(diǎn)上需要完成對于集群整體的配置配置:在/var/lib/mysql-cluster/config.ini中實(shí)現(xiàn)如下的配置信息:
2]在數(shù)據(jù)節(jié)點(diǎn)中需要在my.cnf中完成對于數(shù)據(jù)節(jié)點(diǎn)的相關(guān)配置信息,如下:
需要指明配置的數(shù)據(jù)節(jié)點(diǎn)的根目錄,數(shù)據(jù)目錄,socket連接配置,用戶配置,以及對應(yīng)的管理節(jié)點(diǎn)的ip地址配置;將配置完成的配置文件移動到/etc/my.cnf,完成;
3]在SQL節(jié)點(diǎn)上完成對于SQL節(jié)點(diǎn)的配置信息,同樣的是在my.cnf中完成相應(yīng)配置信息,并將配置文件移動到/etc/my.cnf中,相應(yīng)的配置信息的設(shè)定如下所示:
完成以上配置后,就可以啟動集群中的各個節(jié)點(diǎn)了。
?
5、集群啟動
在啟動mysql集群的時候,注意首先要啟動管理節(jié)點(diǎn),并依次啟動其他等若干個節(jié)點(diǎn),相應(yīng)的啟動步驟如下:
1]在管理節(jié)點(diǎn)上,切換到/usr/local/mysql/bin目錄下,執(zhí)行ndb_mgmd -f /var/lib/mysql-cluster/config.ini命令,完成管理節(jié)點(diǎn)的啟動;
2]在各個數(shù)據(jù)節(jié)點(diǎn)上,切換到/usr/local/mysql/bin目錄下,執(zhí)行ndbd --initial(第一次啟動時,否則執(zhí)行ndbd即可),完成對數(shù)據(jù)節(jié)點(diǎn)的啟動;
3]在各個SQL節(jié)點(diǎn)上,同樣切換到/usr/local/mysql/bin目錄下,執(zhí)行mysqld_safe --user=root完成啟動;
4]在管理節(jié)點(diǎn)上運(yùn)行ndb_mgm命令,進(jìn)入數(shù)據(jù)庫管理的客戶端,輸入show命令,查看與之相連接的各個節(jié)點(diǎn)的狀態(tài);
5]在SQL節(jié)點(diǎn)上分別進(jìn)入系統(tǒng)的安全狀態(tài),并完成對root用戶的密碼修改,運(yùn)行以下指令,進(jìn)行密碼修改:
A use mysql,切換到mysql數(shù)據(jù)庫;
B UPDATE user SET Password = PASSWORD('123456')WHERE user = 'root';從而實(shí)現(xiàn)對root密碼的修改;
C flush privilege,完成修改;
6]修改使得任意主機(jī)都能連得上mysql,進(jìn)行如下修改,同樣安裝第5步進(jìn)入安全模式,并完成相應(yīng)的修改,如下:
grant?all?on‘*.*’to?‘root@'%'?identified?by?'123456';
這樣就可以使得任意一個主機(jī)都可以通過root用戶來登錄mysql了;
?
6、集群測試
在集群上的一個SQL節(jié)點(diǎn)上執(zhí)行創(chuàng)建數(shù)據(jù)庫,并創(chuàng)建一張表,并完成相應(yīng)的數(shù)據(jù)插入,如下:
create?database?ctest;?//創(chuàng)建數(shù)據(jù)庫create?table?test(id?int?primarykey;?//創(chuàng)建一張表 );insert?into?test?(id) values(1); //完成數(shù)據(jù)插入登錄另外一個SQL節(jié)點(diǎn),并執(zhí)行SQL查詢操作,看數(shù)據(jù)庫中是否已經(jīng)有數(shù)據(jù),如下:
select?*?from?ctest;如果有數(shù)據(jù),表示數(shù)據(jù)插入成功;
?
7、關(guān)閉集群
1]首先關(guān)閉管理節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn),需要在管理節(jié)點(diǎn)上執(zhí)行命令,如下:./ndb_mgm -e shutdown;
2]然后關(guān)閉SQL節(jié)點(diǎn),在SQL節(jié)點(diǎn)上執(zhí)行命令/usr/local/mysql/support-fies/mysql.server stop(其中/usr/local/mysql/是mysql的安裝目錄).從而關(guān)閉SQL節(jié)點(diǎn);
總結(jié)
以上是生活随笔為你收集整理的如何搭建一个 MySQL 分布式集群的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 常用命令全称,看看你 get
- 下一篇: 如何使用 Redis 实现大规模的帖子浏