|
其次要禁用SElinux、防火牆配置、禁用AppArmor,不過這些在Ubuntu14.04下都是不用配置的,所以就不詳細說明配置步驟。 開始安裝. E( t8 A9 g' W9 H% J) C* ^7 i
下面就是最實用的安裝過程,親測有效!
9 F: a8 Q/ Q8 H8 T% k) I ^5 `1.安裝需要的源 apt-get install software-properties-commonapt-key adv --keyserver keyserver.ubuntu.com --recv BC19DDBA( U) j% F" ~% J$ u. S% \: K
然後建立建立一個檔案,/etc/apt/sources.list.d/galera.list,galera.list裡面的內容為: deb http://releases.galeracluster.com/ubuntu trusty main
8 ]& q9 c, a5 h: w/ S接下來就更新一下: apt-get update
* p, B# E- T) [- L9 L9 V源配置好了之後,接下來就該安裝檔案了,執行: apt-get install galera-3 galera-arbitrator-3 mysql-wsrep-5.6
0 ^, I/ d7 v7 p( J5 t. a安裝完成之後,在每一個節點上啟動Mysql: service mysql start
5 v8 [ D2 ]2 I) q4 h, s3 C然後,驗證節點之間是否能互相ping通: root@node1:~#ping 192.168.1.175root@node1:~#ping 192.168.1.176root@node2:~#ping 192.168.1.174root@node2:~#ping 192.168.1.176root@node3:~#ping 192.168.1.174root@node3:~#ping 192.168.1.175' i$ W% \1 j2 C0 o1 j& ?! q
安裝好了,那麼下面要來修改Mysql的配置檔案了,開啟/etc/mysql/my.cnf,修改bind-address 127.0.0.1為: bind-address = 0.0.0.0& L# I1 ~$ M: u" G
表示任何主機可以訪問。重啟Mysql: service mysql restart
3 C2 F: c9 a+ L( V( z. \接下來,試著在任何一個節點登入其他節點,比如Node1上執行: mysql -h 192.168.1.175 -u root -p
/ n* C1 |0 V* u+ t此時會讓你輸入Mysql密碼,說明Node2上的Mysql伺服器是在監聽的,但此時輸入密碼是登入不成功的,後面會解決這個!
9 ~( W0 Z e! H! U2 r/ l接下來,我們還要對Mysql配置檔案進一步配置: 在 Node1 上的/etc/mysql/my.cnf裡面的[mysql]下面新增上:binlog_format=ROWdefault-storage-engine=innodbinnodb_autoinc_lock_mode=2wsrep_provider=/usr/lib/libgalera_smm.sowsrep_provider_options="gcache.size=300M; gcache.page_size=1G"wsrep_cluster_name="galeracluster"wsrep_cluster_address="gcomm://"wsrep_sst_method=rsyncwsrep_sst_auth=wsrep:password 在 Node2 上的/etc/mysql/my.cnf裡面的[mysql]下面新增上:binlog_format=ROWdefault-storage-engine=innodbinnodb_autoinc_lock_mode=2wsrep_provider=/usr/lib/libgalera_smm.sowsrep_provider_options="gcache.size=300M; gcache.page_size=1G"wsrep_cluster_name="galeracluster"wsrep_cluster_address="gcomm://192.168.1.174"wsrep_sst_method=rsyncwsrep_sst_auth=wsrep:password 在 Node3 上的/etc/mysql/my.cnf裡面的[mysql]下面新增上:binlog_format=ROWdefault-storage-engine=innodbinnodb_autoinc_lock_mode=2wsrep_provider=/usr/lib/libgalera_smm.sowsrep_provider_options="gcache.size=300M; gcache.page_size=1G"wsrep_cluster_name="galeracluster"wsrep_cluster_address="gcomm://192.168.1.174"wsrep_sst_method=rsyncwsrep_sst_auth=wsrep:password& m/ s O" i& H& L
以上三個節點的配置注意以下幾點:
9 k7 Z; X2 j# v1 i) X' K1. default_storage_engine這一行是必須的,因為Galera只能複製innodb的資料庫
' u+ F5 O: L8 X. a( a2. wsrep_cluster_name這一行指定了叢集的名稱,叢集中的每個節點上都必須設定為一樣6 K6 m0 l) Q7 q5 V! S, R' q
3. 作為叢集中第一個啟動的節點Node1,wsrep_cluster_address必須設定為空,即"gcomm://",其他節點則要指定 `7 R9 N" S* k& R
4. 最後一行的使用者名稱和密碼在所有節點上都必須一樣(此處使用者名稱為wsrep,後面馬上會建立該使用者,密碼為password) 下面,在每個節點上建立使用者及實現遠端資料庫可以登入(解決前文說到的無法訪問): mysql –u root –pCREATE USER ‘wsrep’@’%’ IDENTIFIED BY ‘password’;CREATE USER ‘root’@’%’ IDENTIFIED BY ‘password’;GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;FLUSH PRIVILEGES;+ ^; O% _+ ~1 r* l* m% I
重啟資料庫,然後可以試試前面提到的從Node1登入到Node2是否能成功! 接下來,Ubuntu有一個特別的使用者叫debian-sys-maint會來維持Mysql的執行任務,由於資料庫的複製,這個維護的執行只會在第一個節點成功進行,在其他節點上則會失敗,所以要將啟動節點上的/etc/mysql/debian.cnf檔案拷貝到其他節點上,執行如下命令: scp /etc/mysql/debian.cnf root@192.168.1.175:/etc/mysql/scp /etc/mysql/debian.cnf root@192.168.1.176:/etc/mysql/ X( Y4 h% T# z! P7 w+ a
執行過程中可能會失敗,這個問題是因為在/etc/mysql/my.cnf檔案中有一行要改為: PermitRootLogin yes- `+ N- r$ r9 K ?# B6 L- H% Q
這樣就會成功了! 當以上步驟都完成了之後,可以準備開始啟動叢集了! 啟動叢集
! _2 }6 Y3 F9 x; O7 W1 e在Node1上將mysql服務先停掉然後重啟,注意一定要在前面提到的wsrep_cluster_address="gcomm://"的節點上(本例中就是Node1)執行最開始的啟動程式: service mysql stopservice mysql start --wsrep-new-cluster6 }/ b: K: w! g- b+ z
在其他節點上執行: service mysql restart 驗證是否成功 檢視資料表- N J6 d! P" t" `: K4 Z- f
登入Node1: mysql -u root -pEnter password:mysql> SHOW STATUS LIKE 'wsrep%';9 ~& y: D# u8 f0 U
重點關注的是下面這幾行: wsrep_ready | ON
* P2 M _* R& {: P# K4 z) |3 { ]如果狀態是 ON,那麼就要看: wsrep_cluster_size | 3
# P/ H! }/ D2 x0 P/ A如果是3,那麼是成功的,否則是不成功的! 資料庫複製測試& r4 ^ Q+ ~+ V% `4 @! f
在Node1上建立一個表: CREATE database test;
8 ^: v& I2 u! r! {! ?立刻到Node2和Node3節點上使用 show databases; 檢視是否也有了test這個資料庫,如果有則成功! |