主從複製是讀寫分離的前提。 MySQL資料庫提供的主從複製功能可以方便的實作資料在多台伺服器自動備份,實現資料庫的拓展,極大的加強了資料的安全性。實現主從複製後,實現讀寫分離可以進一步提高資料庫的負載效能。
如圖所示就是主從複製的大致實現流程。
若要實現讀寫分離,必須先實作資料庫的主從複製。讀寫分離的理解是查詢操作在子資料庫中完成,而寫入操作則在主資料庫中進行。透過主從複製將資料備份到子資料庫中,以確保資料的一致性。這是在資料寫入主資料庫後進行的。
我們先來了解實現主從複製的原理:
首先當主資料庫的資料發生變化後,會將變化記錄寫入binlog日誌中。
slave資料庫會在一定時間內對master資料庫中的binlog日誌進行偵測,如果發生改變,則要求master日誌檔案資訊。
了解其原理之後,我們需要知道開啟主從複製的前提:
master節點需要開啟binlog日誌(mysql預設不開啟binlog)
slave節點,指定某個binlog文件,以及同步的offset
vim /etc/my.cnf原本文件是沒有以下內容的,需要我們自行添加。我這邊是值對myslave庫進行資料的主從複製
server-id = 1 #server-id 服务器唯一标识log_bin = master-bin #log_bin 启动MySQL二进制日志log_bin_index = master-bin.index binlog_do_db = myslave #binlog_do_db 指定记录二进制日志的数据库 这两个指定可以不添加binlog_ignore_db = mysql #binlog_ignore_db 指定不记录二进制日志的数据库使用以下指令重啟mysql。 linux版本不一樣可能指令不同。
service mysql restart啟動成功後,我們可以透過下面的語句看到bin-log開啟狀況:(直接在Navicat中查詢即可)
show variables like 'log_bin%';2.2 遠端存取
#允许远程用户访问 GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.221.131' IDENTIFIED BY '123456' WITH GRANT OPTION; #刷新 FLUSH PRIVILEGES;
show master status;
vim /etc/my.cnf新增相關資訊:
server-id = 2 #唯一标识relay-log = slave-relay-bin relay-log-index = slave-relay-bin.index replicate-do-db=myslave #备份数据库 对应master中设置的,可以不设置replicate-ignore-db=mysql #忽略数据库記得重啟服務;
service mysql restart
change master to master_host='192.168.221.128',master_user='root',master_password='123456',master_log_file='binlog.000009',master_log_pos=2339;master_log_file是第一步驟得到的file名稱;
##master_log_pos是第一步驟得到的同步位置點;
start slave;
show slave status\G
以上是MySQL如何快速建構主從複製架構的詳細內容。更多資訊請關注PHP中文網其他相關文章!