說起mysql的集群估計很多人會首先想起mysql自帶的replication或者mysql-mmm。mysql-mmm其實也是基於mysql自帶的replication的,不過封裝的更好用一些,但是配置起來還是比較麻煩,而且對於動態增減master節點可以說是無能為力的。
偶然的情況下了解到有一個基於mysql的集群galera,除了只支持InnoDB以外,基本就沒什麼缺點了。大家看看官方是怎麼說的:
廢話少說,馬上開始動手測試,測試用的OS是64位的CentOS 6。首先,添加MariaDB的軟件倉庫,創建文件“/etc/yum.repos.d/MariaDB.repo”,內容
# MariaDB 5.5 CentOS repository list - created 2013-11-05 06:30== http://yum.mariadb.org/5.5==1
# yum -y install MariaDB-Galera-server.x86_64 MariaDB-client.x86_64 galera.x86_64
# cp /usr/share/mysql/wsrep.cnf /etc/my.cnf.d/
Galera默認試用4567端口同步數據,需要修改防火牆,這裡為了方便直接把防火牆給關閉了
# /etc/init.d/iptables stop
MariaDB-Galera貌似沒有給你提供配套的selinux配置,為了方便,直接把selinux給禁止了
# setenforce 0
既然是集群,當然不能只有一台機器
修改機器a的“/etc/my.cnf.d/wsrep.cnf”,改動內容
=="gcomm://"=192.168.56.103
因為機器a是第一個節點,wsrep_cluster_address直接填"gcomm://"就可以了。如果是要加入到某個集群,那就填集群裡面隨便一個節點的ip就可以,例如"gcomm://192.168.56.103:4567"。wsrep_sst_receive_address是本機用來接收同步數據的ip,默認是機器網絡配置裡面找到的第一個ip,如果機器有多個ip的話最好指定一下,例如“192.168.56.103”。啟動mysql數據庫服務
# /etc/init.d/mysql start
現在要把機器b加入到集群,同樣修改配置文件“/etc/my.cnf.d/wsrep.cnf”,改動內容
=="gcomm://192.168.56.103:4567"=192.168.56.104
啟動機器b的mysql服務。
到這裡集群就搭建完畢了,現在開始正式測試集群。首先,鏈接機器a的mysql服務,創建一個數據庫和一張表,表裡面有一個讓mysql-mmm比較麻煩和頭疼的AUTO_INCREMENT字段,順便添加樂一個用來訪問這個數據庫的用戶
# mysql the MariaDB monitor. Commands ; .33aMariaDB MariaDB Server, wsrep_23., , Oracle, Monty Program Ab help. Type clear the row affected ( asdf. @ identified rows affected ( aatt (aa rows affected ( aatt ( row affected ( aatt ( row affected ( aa rows ( sec)
auto_increment的步進自動變成2了,是不是很智能?現在我們去到機器b,用新建的用戶名登錄mysql服務,執行類似的操作
# mysql u aauu the MariaDB monitor. Commands ; .33aMariaDB MariaDB Server, wsrep_23., , Oracle, Monty Program Ab help. Type clear the aatt ( row affected ( aatt ( row affected ( aa rows ( sec)
看到沒有?剛才插入的數據都在這個就沒什麼值得說的,厲害的是機器a上新建的用戶在這裡可以用!現在我們來動態把機器c加入到集群裡面去
=="gcomm://192.168.56.104:4567"=192.168.56.105
之前說過的,加入到集群裡面隨便一個節點的ip都可以。啟動機器c的mysql服務,然後執行類似操作
# mysql the MariaDB monitor. Commands ; .33aMariaDB MariaDB Server, wsrep_23., , Oracle, Monty Program Ab help. Type clear the information completion this feature get a quicker startup aatt ( row affected ( aatt ( row affected ( aa rows ( sec)
auto_increment的步進自動變成3了,看到沒有?
這裡我只是簡單的列舉了Galera的一個使用場景,還有很多它先進的地方這裡沒有提到,它大家可以上它的官方網站看看。
參考網址: