詳解MySQL實作主從複製過程_Mysql實例詳解
本文主要為大家詳細介紹了MySQL主從複製的實現過程,具有一定的參考價值,有興趣的小夥伴們可以參考一下,希望能幫助到大家。
一、什麼是主從複製
將主資料庫中的DDL和DML操作透過二進位日誌(BINLOG)傳送到從資料庫上,然後將這些日誌重新執行(重做);從而使得從資料庫的資料與主資料庫保持一致。
二、主從複製的作用
1、主資料庫出現問題,可以切換到從資料庫。
2、可以進行資料庫層面的讀寫分離,
3、可以在從資料庫上進行日常備份
三、複製過程
Binary log:主資料庫的二進位日誌
Relay log:從伺服器的中繼日誌
第一步:master在每個交易更新資料完成之前,將該作業記錄串列地寫入到binlog檔案中。
第二步:salve開啟一個I/O Thread,該執行緒在master開啟一個普通連接,主要工作是binlog dump process。如果讀取的進度已經跟上了master,就進入睡眠狀態並等待master產生新的事件。 I/O線程最終的目的是將這些事件寫入到中繼日誌中。
第三個步驟:SQL Thread會讀取中繼日誌,並順序執行該日誌中的SQL事件,因此與主資料庫中的資料保持一致。
四、主從複製的特定動作
我是在同一個windows上不同的路徑下安裝兩個msyql實例。建議這裡主從兩個mysql的安裝版本一致,儘管我自己的是不一致的。
1、分別修改主從資料庫的設定檔my.ini
master
3306是mysql預設埠號,這裡master實例中可以不用修改;server-id用來指定唯一id,不同的mysql實例不重複即可;binlog-do-db指定需要複製的資料庫;log-bin用來開啟二進位日誌檔。
salve
由於主從資料庫待會都是在通一台電腦上執行,所以連接埠需要設定成不一樣,這裡是3307
replicate-do-db:需要同步的資料庫名稱,與master上的設定保持一致。
2、在master上建立一個專門用來複製的帳號:weidai/123456
這個新增的帳號可以在表mysql.user中進行查詢:
我第一次操作的時候,到這裡就完成了這個帳號的創建,但是到真正複製的時候,卻發現複製沒有成功,排查錯誤的時候發現master產生的binlong沒有問題,然後查看slave的狀態:
#在結尾處有這樣一行錯誤:
使用weidai這個帳號無法連接到master,所以應該是沒有取得到master的binlog,導致中繼日誌無法產生。
我反覆檢查了帳號和密碼都沒有發現問題,然後查找相關資料,才發現是因為在master創建新用戶的時候少了一步操作:
新設定用戶或更改密碼後需用flush privileges刷新MySQL的系統權限相關表,否則會出現拒絕存取。這就是出現前面錯誤的原因。另外還有一種方法是重新啟動mysql伺服器,來讓新設定生效。
3、取得主資料庫中此刻資料的位置,主要用於從資料啟動後,複製資料的起始位置,但是在取得這個狀態值之前,主資料庫就不能再有資料的修改操作,所以需要先設定讀取鎖定有效
4、主庫進行資料備份,備份的手段有很多種,這裡不展開介紹,可以參考我上一篇文章,備份結束後可以釋放讀鎖,主庫就可以進行寫操作
5、啟動從資料庫,對剛才備份的資料進行還原,這時候主從資料庫在備份那個時間點的資料是一致的。
6、在從資料庫上複製行為的相關設定
7、這個時候設定完成,但是從資料庫還不能進行同步,需要啟動slave執行緒
8、在master中建立表格、新增數據,在slave中觀察:
五、主從同步狀態解讀
在slave上使用指令檢視:Master_user:weidai
Master_port: 3306
connnect_retry:60
Master_log_file:mysql-bin.000005
Read_Master_log_pos:1662
Relay_log_file:AE6Z*****-relay-bin .000002
Relay_log_pos:1415
Slave_IO_Running:yes
#Slave_SQL_Running:yes
#--------------- -------------------------------------------華麗麗分割線--- ------------------------------------------
Slave_IO_Running:yes
Slave_SQL_Running:yes
這兩個執行緒前面有提到,是slave上參與複製過程中兩個很重要的執行緒。 YES表示正常,NO表示異常。
Slave_IO執行緒主要是將master上的binlong日誌內容複製到slave的中繼日誌中(Relay_log),一般出現問題的機率不大, 出現問題大多數是因為權限或網路等問題,導致連線不上master。如同前面提到的那個錯誤。 Slave_SQL執行緒負責將中繼日誌中的SQL執行一遍,相對來說出錯的機率大些。如有人手動的在從庫中插入一些記錄,導致主從同步的時候出現主鍵衝突。
Slave_IO_STATE:Waiting for master to send event這個狀態表示中繼日誌同步完成,等待master有新的事件產生。 相關推薦:
######MySQL如何實作主從複製過程的範例詳解(圖)#######以上是詳解MySQL實作主從複製過程_Mysql實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

