MySQL複製過程分紅三步:mysql
binary log
)。這些記錄過程叫作二進制日誌事件,binary log events
;binary log events
拷貝到它的中繼日誌(relay log);簡單來講: slave會從master讀取binlog來進行數據同步linux
Mysql的複製(replication)是一個異步的複製。sql
實現整個複製操做主要由三個進程完成的,其中兩個進程在Slave(Sql進程和IO進程),另一個進程在 Master(IO進程)上。數據庫
要實施複製,首先必須打開Master端的binary log(bin-log)
功能,不然沒法實現。windows
由於整個複製過程實際上就是Slave從Master端獲取該日誌而後再在本身身上徹底順序的執行日誌中所記錄的各類操做。服務器
複製的詳細過程:異步
(1)Slave上面的IO進程鏈接上Master,並請求從指定日誌文件的指定位置(或者從最開始的日誌)以後的日誌內容;ide
(2)Master接收到來自Slave的IO進程的請求後,經過負責複製的IO進程根據請求信息讀取制定日誌指定位置以後的日誌信息,返回給Slave 的IO進程。返回信息中除了日誌所包含的信息以外,還包括本次返回的信息已經到Master端的
bin-log
文件的名稱以及bin-log
的位置;3d(3)Slave的IO進程接收到信息後,將接收到的日誌內容依次添加到Slave端的
relay-log
文件的最末端,並將讀取到的Master端的 bin-log的文件名和位置記錄到master-info
文件中,以便在下一次讀取的時候可以清楚的高速Master「我須要從某個bin-log的哪一個位置開始日後的日誌內容,請發給我」;日誌(4)Slave的Sql進程檢測到relay-log中新增長了內容後,會立刻解析relay-log的內容成爲在Master端真實執行時候的那些可執行的內容,並在自身執行。
原則:
演示主機爲Windows
(配置文件爲my.ini
文件),從機爲Linux
(配置文件爲my.cnf
)
log-bin=本身本地的路徑/data/mysqlbin
。log-bin=D:/devSoft/MySQLServer5.5/data/mysqlbin
。log-err=本身本地的路徑/data/mysqlerr
。log-err=D:/devSoft/MySQLServer5.5/data/mysqlerr
。basedir="本身本地路徑"
。basedir="D:/devSoft/MySQLServer5.5/"
。tmpdir="本身本地路徑"
。tmpdir="D:/devSoft/MySQLServer5.5/"
。datadir="本身本地路徑/Data/"
。datadir="D:/devSoft/MySQLServer5.5/Data/"
。binlog-ignore-db=mysql
。binlog-do-db=須要複製的主數據庫名字
。service iptables stop
;GRANT REPLICATION SLAVE ON *.* TO 'zhangsan'@'從機器數據庫IP' IDENTIFIED BY '123456';
。flush privileges;
。show master status;
CHANGE MASTER TO MASTER_HOST='主機IP',MASTER_USER='zhangsan',MASTER_PASSWORD='123456',MASTER_LOG_FILE='File名字',MASTER_LOG_POS=Position數字;
start slave;
。Slave_IO_Running: Yes
。Slave_SQL_Running: Yes
。CHANGE MASTER TO MASTER_HOST='192.168.124.3', MASTER_USER='zhangsan', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysqlbin.具體數字',MASTER_LOG_POS=具體值;
在linux
下面輸入stop slave;
。