|
其次要禁用SElinux、防火牆配置、禁用AppArmor,不過這些在Ubuntu14.04下都是不用配置的,所以就不詳細說明配置步驟。 開始安裝$ W4 u* |& ?5 H
下面就是最實用的安裝過程,親測有效!
3 {! i5 ^! ?: J% R1.安裝需要的源 apt-get install software-properties-commonapt-key adv --keyserver keyserver.ubuntu.com --recv BC19DDBA
W. y6 N7 x% L3 O9 w" y然後建立建立一個檔案,/etc/apt/sources.list.d/galera.list,galera.list裡面的內容為: deb http://releases.galeracluster.com/ubuntu trusty main/ B! E2 i; {# a f$ Q
接下來就更新一下: apt-get update
" d' `5 p+ z/ Z0 I9 W& G源配置好了之後,接下來就該安裝檔案了,執行: apt-get install galera-3 galera-arbitrator-3 mysql-wsrep-5.6
: w W! G/ g, z$ `) {安裝完成之後,在每一個節點上啟動Mysql: service mysql start
" x( d& S+ g3 o* t1 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
$ B7 l# [! C, H. F安裝好了,那麼下面要來修改Mysql的配置檔案了,開啟/etc/mysql/my.cnf,修改bind-address 127.0.0.1為: bind-address = 0.0.0.08 t2 t: T7 j% T3 t& b8 o
表示任何主機可以訪問。重啟Mysql: service mysql restart
- d# \* L" E# s: j7 U0 q接下來,試著在任何一個節點登入其他節點,比如Node1上執行: mysql -h 192.168.1.175 -u root -p
Z- h X- l) `' \; x此時會讓你輸入Mysql密碼,說明Node2上的Mysql伺服器是在監聽的,但此時輸入密碼是登入不成功的,後面會解決這個!
* k+ c" f% w0 ~4 N5 F. k接下來,我們還要對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
3 \; B: z; R8 M' \以上三個節點的配置注意以下幾點:/ b- p/ y4 I9 a1 z1 q; z2 Q
1. default_storage_engine這一行是必須的,因為Galera只能複製innodb的資料庫/ x0 x3 q8 ?- Q) g- }/ `
2. wsrep_cluster_name這一行指定了叢集的名稱,叢集中的每個節點上都必須設定為一樣
6 O9 U- Z. H( e* [; D# \% y3. 作為叢集中第一個啟動的節點Node1,wsrep_cluster_address必須設定為空,即"gcomm://",其他節點則要指定, {) k+ [+ J* o. H+ ^3 B
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;, t* Z! w6 N0 o) d7 E2 `- x
重啟資料庫,然後可以試試前面提到的從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/+ U0 d' U" ~) c1 m7 F& }1 r4 k( V
執行過程中可能會失敗,這個問題是因為在/etc/mysql/my.cnf檔案中有一行要改為: PermitRootLogin yes
8 l( h9 E- d/ ]& w9 Y$ t' q這樣就會成功了! 當以上步驟都完成了之後,可以準備開始啟動叢集了! 啟動叢集
) G a: d' \) r. z! n1 {, I# C在Node1上將mysql服務先停掉然後重啟,注意一定要在前面提到的wsrep_cluster_address="gcomm://"的節點上(本例中就是Node1)執行最開始的啟動程式: service mysql stopservice mysql start --wsrep-new-cluster! k: q: \- z$ b: U7 a4 k2 M
在其他節點上執行: service mysql restart 驗證是否成功 檢視資料表
. c5 B4 o5 b. W" {登入Node1: mysql -u root -pEnter password:mysql> SHOW STATUS LIKE 'wsrep%';4 F6 z1 M' V- h' t& x- }# u
重點關注的是下面這幾行: wsrep_ready | ON& y6 b7 U1 F' e2 H
如果狀態是 ON,那麼就要看: wsrep_cluster_size | 35 C6 g. p( B, y" p+ [
如果是3,那麼是成功的,否則是不成功的! 資料庫複製測試
. F# Y' R, P; i4 S; T在Node1上建立一個表: CREATE database test;( N. ^) ]2 y6 `- ]* e+ w3 _1 q
立刻到Node2和Node3節點上使用 show databases; 檢視是否也有了test這個資料庫,如果有則成功! |