|
其次要禁用SElinux、防火牆配置、禁用AppArmor,不過這些在Ubuntu14.04下都是不用配置的,所以就不詳細說明配置步驟。 開始安裝2 `% k8 R4 C/ \$ t3 h/ p, {
下面就是最實用的安裝過程,親測有效!$ T2 t% h; K: u/ a( G2 U# C
1.安裝需要的源 apt-get install software-properties-commonapt-key adv --keyserver keyserver.ubuntu.com --recv BC19DDBA
2 }/ O( c" R/ p, H& ^然後建立建立一個檔案,/etc/apt/sources.list.d/galera.list,galera.list裡面的內容為: deb http://releases.galeracluster.com/ubuntu trusty main
1 n; g7 O$ F1 o接下來就更新一下: apt-get update6 C& B: [/ `8 t8 i/ b* }
源配置好了之後,接下來就該安裝檔案了,執行: apt-get install galera-3 galera-arbitrator-3 mysql-wsrep-5.65 |9 j" {6 _" P5 Y& C5 o. v8 s
安裝完成之後,在每一個節點上啟動Mysql: service mysql start
" Q q0 ~( o7 l! F然後,驗證節點之間是否能互相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/ d4 M4 l& S! H, s2 S0 p
安裝好了,那麼下面要來修改Mysql的配置檔案了,開啟/etc/mysql/my.cnf,修改bind-address 127.0.0.1為: bind-address = 0.0.0.0
) T5 ]( q: J) N2 V" ]表示任何主機可以訪問。重啟Mysql: service mysql restart
% y( d N. C% O2 Q) T0 u9 Z- ]% Z接下來,試著在任何一個節點登入其他節點,比如Node1上執行: mysql -h 192.168.1.175 -u root -p& O% t' D4 D$ f! M6 N
此時會讓你輸入Mysql密碼,說明Node2上的Mysql伺服器是在監聽的,但此時輸入密碼是登入不成功的,後面會解決這個! J. S) j: \6 _2 M* @
接下來,我們還要對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
2 I4 P, a; O" T' E以上三個節點的配置注意以下幾點:. N; j# g9 j5 S6 d5 z
1. default_storage_engine這一行是必須的,因為Galera只能複製innodb的資料庫
* k, P' L: _ o/ s$ G2. wsrep_cluster_name這一行指定了叢集的名稱,叢集中的每個節點上都必須設定為一樣, ~: A0 P$ z- D8 A" |# E
3. 作為叢集中第一個啟動的節點Node1,wsrep_cluster_address必須設定為空,即"gcomm://",其他節點則要指定
) s" `( ^ X) w4. 最後一行的使用者名稱和密碼在所有節點上都必須一樣(此處使用者名稱為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;
+ ?' s" h T- n Q( d. y4 x, h% U重啟資料庫,然後可以試試前面提到的從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/
0 q7 @7 X/ y9 j0 O執行過程中可能會失敗,這個問題是因為在/etc/mysql/my.cnf檔案中有一行要改為: PermitRootLogin yes
1 w" N v' b% E% e& F+ E$ C這樣就會成功了! 當以上步驟都完成了之後,可以準備開始啟動叢集了! 啟動叢集/ O; u; c2 I% G8 I4 u1 M# G
在Node1上將mysql服務先停掉然後重啟,注意一定要在前面提到的wsrep_cluster_address="gcomm://"的節點上(本例中就是Node1)執行最開始的啟動程式: service mysql stopservice mysql start --wsrep-new-cluster
) k- E: n; P, B' H" w在其他節點上執行: service mysql restart 驗證是否成功 檢視資料表
0 B' L4 G) I7 _登入Node1: mysql -u root -pEnter password:mysql> SHOW STATUS LIKE 'wsrep%';8 o9 f, s, I! {
重點關注的是下面這幾行: wsrep_ready | ON+ v% j* J n5 T
如果狀態是 ON,那麼就要看: wsrep_cluster_size | 3 \% r6 H) g9 v; N
如果是3,那麼是成功的,否則是不成功的! 資料庫複製測試4 v1 j8 y* t: o4 r# {$ O4 M& x
在Node1上建立一個表: CREATE database test;& _( p; U, u. \. Q' P; K% v
立刻到Node2和Node3節點上使用 show databases; 檢視是否也有了test這個資料庫,如果有則成功! |