|
其次要禁用SElinux、防火牆配置、禁用AppArmor,不過這些在Ubuntu14.04下都是不用配置的,所以就不詳細說明配置步驟。 開始安裝
, f7 b. p' l8 U2 G下面就是最實用的安裝過程,親測有效!3 m" U* n3 x* o1 Q
1.安裝需要的源 apt-get install software-properties-commonapt-key adv --keyserver keyserver.ubuntu.com --recv BC19DDBA3 T, Z5 J6 S3 K7 G! S! G
然後建立建立一個檔案,/etc/apt/sources.list.d/galera.list,galera.list裡面的內容為: deb http://releases.galeracluster.com/ubuntu trusty main7 Q( F" \. D0 f0 L1 o5 U5 @
接下來就更新一下: apt-get update
" V& ?7 K; Y. ]( k# I9 e9 T源配置好了之後,接下來就該安裝檔案了,執行: apt-get install galera-3 galera-arbitrator-3 mysql-wsrep-5.6: ^6 k) C. R; t# \8 L- c& d
安裝完成之後,在每一個節點上啟動Mysql: service mysql start
( A0 `; a& G/ m b# L. r2 E然後,驗證節點之間是否能互相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% H1 B0 v* b" z; c: H1 u4 ^* i |0 D5 ~/ s
安裝好了,那麼下面要來修改Mysql的配置檔案了,開啟/etc/mysql/my.cnf,修改bind-address 127.0.0.1為: bind-address = 0.0.0.0
3 k' p, {. m( k- W4 q- T2 t表示任何主機可以訪問。重啟Mysql: service mysql restart
8 v6 G* T7 W' T) V接下來,試著在任何一個節點登入其他節點,比如Node1上執行: mysql -h 192.168.1.175 -u root -p
8 O$ A1 z5 E1 L& X此時會讓你輸入Mysql密碼,說明Node2上的Mysql伺服器是在監聽的,但此時輸入密碼是登入不成功的,後面會解決這個!
. z T2 w' A# N) s8 M8 I3 s" W接下來,我們還要對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
5 ^% D6 F, n5 }( b# }5 M3 n" `以上三個節點的配置注意以下幾點:; z" u, {+ y# j0 ^/ r
1. default_storage_engine這一行是必須的,因為Galera只能複製innodb的資料庫
- q/ g! W) m7 \- R" M2. wsrep_cluster_name這一行指定了叢集的名稱,叢集中的每個節點上都必須設定為一樣1 h: y# Q ~$ e/ u% n6 g
3. 作為叢集中第一個啟動的節點Node1,wsrep_cluster_address必須設定為空,即"gcomm://",其他節點則要指定
- D# C3 q* v' {/ M1 \ 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;- _+ \$ U) x2 J: i2 S
重啟資料庫,然後可以試試前面提到的從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/2 I2 o3 J4 |: G8 J5 P" L; W! |
執行過程中可能會失敗,這個問題是因為在/etc/mysql/my.cnf檔案中有一行要改為: PermitRootLogin yes
8 m- U3 E+ \3 h2 R K7 r這樣就會成功了! 當以上步驟都完成了之後,可以準備開始啟動叢集了! 啟動叢集
8 o2 F: a/ t8 U8 R5 M7 g在Node1上將mysql服務先停掉然後重啟,注意一定要在前面提到的wsrep_cluster_address="gcomm://"的節點上(本例中就是Node1)執行最開始的啟動程式: service mysql stopservice mysql start --wsrep-new-cluster$ L8 @2 X( x u+ X& z2 Q* ]
在其他節點上執行: service mysql restart 驗證是否成功 檢視資料表. @1 h+ G( {6 G$ U1 @
登入Node1: mysql -u root -pEnter password:mysql> SHOW STATUS LIKE 'wsrep%';7 e5 V/ Y& J" u6 M" [1 v" |+ f) H) m
重點關注的是下面這幾行: wsrep_ready | ON
5 h5 \4 x% [6 u' z如果狀態是 ON,那麼就要看: wsrep_cluster_size | 3: I0 _9 L5 f/ Q' d1 `& w/ B; w2 g# d
如果是3,那麼是成功的,否則是不成功的! 資料庫複製測試
" m. C L6 D% q2 O: h在Node1上建立一個表: CREATE database test;
* ?: Y6 c2 i; \# r& @" A1 X立刻到Node2和Node3節點上使用 show databases; 檢視是否也有了test這個資料庫,如果有則成功! |