標籤:user mysql主從同步 slave 架構 虛擬機器 測試 image 增刪改 支援
檔案同步rsync同步http://www.cnblogs.com/itech/archive/2009/08/10/1542945.html在當前的生產工作中,大多數應用的mysql主從同步都是非同步複製方式,即不是嚴格即時的資料同步。即時和非同步:當配置好主從複製後,所有對資料庫內容的更新就必須在主伺服器上進行,以避免使用者對伺服器上資料庫內容的更新與對伺服器上資料庫內容的更新不一致而導致發生衝突。那麼,為什麼所有的更新都要在主伺服器上進行呢?我們又如何確保使用者再主伺服器上更新呢?通過發郵件或者口頭告訴開發人員約定好媽不讓其寫從庫,還是有別的可行辦法?其實可能的方法可以有很多,下面我們給大家一一道來。從技術手段上讓開發人員寫不了,而不是約定不讓他寫。 (1)主從伺服器互為備份主從伺服器架構的設定,可以大大的加強資料庫結構描述的健壯性。例如:當主伺服器出現問題時,我們可以人工或自動(http://oldboy.blog.51cto.com/2561410/1240412)切換到從伺服器繼續系統服務。這類似NFS儲存資料通過inotify+rsync同步到備份的nfs非常類似,只不過mysql的同步方案,是其內建的工具。非人為的硬體,服務故障,對於認為的執行drop,delete無能為力。(2)主從伺服器讀寫分離分擔網站壓力主從伺服器架構可通過程式(PHP/JAVA)或代理軟體(mysql-proxy,amoeba)對使用者(用戶端)的請求實現讀寫分離,即通過在從伺服器上僅僅處理使用者的select查詢請求,降低使用者查詢回應時間及讀寫同事在主伺服器帶來的壓力。對於更新的 資料(update、insert、delete)仍然交給主伺服器處理,確保主伺服器和從伺服器保持即時同步。如果網站是以非更新(以瀏覽為主)為主的業務,如blog,www首頁展示等業務,查詢請求比較多,這是從伺服器的讀寫文理負載平衡就很有效了,這就是傳說中的讀寫分離資料庫結構中大型公司:通過程式(php、java)測試環境:代理軟體(msyql-proxy,amoeba)門戶網站:分布式dbproxy(讀寫分離,hash負載平衡,健全狀態檢查) mysql主從複製實現今天說一下MySQL的主從複製如何做到!準備工作:1.兩個虛擬機器:我這裡用的是CentOS5.5,IP地址分別是192.168.1.101 和192.168.1.105; 101做主伺服器,105做從伺服器(都已經安裝相同版本的Mysql);2.本機環境:Apache+PHP+MySQL 好了,現在開始吧,來看看這聽起來高大上的主從複製是怎麼回事。 原理:mysql要做到主從複製,其實依靠的是二進位日誌,即:假設主伺服器叫A,從伺服器叫B;主從複製就是 B跟著A學,A做什麼,B就做什麼。那麼B怎麼同步A的動作呢?現在A有一個日誌功能,把自己所做的增刪改查的動作 全都記錄在日誌中,B只需要拿到這份日誌,照著日誌上面的動作施加到自己身上就可以了。這樣就實現了主從複製。 擴充:MYSQL還有一種日誌叫做:慢日誌 可以設定一個時間,那麼所有執行時間超過這個時間的SQL都會被記錄下來。這樣就可以通過慢日誌快速的找到網站中SQL的瓶頸來進行最佳化。 大家有時間可以研究一下,這裡不多做介紹。 實現步驟:1.首先修改mysql的設定檔,使其支援二進位日誌功能。開啟主伺服器的mysql設定檔:my.conf代碼:# vi /etc/my.cnf加入如下三行代碼:參數解釋:log-bin=mysql-bin //將mysql二進位日誌取名為mysql-bin binlog_format=mixed //二進位日誌的格式,有三種:statement/row/mixed,具體分別不多做解釋,這裡使用mixed server-id=101 //為伺服器設定一個獨一無二的id便於區分,這裡使用ip地址的最後一位充當server-id 配置完成,:wq 儲存,重啟mysql重啟mysql命令:# service mysqld restart同樣的,進入從伺服器,配置從伺服器的my.cnf,重複步驟1即可,唯一的區別是,server-id要改成從伺服器的ip尾位,即server-id=105;其他兩項是一樣的,儲存,並重啟mySQL; 2.在主伺服器上為從伺服器分配一個帳號,就像一把鑰匙,從伺服器拿著這個鑰匙,才能到主伺服器上來共用主伺服器的記錄檔。進入主伺服器的mysql介面,命令: # mysql -u root -p 111111 //我這裡mysql帳號是root,密碼是111111在mysql操作介面下,輸入下面一行命令:GRANT replication slave ON *.* TO ‘slave‘@‘%‘ IDENTIFIED BY ‘111111‘; 3.查看主伺服器BIN日誌的資訊(執行完之後記錄下這兩值,然後在配置完從伺服器之前不要對主伺服器進行任何操作,因為每次操作資料庫時這兩值會發生改變). 4.設定從伺服器進入從伺服器mysql命令: # mysql -u root -p111111 關閉slave(如果你以前配置過主從的話,一定要先關閉)命令:stop slave; 開始配置:輸入下面代碼即可:參數解釋:MASTER_HOST : 設定要串連的主伺服器的ip地址 MASTER_USER : 設定要串連的主伺服器的使用者名稱 MASTER_PASSWORD : 設定要串連的主伺服器的密碼 MASTER_LOG_FILE : 設定要串連的主伺服器的bin日誌的日誌名稱,即第3步得到的資訊 MASTER_LOG_POS : 設定要串連的主伺服器的bin日誌的記錄位置,即第3步得到的資訊,(這裡注意,最後一項不需要加引號。否則配置失敗) 先在從伺服器配置完成,啟動從伺服器:命令: start slave; 5.查看是否配置成功:命令: show slave status; 上面兩項均為yes,說明配置成功,否則,請重複前面的步驟。 ok,到這裡MySQL的主從複製就配置完了,其實明白原理的話還是很簡單的。
mysql主從同步配置