標籤:
資料庫複寫 replication 的實現原理:
1:主伺服器凡運行語句,都產生一個二進位日誌 binlog
2:從伺服器不斷讀取主伺服器的binlog
3:從伺服器讀取到的binlog轉換為自身可執行檔relaylog
4:執行relaylog
實現步驟:
1.首先確保主伺服器開啟二進位日誌功能,這樣,主伺服器一旦有資料變化,立即產生二進位日誌
2.從伺服器也需要開啟二進位日誌和relay日誌功能,這樣可以從主伺服器讀取binlog併產生relaylog
3.在主伺服器建立一個從伺服器的帳號,並授予讀binlog的許可權
4.指定從服務對應的主伺服器,開啟從伺服器
具體實施:
現虛擬機器下有2台linux,ip分別為192.168.153.158,192.168.153.159
1.158作為主伺服器
2.159作為從伺服器
3:保證主從3306連接埠互連
4:配置主伺服器開啟binlog
#給伺服器起一個唯一的id
server-id=1
#開啟二進位日誌
log-bin=mysql-bin
#日誌格式
binlog-format=mixed/row/statement
statement:2進位記錄執行語句,如update....
row:2進位記錄的是磁碟變化
語句長而磁碟變化少,宜用row,語句短,但影響上萬行,磁碟變化大,宜用statement
mixed,混合的,由系統根據語句來決定
--給伺服器起一個獨特的idserver-id=158--聲明2進位記錄檔為mysql-bin.xxxxlog-bin=mysql-bin--二進位日誌的格式 mixed/row/statementbinlog_format=mixed
重啟mysql
5.配置從伺服器
server-id=159log-bin=mysql-binrelay-log=mysql-relaybinlog-format=mixed
重啟mysql
主伺服器授權使用者
grant replication client,replication slave on *.* to [email protected]‘192.168.153.%‘ identified by ‘repl‘;flush privileges;
在從伺服器通過語句指定要複製的主伺服器(注意,可以一主多從,不可一從多主)
change master to master_host=‘192.168.153.158‘,master_user=‘repl‘,master_password=‘repl‘,master_log_file=‘mysql-bin.000001‘,master_log_pos=98;
啟動
start slave
至此,最簡單的mysql主從複製即配置完成。
這裡只是實現了主從複製,讀寫分離還沒有實現,可以從應用程式層去實現,也可以用叢集中介軟體如
官方的mysql_proxy,另外就是國產的中介軟體 amoeba
MySQL主從複製