1 複制概述
Mysql内建的複制功能是建構大型,高性能應用程式的基礎。将Mysql的資料分布到多個系統上去,這種分布的機制,是通過将Mysql的某一台主機的資料複制到其它主機(slaves)上,并重新執行一遍來實作的。複制過程中一個伺服器充當主伺服器,而一個或多個其它伺服器充當從伺服器。主伺服器将更新寫入二進制日志檔案,并維護檔案的一個索引以跟蹤日志循環。這些日志可以記錄發送到從伺服器的更新。當一個從伺服器連接配接主伺服器時,它通知主伺服器從伺服器在日志中讀取的最後一次成功更新的位置。從伺服器接收從那時起發生的任何更新,然後封鎖并等待主伺服器通知新的更新。
請注意當你進行複制時,所有對複制中的表的更新必須在主伺服器上進行。否則,你必須要小心,以避免使用者對主伺服器上的表進行的更新與對從伺服器上的表所進行的更新之間的沖突。
1.1 mysql支援的複制類型:
(1)基于語句的複制:在主伺服器上執行的SQL語句,在從伺服器上執行同樣的語句。MySQL預設采用基于語句的複制,效率比較高。一旦發現沒法精确複制時,會自動選着基于行的複制。
(2)基于行的複制:把改變的内容複制過去,而不是把指令在從伺服器上執行一遍. 從mysql5.0開始支援
(3)混合類型的複制: 預設采用基于語句的複制,一旦發現基于語句的無法精确的複制時,就會采用基于行的複制。
1.2 複制解決的問題
MySQL複制技術有以下一些特點:
(1) 資料分布 (Data distribution )
(2) 負載平衡(load balancing)
(3) 備份(Backups)
(4) 高可用性和容錯行 High availability and failover
1.3 複制如何工作
整體上來說,複制有3個步驟:
(1) master将改變記錄到二進制日志(binary log)中(這些記錄叫做二進制日志事件,binary log events);
(2) slave将master的binary log events拷貝到它的中繼日志(relay log);
(3) slave重做中繼日志中的事件,将改變反映它自己的資料。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI10TbvJnZ4dnJwJWZ31Dc0ZyZlBna9QXbm9Fe39DM0YzLcd2RNJkN3JzcDZ0YKZ0chlGcSV3aURlenlXSCl3ZKpXUrdFMilWYQh2bNFjewITZNZGOY1GezVEdjxUbU1kYpFVOzI1Yl5GOENTb4UUU2AzS3FWaNh1N4IWa0A1LcpXai1Wbvwlbj5yYpBXcuoXai1Wbvw1LcpDc0RHaiojIsJye.jpg)
複制配置
有兩台MySQL資料庫伺服器Master和slave,Master為主伺服器,slave為從伺服器,初始狀态時,Master和slave中的資料資訊相同,當Master中的資料發生變化時,slave也跟着發生相應的變化,使得master和slave的資料資訊同步,達到備份的目的。
要點:
負責在主、從伺服器傳輸各種修改動作的媒介是主伺服器的二進制變更日志,這個日志記載着需要傳輸給從伺服器的各種修改動作。是以,主伺服器必須激活二進制日志功能。從伺服器必須具備足以讓它連接配接主伺服器并請求主伺服器把二進制變更日志傳輸給它的權限。
一、安裝MySQL
說明:在兩台MySQL伺服器192.168.21.169和192.168.21.168上分别進行如下操作,安裝MySQL 5.5.22
二、配置MySQL主伺服器(192.168.21.169)
1 2 3 4 5 6 7 | |
三、把MySQL主伺服器192.168.21.169中的資料庫AMT_DB導入到MySQL從伺服器192.168.21.168中
1、導出資料庫AMT_DB
1 2 | |
備注:在導出之前可以先進入MySQL控制台執行下面指令
1 2 3 | |
2、導入資料庫到MySQL從伺服器
1 2 3 4 5 | |
四、配置MySQL主伺服器的my.cnf檔案
1 2 3 4 5 6 | |
1 2 3 4 5 6 7 8 | |
注意:這裡記住File的值:mysql-bin.000001和Position的值:7131,後面會用到。
五、配置MySQL從伺服器的my.cnf檔案
1 2 3 4 5 6 7 | |
注意:MySQL 5.1.7版本之後,已經不支援把master配置屬性寫入my.cnf配置檔案中了,隻需要把同步的資料庫和要忽略的資料庫寫入即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | |
注意檢視:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
以上這兩個參數的值為Yes,即說明配置成功!
六、測試MySQL主從伺服器雙機熱備是否成功
1、進入MySQL主伺服器
1 2 3 | |
2、進入MySQL從伺服器
1 2 3 | |
至此,MySQL資料庫配置主從伺服器實作雙機熱備
本文轉自 chengxuyonghu 51CTO部落格,原文連結:http://blog.51cto.com/6226001001/1675106,如需轉載請自行聯系原作者