本文的英文版本鏈接是https://xuri.me/2013/11/20/install-mysql-cluster-on-ubuntu-12-04-lts.html
東營網(wǎng)站建設公司創(chuàng)新互聯(lián)建站,東營網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為東營成百上千提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\外貿(mào)營銷網(wǎng)站建設要多少錢,請找那個售后服務好的東營做網(wǎng)站的公司定做!MySQL Cluster 是 MySQL 適合于分布式計算環(huán)境的高實用、高冗余版本。它采用了 NDB Cluster 存儲引擎,允許在1個 Cluster 中運行多個MySQL服務器。通過無共享體系結(jié)構(gòu),系統(tǒng)能夠使用廉價的硬件,而且對軟硬件無特殊要求。此外,由于每個組件有自己的內(nèi)存和磁盤,不存在單點故障。
開發(fā)者官方網(wǎng)站www.oracle.com
在這篇文章中,我會敘述如何 在 Ubuntu 12.04 LTS 構(gòu)建高可用 MySQL 集群。
1. SQL Cluster 虛擬主機
要創(chuàng)建一個功能齊全的集群,至少需要3臺主機才可以完成。其中一個主機作為管理節(jié)點,另外兩個做數(shù)據(jù)節(jié)點。如果數(shù)據(jù)節(jié)點脫機,群集仍然可以工作,但是一旦管理節(jié)點出現(xiàn)問題,將導致集群無法正常工作,所以在可能的情況下,建立兩個管理節(jié)點。在我的例子中,我將使用二個管理節(jié)點的集群。
這個例子中一共使用了 5 臺主機,系統(tǒng)架構(gòu)如下圖所示
虛擬機群平臺 VMware ESXi 4.1 虛擬機操作系統(tǒng) Ubuntu 12.04.3 LTS (Precise Pangolin) 64-bit
所有虛擬機都在同一192.168.67.0/24網(wǎng)絡地址段當中,請根據(jù)你的網(wǎng)絡情況來具體配置 IP 地址,在開始之前請確保所有主機網(wǎng)絡連接設置正常。
2. 安裝管理節(jié)點
首先,我們需要安裝的 MySQL集群的管理節(jié)點。我們將開始與 MySQL-MGM-1,配置完成后按照相同的步驟配置第二個管理節(jié)點,如果只設定一個管理節(jié)點,那么繼續(xù)下一步的配置。
在開始配置前,請訪問http://www.mysql.com/downloads/cluster/#downloads確認當前安裝文檔的版本信息. 這里我所使用的 MySQL Cluster 版本是 7.3.3.
首先,我們把MySQL Cluster 安裝包下載到管理主機上。進入到 /usr/src文件夾并創(chuàng)建mysql-mgm目錄。
mkdir /usr/src/mysql-mgm cd /usr/src/mysql-mgm
完成這一步后,在 MySQL 的官方網(wǎng)站下載最新的安裝源代碼,并解壓軟件包
wget http://cdn.mysql.com/Downloads/MySQL-Cluster-7.3/mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64.tar.gz tar xvfz mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64.tar.gz
進入解壓縮后的文件夾,然后移動二進制文件
cd mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64 cp bin/ndb_mgm /usr/bin cp bin/ndb_mgmd /usr/bin
更改目錄的權(quán)限,并可以選擇刪除下載的源文件
chmod 755 /usr/bin/ndb_mg* cd /usr/src rm -rf /usr/src/mysql-mgm
接下來,我們創(chuàng)建管理節(jié)點配置文件,在 /var/lib/mysql-cluster/ 文件夾中,名字叫做 config.ini ,這個文件夾事先不存在,創(chuàng)建它
mkdir /var/lib/mysql-cluster
在 config.ini 文件創(chuàng)建完成后,使用你喜歡的文本編輯器編輯此文件,內(nèi)容類似于這樣
[NDBD DEFAULT] NoOfReplicas=2 DataMemory=80M IndexMemory=18M [MYSQLD DEFAULT] [NDB_MGMD DEFAULT] DataDir=/var/lib/mysql-cluster [TCP DEFAULT] # Section for the cluster management node [NDB_MGMD] NodeId=1 # IP address of the first management node (this system) HostName=192.168.67.10 [NDB_MGMD] NodeId=2 #IP address of the second management node HostName=192.168.67.11 # Section for the storage nodes [NDBD] # IP address of the first storage node HostName=192.168.67.12 DataDir= /var/lib/mysql-cluster [NDBD] # IP address of the second storage node HostName=192.168.67.13 DataDir=/var/lib/mysql-cluster # one [MYSQLD] per storage node [MYSQLD] [MYSQLD]
所有主機都定義在這個里,即使我們只安裝第一個。請注意,管理主機節(jié)點需要設定 NodeId,而 NDBD 節(jié)點不需要設定.
完成這步操作后,可以用下面的命令啟動管理節(jié)點
ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/
完成這步操作后, 你可以通過下面的命令向 init.d 中添加一個條目,以自動啟動程序
echo "ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/" > /etc/init.d/ndb_mgmd chmod 755 /etc/init.d/ndb_mgmd
如果一切順利,第二個管理節(jié)點上遵循相同的步驟,并使用相同的配置。請不要改變的節(jié)點配置文件中的 ID
你可以使用 ndb_mgm 命令來驗證管理節(jié)點的運行,(只需要在終端中輸入 ndb_mgm ) ,并通過鍵入 show,啟動配置實用程序。此時 NDBD 節(jié)點和 MySQL 節(jié)點處于斷開狀態(tài),需要將所有節(jié)點配置完成才可以輸出正確的狀態(tài)。
3. 數(shù)據(jù)節(jié)點
創(chuàng)建數(shù)據(jù)節(jié)點與創(chuàng)建管理節(jié)點的過程是類似的。讓我們開始創(chuàng)建一個 mysql 組,將用戶 mysql 添加到 mysql 組中
groupadd mysql useradd -g mysql mysql
進入 /usr/local ,并下載和配置管理節(jié)點時使用的相同的壓縮文檔,并解壓
cd /usr/local/ wget http://cdn.mysql.com/Downloads/MySQL-Cluster-7.3/mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64.tar.gz tar xvfz mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64.tar.gz
創(chuàng)建一個名為 mysql 指向解壓的文件夾(這以后將用于DB集群,所以不要刪除它!)的的軟連接。創(chuàng)建完成后,你可以安裝數(shù)據(jù)庫
ln -s mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64 mysql cd mysql apt-get install libaio1 libaio-dev scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data
修改文件權(quán)限
chown -R root:mysql . chown -R mysql data
與管理節(jié)點上一樣,我們希望的 DataBase 引擎自動啟動,因此,我們需要創(chuàng)建 init.d 命令
cp support-files/mysql.server /etc/init.d/ chmod 755 /etc/init.d/mysql.server
最后,復制 bin 文件夾到 /usr/bin 的位置,并創(chuàng)建一個符號鏈接,以保持能夠正確的引用
cd /usr/local/mysql/bin mv * /usr/bin cd ../ rm -fr /usr/local/mysql/bin ln -s /usr/bin /usr/local/mysql/bin
MySQL 配置文件目前不存在,所以我們需要自己創(chuàng)建它。該文件位于 /etc/ 中,并命名為 my.cnf 文件。使用你喜歡的文本編輯器,并添加以下幾行
[mysqld] ndbcluster # IP address of the cluster management node ndb-connectstring=192.168.67.10,192.168.67.11 [mysql_cluster] # IP address of the cluster management node ndb-connectstring=192.168.67.10,192.168.67.11
請注意,這兩個管理節(jié)點的地址,使用逗號分隔。如果你只有一個管理節(jié)點,只需在列表中刪除第二個。一旦 my.cnf 文件已保存,我們需要創(chuàng)建 MySQL 的數(shù)據(jù)文件夾
mkdir /var/lib/mysql-cluster
完成這些后,我們需要初始化集群并啟動該服務。只有當你開始第一次的節(jié)點,或當在管理節(jié)點上的 /var/lib/mysql-cluster/config.ini 文件被更改時,需要做初始化
cd /var/lib/mysql-cluster ndbd –-initial /etc/init.d/mysql.server start
接下來,通過運行相應的腳本安裝 MySQL
/usr/local/mysql/bin/mysql_secure_installation
最后,我們需要 NDB 自動啟動
echo "ndbd" > /etc/init.d/ndbd chmod 755 /etc/init.d/ndbd
好了,我們已經(jīng)完成了第一個數(shù)據(jù)節(jié)點的配置,按照相同的方法和步驟去完成第二個數(shù)據(jù)節(jié)點的配置
4.驗證與測試
如果一切正常,在管理節(jié)點終端中執(zhí)行命令 ndb_mgm ,然后鍵入 show. 這個時候應該看到的數(shù)據(jù)庫節(jié)點已填充的提示
root@MYSQL-MGM1:~# ndb_mgm ndb_mgm> show Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=3 @192.168.67.12 (mysql-5.6.14 ndb-7.3.3, Nodegroup: 0, *) id=4 @192.168.67.13 (mysql-5.6.14 ndb-7.3.3, Nodegroup: 0) [ndb_mgmd(MGM)] 2 node(s) id=1 @192.168.67.10 (mysql-5.6.14 ndb-7.3.3) id=2 @192.168.67.11 (mysql-5.6.14 ndb-7.3.3) [mysqld(API)] 2 node(s) id=5 @192.168.67.12 (mysql-5.6.14 ndb-7.3.3) id=6 @192.168.67.13 (mysql-5.6.14 ndb-7.3.3)
如果你能夠看到類似的輸出,去嘗試一些基本的SQL命令。登錄到SQL數(shù)據(jù)庫,并創(chuàng)建一個新的數(shù)據(jù)庫,表,以驗證數(shù)據(jù)同步。請注意,在創(chuàng)建數(shù)據(jù)庫時,需使用 NDBCLUSTER 存儲引擎。如果使用 InnoDB ,數(shù)據(jù)將不會在集群節(jié)點之間被復制。在使用 NDBCLUSTER 引擎時,會有一些問題,請參閱 MySQL 官方網(wǎng)站
http://dev.mysql.com/doc/refman/5.5/en/mysql-cluster-limitations-unsupported.html
http://dev.mysql.com/doc/refman/5.5/en/mysql-cluster-limitations-syntax.html
mysql -u root -p mysql> CREATE DATABASE mysqlclustertest; mysql> USE mysqlclustertest; mysql> CREATE TABLE testtable (i INT) ENGINE=NDBCLUSTER; mysql> INSERT INTO testtable () VALUES (1); mysql> SELECT * FROM testtable;
連接到第二個數(shù)據(jù)庫節(jié)點,我們看看,得到了相同的輸出
mysql -u root -p mysql> USE mysqlclustertest; mysql> SELECT * FROM testtable;
應該看到相同的輸出。現(xiàn)在,如果你插入一個新條目表,它會被復制回的第一個節(jié)點
5. 負載均衡
在這篇文章的最后部分是為 MySQL 集群安裝負載均衡服務器,負載均衡可以使用 mysql-proxy,很容易安裝,當然你也可以使用其他服務
root@mysql-proxy:~# apt-get install mysql-proxy root@mysql-proxy:~# mkdir /etc/mysql-proxy root@mysql-proxy:~# cd /etc/mysql-proxy root@mysql-proxy:/etc/mysql-proxy# nano mysql-proxy.conf
在 mysql-proxy.conf 文件中加入下面幾行
[mysql-proxy] daemon = true proxy-address = 192.168.67.14:3306 proxy-skip-profiling = true keepalive = true event-threads = 50 pid-file = /var/run/mysql-proxy.pid log-file = /var/log/mysql-proxy.log log-level = debug proxy-backend-addresses = 192.168.67.12:3306,192.168.67.13:3306 proxy-lua-script=/usr/lib/mysql-proxy/lua/proxy/balance.lua
對于自動啟動的附加選項創(chuàng)建以下文件 /etc/default/mysql-proxy
ENABLED="true" OPTIONS="--defaults-file=/etc/mysql-proxy.conf --plugins=proxy"
然后,你可以通過調(diào)用以下命令啟動 mysql-proxy
/etc/init.d/mysql-proxy start/stop/status
完成后,你應該能夠連接到 MySQL 服務器使用代理地址。記得這個工作,你需要創(chuàng)建一個新的用戶具有特定的子網(wǎng)連接到它。還需要在 my.cnf 文件為 MySQL 服務器添加捆綁地址
SQL用戶不用復制,所以相同的用戶有單獨被添加到所有的數(shù)據(jù)庫節(jié)點。在數(shù)據(jù)節(jié)點登錄到 SQL shell,執(zhí)行以下命令
CREATE USER \'newuser\'@\'192.168.67.%\' IDENTIFIED BY \'password\'; FLUSH PRIVILEGES; SELECT * FROM mysql.user;
更改 newuser,IP和密碼,根據(jù)你的配置需求。 %作為通配符,從而對整個子網(wǎng)的IP地址的行為,它允許遠程連接到這個數(shù)據(jù)庫節(jié)點。請記得在這個集群中的節(jié)點中添加相同的用戶具有相同配置的其他所有數(shù)據(jù)庫
撰寫本文參考了這篇文章MySQL NDB Cluster setup on Ubuntu 12.04 LTS, 做了一些改動。
如果有哪里有誤,歡迎指正,這篇文章的英文版本在我的個人網(wǎng)站xuri.me上.
網(wǎng)站標題:Ubuntu12.04LTS構(gòu)建高可用分布式MySQL集群
網(wǎng)站路徑:http://www.rwnh.cn/article22/cpshjc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設、網(wǎng)站設計公司、標簽優(yōu)化、服務器托管、企業(yè)建站、關鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)