從零開始配置 MySQL MMM

發表於2015-11-22

雲平臺是個好東西,MySQL-MMM 的典型配置是需要五臺機器,一臺作為MMM admin,兩臺master,兩臺slave。一下子找五臺機器真不容易,何況還要安裝同樣的作業系統。

而有了cloud,簡單幾步就有了完備的實驗環境:四臺資料庫伺服器和一臺管理伺服器(Memory:8G,CPU:2G,Disk:128G,64bit RHEL6)。在此,向為付出辛勞搭建雲平臺的同事們表示由衷的感謝:-)

下面言歸正傳,開始全新的MySQL mmm之旅。

下面要配置的MySQL Cluster環境包含四臺資料庫伺服器和一臺管理伺服器,如下:

function IP Server Name server id
monitor 192.168.84.174
master 192.168.85.167 db1 1
master 192.168.85.169 db2 2
slave 192.168.85.171 db3 3
slave 192.168.85.168 db4 4

配置完成後,使用下面的虛擬IP訪問MySQL Cluster

IP role
192.168.85.200 writer
192.168.85.201 reader
192.168.85.202 reader
192.168.85.203 reader

一、配置MySQL Relication

1. 安裝MySQL

通過yum命令直接安裝了mysql5.1.52。

2. 修改配置檔案/etc/my.cnf

要將新增的內容放在配置檔案的[mysqld]部分,如下:

注意:

  • 1)server-id在每臺伺服器上的值都是不一樣,在這裡依次為1、2、3、4。
  • 2)因為在這裡把log檔案配置到了/var/log/mysql下,而mysql預設的目錄是在/var/lib/mysql,所以首先要新建mysql資料夾,然後用chown -R mysql.mysql mysql命令將mysql的所有者修改為使用者mysql。其次要保證,mysql資料夾的許可權755(即-rwxr-xr-x)。

如果沒有修改許可權和所有者,重啟服務時就會在錯誤日誌中出現找不到mysql-bin.log或者mysql-bin.log.index的錯誤(/usr/libexec/mysqld: File ‘/var/log/mysql/mysql-bin.log.index’ not found (Errcode: 13))。

3. 重新啟動mysql服務

在完成了對my.cnf的修改後,通過 service mysqld restart 重新啟動mysql服務。在正確啟動後,可以通過如下方式檢查配置是否正確:

1)登入mysql,執行show master status,看是否有如下輸出:

2)到/var/log/mysql目錄下,看是否產生了類似mysql-bin.000001和mysql-bin.log.index的檔案。

二、新建同步資料庫需要的使用者

使用mysql-mmm時一共需要三個使用者: replication、mmm_agent和mmm_monitor(管理伺服器上用來監控cluster狀態的使用者,所以可以限定只能從管理伺服器登入)。使用下面三條命令新建這三個使用者並分配相應的許可權:

三、同步主從資料庫

1. 從主資料庫伺服器匯出當前資料庫內容

注意保留上述資訊,後面還會用到。另外,不要結束當前mysql控制檯,重新開啟一個視窗,匯出資料庫。

釋放鎖

2. 將匯出的sql檔案匯入到其他幾臺資料庫伺服器上。首先通過scp複製過去:

在其他幾臺服務其上匯入改SQL檔案:

3. 啟動從資料庫SLAVE程式。

4. 將db02作為master,db01作為slave,重複1-3。

四、安裝MMM

在管理伺服器和資料庫伺服器上分別要執行mysql-mmm monitor和agent程式。下面分別安裝:

1. 安裝監控程式

在管理伺服器(192.168.84.174)上,執行下面命令:

與monitor依賴的所有檔案也會隨之安裝,但是有一個例外perl-Time-HiRes,所以還需要執行下面的命令:

2. 安裝代理程式

在資料庫伺服器上執行下面的命令:

五、配置MMM

1. 編輯mmm_common.conf

完成安裝後,所有的配置檔案都放到了/etc/mysql-mmm/下面。管理伺服器和資料庫伺服器上都要包含一個共同的檔案mmm_common.conf,內容如下:

可以在db1上編輯該檔案後,通過scp命令分別複製到monitor、db2、db3和db4上。

2. 編輯 mmm_agent.conf。

在資料庫伺服器上,還有一個mmm_agent.conf需要修改,其內容是:

最後一行的db1,在不同的資料庫伺服器上要分別改為db2、db3和db4,否則代理就會無法啟動。

3. 編輯 mmm_mon.confg。

在管理伺服器上,修改mmm_mon.conf檔案,修改後內容為:

六、啟動MMM

1. 在資料庫伺服器上啟動代理程式

2. 在管理伺服器上啟動監控程式

啟動後,稍等幾秒,可以通過mmm_control程式檢視狀態:

七、遇到兩個問題

1. 監控程式伺服器無法啟動

在管理伺服器上,一切都完成後,通過mmm_control檢視狀態,得到下面的錯誤資訊:ERROR: Can’t connect to monitor daemon! 通過編輯/etc/mysql-mmm/mmm_mon.conf檔案將debug 0改為debug 1,開啟監控程式的debug狀態。重新啟動監控程式(service mysql-mmm-monitor restart),就會看到詳細的錯誤資訊,找不到Perl Time HiRes庫。執行yum -y install perl-Time-HiRes*就可以解決。

2. 防火牆問題導致Warning: agent on host db1 is not reachable.

控制檯程式正確啟動後,再次執行mmm_control show,卻看到下面的輸出:

再次開啟debug,發現了下面的錯誤資訊:

通過telnet 192.168.85.167 9989下面檢查網路連線,得到了No route to host的錯誤資訊。登入db1,通過setup程式裡的Firewall configuration關閉Firewall(這不是一個好主意)。同樣,關閉db2、db3和db4上的防火牆,再次重啟監控程式,一切回到正常狀態!

參考文章:

相關文章