Mysql複製(replication)是一個異步的複製,從一個Mysql 實例(Master)複製到另外一個Mysql 實例(Slave)。實現整個主從複製,須要由Master服務器上的IO進程,和Slave服務器上的Sql進程和IO進程共從完成。 要實現主從複製,首先必須打開Master端的binary log(bin-log)功能,由於整個MySQL 複製過程實際上就是Slave從Master端獲取相應的二進制日誌,而後再在本身slave端徹底順序的執行日誌中所記錄的各類操做。 (二進制日誌幾乎記錄了除select之外的全部針對數據庫的sql操做語句)mysql
主從複製的基本過程以下: 1)、Mysql Slave端的IO進程鏈接上Master,向Master請求指定日誌文件的指定位置(或者從最開始的日誌)以後的日誌內容; 2)、Master接收到來自Slave的IO進程的請求後,負責複製的IO進程根據Slave的請求信息,讀取相應日誌內容,返回給Slave 的IO進程。並將本次請求讀取的bin-log文件名及位置一塊兒返回給Slave端。 3)、Slave的IO進程接收到信息後,將接收到的日誌內容依次添加到Slave端的relay-log文件的最末端,並將讀取到的Master端的 bin-log的文件名和位置記錄到master-info文件中,以便在下一次讀取的時候可以清楚的告訴Master「我須要從某個bin-log的哪一個位置開始日後的日誌內容,請發給我」; 4)、Slave的Sql進程檢測到relay-log中新增長了內容後,會立刻解析relay-log的內容成爲在Master端真實執行時候的那些可執行的內容,並在自身執行。sql
配置實現:
1,實現主從複製,Master端和客戶端都須要打開二進制日誌,在my.cnf中添加以下配置
log-bin=xx log-bin-index=xx.index server-id=xx expire-logs-days=n 自動輪轉日誌天數 ,防止單個日誌之文件過大 或者在mysql中執行flush logs 手動輪狀二進制日誌,結合crond自動輪轉日誌。 www.it165.net數據庫
--------------------------------------------- 其餘經常使用配置參考以下: [mysqld] datadir=/database basedir=/usr/local/mysql pid-file=/var/run/mysqld/mysql5.pid socket=/var/run/mysqld/mysql5.socket general-log general-log-file=/var/log/mysqld/mysql5-access.log log-error=/var/log/mysqld/mysql5-error.log port=3306 user=mysql ----------------------------------------------服務器
2,在Master端給 Mysql Slave Server受權:
myql>grant replication slave, super on *.* to 'xx'@'xx' identified by 'xxx'; 查看狀態: mysql>show master status \G異步
3,在Slave端對指定Master端進行鏈接
mysql>stop slave; mysql>change master to master_host='10.1.1.145', master_port=3306, master_user='tt', master_password='123', master_log_file='uu.000005', master_log_pos=265; mysql>start slave; mysql>show slave status \G Slave_IO_Running: Yes Slave_SQL_Running: Yes 若是此兩項顯示yes,表明鏈接同步成功。 socket
4,測試
在Master端進行建立或超人操做,從服務器能自動實現同步,則主從複製實現成功。ide