第二十六期 啟迪雲解決方案架構師 蔣運龍
一、MySQL 雙機同步複製
MySQL 支持單向、異步複製,複製過程中一個服務器充當Master,而一個或多個其它服務器充當Slave。Master 將更新寫入二進制日誌文件,並維護日誌文件的一個索引以跟蹤日誌循環。當一個Slave 連到Master 時,它通知Master,Slave 在日誌中讀取的最後一次成功更新的位置。Slave 接收從那時起發生的任何更新,然後封鎖並等待Master 通知下一次更新。
兩臺分佈於異地的主機上安裝有MySQL 數據庫,兩臺服務器互為主備,當其中某個節點出現故障時,另一節點能接管服務器上的應用,這就需要兩節點的數據實時保持一致,使用MySQL 的同步功能實現雙機同步複製。
二、配置規範
根據需要在兩個節點上配置雙機互備,相關信息如下:
三、環境確認
操作系統選擇CentOS 6.4 x86_64 版本,MySQL 版本為5.6.23。依以下步驟確認兩個節點的環境:
3.1. 內核及發佈版
備註:若使用過yum 升級,系統將自動升級最新源的版本。
3.2. /etc/hosts
3.3. 防火牆及 enforce配置
備註:可修改/etc/selinux/config 中的 SELINUX=disabled,但不推薦停止防火牆
3.4. 確認MySQL
四、MySQL雙節點同步設置
4.1. 創建日誌文件並授權
--分別在兩個節點運行
touch /var/lib/mysql/mysql-bin.log
chmod 755 /var/lib/mysql/mysql-bin.log
chown -R mysql:mysql /var/lib/mysql/mysql-bin.log
4.2. 編輯/usr/my.cnf
--分別在兩個節點運行 vi /usr/my.cnf
[client]
default-character-set=utf8
[mysqld]
lower_case_table_names=1
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
log-bin=/var/lib/mysql/mysql-bin.log
server-id=1 --此處 usdb6 設置為 1, 但usdb7必須將它改為2
binlog-ignore-db=information_schema,mysql,performance_schema
auto-increment-increment=2
auto-increment-offset=1--此處 usdb6 設置為 1, 但usdb7 必須將它改為 2
4.3. 重啟MySQL
4.4. 同步帳號的授權
master節點
grant replication slave on *.* to 'slave'@'172.168.56.7' identified by 'oracle';
slave 節點
grant replication slave on *.* to 'slave'@'172.168.56.6' identified by 'oracle';
4.5. 啟動 slave進程
master 節點
stop slave;
change master to master_host='172.168.56.7',master_user='slave',master_password='oracle'; start slave;
slave 節點
stop slave;
change master to master_host='172.168.56.6',master_user='slave',master_password='oracle'; start slave;
4.6. 驗證連接狀態
usdb06節點 show slave status\G;
usdb07節點 show slave status\G;
五、測試
5.1. usdb06節點建表
在eps 庫下,創建測試表my-test:
usdb07 節點驗證
多出my-test 表,結構與master 節點上定義一致。如下:
5.2. usdb07 節點DML
在usdb07節點DML並提交。
usdb06 節點驗證, 查詢發現此兩條記錄存在。如下:
通過上述驗證,表明usdb06、usdb07 兩個節點的雙向複製已成功。