程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> mysql 雙機熱備實戰 --安恆網管員手記

mysql 雙機熱備實戰 --安恆網管員手記

編輯:關於MYSQL數據庫

mysql實現雙機熱備,原理是通過更新日志,用MySQL的SELECT的文件操作功能,備機實時抓取主機的更新日志,當然這只是其原理,實際上並不需要我們自己去處理日志,明白了原理,實施就比較容易理解了。
這樣,在主機端需要開一個賬號,這個賬號是備機用來抓取主機的更新日志。需要有文件訪問權限,在早期,剛開始實現雙機熱備時,就是用的文件權限。
從MySQL4 開始,添加了一個專門的權限,用來做熱備,這個權限本質應該還是文件讀取權限,但是應該只能用來讀取日志,防止一些漏洞。
對於客戶端來說,就是設置這個賬號,密碼,主服務器地址,還有要同步的數據庫名。這只是單向的,再配置一個對等的同步通道,就支持雙向的熱備了。
通過熱備,還可以備端從主端load全部數據。這個在同步出錯時可以使用。load權限是一個單獨的mysql權限,這樣跟熱備有關的MySQL的權限有2個,日志抓取和數據載入(REPLICATION SLAVE, REPLICATION CLIENT )
在服務器端開備份賬號
GRANT REPLICATION SLAVE , REPLICATION CLIENT ON * . * TO "backup"@ "192.168.1.2"IDENTIFIED BY "*****"WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 ;

在服務器端打開日志功能

/etc/MySQL/my.cnf
[MySQLd]
server-id = 1
log-bin
binlog-do-db = pa
max_binlog_size = 104857600
-------------------------------------------- 這樣,MySQL會在數據目錄放置pa這個庫的更新日志。等待備機來抓取。

客戶端設置:
/etc/MySQL/my.cnf
master-host=192.168.1.1
master-user=backup
master-passWord=12345
master-port=3306
master-connect-retry=60
replicate-do-db=pa

客戶端會到服務器抓取pa庫的更新日志,來更新本地的pa庫。

幾個跟熱備有關的mysql命令:(需要在MySQL命令行界面或query )

  • stop slave #停止同步
  • start slave #開始同步,從日志終止的位置開始更新。
  • SET SQL_LOG_BIN=0|1 #主機端運行,需要super權限,用來開停日志,隨意開停,會造成主機從機數據不一致,造成錯誤
  • SET GLOBAL SQL_SLAVE_SKIP_COUNTER=n # 客戶端運行,用來跳過幾個事件,只有當同步進程出現錯誤而停止的時候才可以執行。
  • RESET MASTER #主機端運行,清除所有的日志,這條命令就是原來的FLUSH MASTER
  • RESET SLAVE #從機運行,清除日志同步位置標志,並重新生成master.info
    雖然重新生成了master.info,但是並不起用,最好,將從機的MySQL進程重啟一下,
  • LOAD TABLE tblname FROM MASTER #從機運行,從主機端重讀指定的表的數據,每次只能讀取一個,受timeout時間限制,需要調整timeout時間。執行這個命令需要同步賬號有reload和super權限。以及對相應的庫有select權限。如果表比較大,要增加net_read_timeout 和 net_write_timeout的值
  • LOAD DATA FROM MASTER #從機執行,從主機端重新讀入所有的數據。執行這個命令需要同步賬號有reload和super權限。以及對相應的庫有select權限。如果表比較大,要增加net_read_timeout 和 net_write_timeout的值
  • CHANGE MASTER TO master_def_list #在線改變一些主機設置,多個用逗號間隔,比如
    CHANGE MASTER TO
    MASTER_HOST='master2.mycompany.com',
    MASTER_USER='replication',
    MASTER_PASSWord='bigs3cret'
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved