標籤:
背景:所負責的自動化持續傳遞平台業務量逐漸增長,以防不測,需要搭建備份系統,經過多方考量;
選擇採取mysql的主從系統進行備份;互為主從(即所謂雙主);
PS:
三種備份方式:
a、指令碼通過mysqldump備份 ----------- 資料量少時可以採取
b、第三方工具備份 ----------- 大多數工具都是windows端的。一旦出現問題,恢複起來步驟稍多(本人比較懶,能自動化的最好都自動化)
c、mysql的主從同步機制 ------------ 推薦,即時增量熱備,切換時可以直接啟用DB。
下列為搭建記錄,以備查:
一、mysql主主同步配置流程
1、兩個伺服器建立同步帳號
GRANT REPLICATION SLAVE,FILE ON *.* TO ‘replication‘@‘192.168.%.%‘ IDENTIFIED BY ‘123456‘;
FLUSH PRIVILEGES;
--------------- 使用者名稱 ‘replication‘ 密碼 ‘123456‘ 許可權 SLAVE,FILE
2、修改伺服器設定檔 ------------------ 根據伺服器變數名的不同,以及部署位置的不同,具體的變數賦值需要調整
主伺服器A:
#replicate confi
server-id = 14550
log-bin=mysql-bin
log-bin-index=master-bin.index
binlog_format="ROW"
innodb_file_per_table=1
replicate_do_db =jats
relay_log =/var/lib/mysql/mysql-relay-bin.log
主伺服器B:
server-id = 14542
replicate_do_db =jats
relay_log =/var/log/mysql/mysql-relay-bin.log
slave-net-timeout=60
3、從伺服器A的jats 使用 load或mysqldump匯入到B伺服器;
4、重啟A/B伺服器
5、從伺服器啟動同步進程
stop slave;
reset slave;
change master to master_host=‘192.168.145.45‘,master_port=3306,master_user=‘replication‘,master_password=‘123456‘,master_log_file=‘mysql-bin.000002‘,master_log_pos=6663;
------------------其中的 master_log_file/master_log_pos 都是主伺服器的log檔案(主伺服器使用 show master status可以看到)
b、start slave;
6、至此主伺服器jats的任何資料變化都會被同步到從伺服器
7、此時雙方伺服器的所有操作都會互相同步;
二、mysql同步方式和原理
http://www.cnblogs.com/carterzhang/articles/4633540.html
1、同步方式:
模式:主從(1主多從)
複製方式:同步複製、單向同步、非同步複製
2、同步原理
原理:
a、一個伺服器充當主服務,而一個或多個伺服器充當從伺服器。
b、主伺服器將更新寫入二進位記錄檔,並維護檔案的一個索引以追蹤記錄檔迴圈。這些日誌可以記錄發送到從伺服器的更新。
c、從伺服器串連主伺服器時,它通知主伺服器此從伺服器在日誌中讀取的最後一次成功更新的位置。
d、從伺服器接收從那時起發生的任何更新,然後封鎖並等待主伺服器通知新的更新。 ------------- 此過程一直持續,知道關閉同步功能;
步流程:(接到主伺服器通知更新後)(主要是通過執行和結果返回分離來實現):
a、主伺服器開啟1個線程m用於將二進位日誌內容發送給從伺服器(即s1線程執行語句後的結果)
b、從伺服器開啟2個進程,
1) 線程s1:建立一個I/O線程,以串連主伺服器並讓它發送記錄在其二進位日誌中的語句。
2) 線程s2:從relaylog中讀取更新
c、主伺服器將二進位檔案更新推送給從伺服器
e、從伺服器將更新寫入同步處理記錄(relay log)
f、從伺服器mysql主進程從relay log讀取更新並執行;
二、日常維護注意事項
1、binary log 以及 relay log的大小控制
三、關鍵參數配置含義
log_bin 二進位檔案位置
relay_log 中繼檔案位置
relay_log_index中級日誌索引
replicate_do_db 只同步某個DB
slave-net-timeout 同步逾時設定(秒)
server-id 伺服器ID,不同伺服器不重複
四、同步相關命令
stop slave ------------停止同步線程
reset slave ------------- 清空同步配置
change master to master_host=‘192.168.145.45‘,master_port=3306,master_user=‘replication‘,master_password=‘123456‘,master_log_file=‘mysql-bin.000002‘,master_log_pos=6663; -------- 設定主伺服器
------------------其中的 master_log_file/master_log_pos 都是主伺服器的log檔案(主伺服器使用 show master status可以看到)
start slave -------------- 開啟同步線程
show master status ----------- 作為主伺服器時,查看配置
show slave status ----------- 作為從伺服器時查看同步配置
mysql系統搭建互備DB(雙主)記錄