MySQL是一種開源的關係型數據庫管理系統,主要用於快速、可靠地存儲和檢索數據。其工作原理包括客戶端請求、查詢解析、執行查詢和返回結果。使用示例包括創建表、插入和查詢數據,以及高級功能如JOIN操作。常見錯誤涉及SQL語法、數據類型和權限問題,優化建議包括使用索引、優化查詢和分錶分區。

可以通過以下步驟打開 phpMyAdmin:1. 登錄網站控制面板;2. 找到並點擊 phpMyAdmin 圖標;3. 輸入 MySQL 憑據;4. 點擊 "登錄"。

選擇MySQL的原因是其性能、可靠性、易用性和社區支持。 1.MySQL提供高效的數據存儲和檢索功能,支持多種數據類型和高級查詢操作。 2.採用客戶端-服務器架構和多種存儲引擎,支持事務和查詢優化。 3.易於使用,支持多種操作系統和編程語言。 4.擁有強大的社區支持,提供豐富的資源和解決方案。

MySQL在數據庫和編程中的地位非常重要,它是一個開源的關係型數據庫管理系統,廣泛應用於各種應用場景。 1)MySQL提供高效的數據存儲、組織和檢索功能,支持Web、移動和企業級系統。 2)它使用客戶端-服務器架構,支持多種存儲引擎和索引優化。 3)基本用法包括創建表和插入數據,高級用法涉及多表JOIN和復雜查詢。 4)常見問題如SQL語法錯誤和性能問題可以通過EXPLAIN命令和慢查詢日誌調試。 5)性能優化方法包括合理使用索引、優化查詢和使用緩存,最佳實踐包括使用事務和PreparedStatemen

Apache 連接數據庫需要以下步驟:安裝數據庫驅動程序。配置 web.xml 文件以創建連接池。創建 JDBC 數據源,指定連接設置。從 Java 代碼中使用 JDBC API 訪問數據庫,包括獲取連接、創建語句、綁定參數、執行查詢或更新以及處理結果。

在 Docker 中啟動 MySQL 的過程包含以下步驟:拉取 MySQL 鏡像創建並啟動容器,設置根用戶密碼並映射端口驗證連接創建數據庫和用戶授予對數據庫的所有權限

MySQL在Web應用中的主要作用是存儲和管理數據。 1.MySQL高效處理用戶信息、產品目錄和交易記錄等數據。 2.通過SQL查詢,開發者能從數據庫提取信息生成動態內容。 3.MySQL基於客戶端-服務器模型工作,確保查詢速度可接受。

優雅安裝 MySQL 的關鍵在於添加 MySQL 官方倉庫。具體步驟如下:下載 MySQL 官方 GPG 密鑰,防止釣魚攻擊。添加 MySQL 倉庫文件:rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm更新 yum 倉庫緩存:yum update安裝 MySQL:yum install mysql-server啟動 MySQL 服務:systemctl start mysqld設置開機自啟動
