本篇文章為大家帶來了關於mysql的相關知識,其中主要介紹了怎樣快速搭建主從複製架構的相關問題,MySQL資料庫提供的主從複製功能可以方便的實現資料在多台伺服器自動備份,實現資料庫的拓展,極大的加強了資料的安全性,希望對大家有幫助。
推薦學習:mysql教學
主從複製是讀寫分離的前提。 MySQL資料庫提供的主從複製功能可以方便的實作資料在多台伺服器自動備份,實現資料庫的拓展,極大的加強了資料的安全性。同時,實現主從複製之後,可以透過實現讀寫分離進一步加強資料庫的負載效能。
如圖所示就是主從複製的大致實現流程。
讀寫分離是建立在主從複製的基礎上,只有實現了資料庫的主從複製,才能進一步的實現讀寫分離。讀寫分離可以理解為所有的查詢操作在子資料庫進行,所有的寫入操作都在主資料庫進行。當資料寫入主資料庫後,透過主從複製將資料備份到子資料庫中,確保資料的一致性。
我們先來了解實現主從複製的原理:
了解其原理之後,我們需要知道開啟主從複製的前提:
master節點需要開啟binlog日誌(mysql預設不開啟binlog)
slave節點,指定某個binlog文件,以及同步的offset
指定master節點的ip
執行master節點的使用者名稱和密碼
現在大致我們都了解了,接下來我們建立一個一主一從的資料庫模式,示範一下資料庫主從搭建的配置過程。
準備兩台CentOS伺服器,並提前安裝好mysql5.7。
編輯mysql的my.cnf檔案:(安裝方式不同,可能檔案位置不同,具體問題具體分析~)
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%';
#允许远程用户访问 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
在slave節點執行下列指令。
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中文網其他相關文章!