|
其次要禁用SElinux、防火牆配置、禁用AppArmor,不過這些在Ubuntu14.04下都是不用配置的,所以就不詳細說明配置步驟。 開始安裝3 l& b# S$ f8 L+ X4 @0 U$ L
下面就是最實用的安裝過程,親測有效!
; w6 ~/ S( ]% E1.安裝需要的源 apt-get install software-properties-commonapt-key adv --keyserver keyserver.ubuntu.com --recv BC19DDBA8 X `+ ]# [+ T7 {8 Y& ?" I$ t
然後建立建立一個檔案,/etc/apt/sources.list.d/galera.list,galera.list裡面的內容為: deb http://releases.galeracluster.com/ubuntu trusty main
" D* O# K" x+ v7 c接下來就更新一下: apt-get update
; C3 G4 S5 h4 }+ y8 J- _源配置好了之後,接下來就該安裝檔案了,執行: apt-get install galera-3 galera-arbitrator-3 mysql-wsrep-5.6# L. t4 k8 i+ w7 K# E
安裝完成之後,在每一個節點上啟動Mysql: service mysql start6 b" C, W$ n; U2 E1 D% Q: W9 m3 X
然後,驗證節點之間是否能互相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
6 @5 \, v* J; y安裝好了,那麼下面要來修改Mysql的配置檔案了,開啟/etc/mysql/my.cnf,修改bind-address 127.0.0.1為: bind-address = 0.0.0.0
& `* x6 N3 F! m; ]& S表示任何主機可以訪問。重啟Mysql: service mysql restart. s8 e9 m' x) J% @/ V) i
接下來,試著在任何一個節點登入其他節點,比如Node1上執行: mysql -h 192.168.1.175 -u root -p
( y' w' D0 s0 _) N此時會讓你輸入Mysql密碼,說明Node2上的Mysql伺服器是在監聽的,但此時輸入密碼是登入不成功的,後面會解決這個!% y+ B! w! ?+ g% d
接下來,我們還要對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:password1 Y& G) ?% x0 u7 \1 O; U
以上三個節點的配置注意以下幾點:
! X# G" h/ i* }1. default_storage_engine這一行是必須的,因為Galera只能複製innodb的資料庫
( `9 P/ t2 k1 i+ Y2. wsrep_cluster_name這一行指定了叢集的名稱,叢集中的每個節點上都必須設定為一樣7 o$ P2 Z! D0 F5 q I7 U& p% E
3. 作為叢集中第一個啟動的節點Node1,wsrep_cluster_address必須設定為空,即"gcomm://",其他節點則要指定
+ ]8 I; Q, e5 Z ?: O4 q4. 最後一行的使用者名稱和密碼在所有節點上都必須一樣(此處使用者名稱為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;" N4 ^. f/ k7 B8 ^( |
重啟資料庫,然後可以試試前面提到的從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/- j% c/ N7 p$ m# J, y3 @& d
執行過程中可能會失敗,這個問題是因為在/etc/mysql/my.cnf檔案中有一行要改為: PermitRootLogin yes
' ?* ~9 h0 I1 n% ~: K! j7 i這樣就會成功了! 當以上步驟都完成了之後,可以準備開始啟動叢集了! 啟動叢集
7 S$ v: ]) D* m在Node1上將mysql服務先停掉然後重啟,注意一定要在前面提到的wsrep_cluster_address="gcomm://"的節點上(本例中就是Node1)執行最開始的啟動程式: service mysql stopservice mysql start --wsrep-new-cluster
& O/ [9 X0 P: O& I' j在其他節點上執行: service mysql restart 驗證是否成功 檢視資料表
) R& S! `; s0 F2 q; X8 K登入Node1: mysql -u root -pEnter password:mysql> SHOW STATUS LIKE 'wsrep%';
% r3 a5 E7 |" p7 T重點關注的是下面這幾行: wsrep_ready | ON6 N+ g( L) @- h& I) D# H' V4 C
如果狀態是 ON,那麼就要看: wsrep_cluster_size | 3
: i% c3 l+ i# V; f/ b$ t7 {2 v如果是3,那麼是成功的,否則是不成功的! 資料庫複製測試: R c& { Y. T ?0 U3 ?
在Node1上建立一個表: CREATE database test;
2 S. a7 ?7 `' w立刻到Node2和Node3節點上使用 show databases; 檢視是否也有了test這個資料庫,如果有則成功! |