談談MYSQL主從復制原理

目錄

概述

要點binlog日志?

主從復制過程

總結?


概述

MySQL 主從復制是指數據可以從一個MySQL數據庫服務器主節點復制到一個或多個從節點

MySQL 默認采用異步復制方式。從節點不用一直訪問主服務器來更新自己的數據,數據的更新可以在遠程連接上進行,從節點可以復制主數據庫中的所有數據庫或者特定的數據庫,或者特定的表。

MySQL 主從復制主要用途

  • 讀寫分離:在開發工作中,有時候會遇見某個sql 語句需要鎖表,導致暫時不能使用讀的服務,這樣就會影響現有業務,使用主從復制,讓主庫負責寫,從庫負責讀,這樣,即使主庫出現了鎖表的情景,通過讀從庫也可以保證業務的正常運作。
  • 數據實時備份,當系統中某個節點發生故障時,可以方便的故障切換
  • 架構擴展:隨著系統中業務訪問量的增大,如果是單機部署數據庫,就會導致I/O訪問頻率過高。有了主從復制,增加多個數據存儲節點,將負載分布在多個從節點上,降低單機磁盤I/O訪問的頻率,提高單個機器的I/O性能。

要點binlog日志?

MySQL數據庫的數據備份、主備、主主、主從都離不開binlog,需要依靠binlog來同步數據,保證數據一致性。

?binlog是MySQL數據庫中的二進制日志,用于記錄數據庫中所有修改操作,包括增刪改等操作。binlog以二進制格式保存,可以通過解析binlog文件來查看數據庫的操作歷史記錄。 ?

binlog日志格式

  • 1.statement:基于sql語句的日志記錄,記錄的是sql語句,對數據進行修改的sql都會記錄在日志文件中
  • 2.row:基于行的日志記錄,記錄的是每一行的數據變更,默認是基于行的日志記錄
  • 3.mixed:混合statement和row兩種格式,默認采用statement,在某些特殊情況下會自動切換為row進行記錄。這些情況是NDB引擎,表的增刪改的DML操作會以row格式記錄、SQL語句里包含UUID()函數、SQL語句里使用了用戶定義函數(UDF)、包含了insert delayed語句、使用了臨時表、自增字段被更新

配置開啟binlog

修改配置文件需要在/etc/my.cnf中mysqld節添加開啟binlog的配置

#第一種方式:
#開啟binlog日志
log_bin=ON
#binlog日志的基本文件名
log_bin_basename=/var/lib/mysql/mysql-bin
#binlog文件的索引文件,管理所有binlog文件
log_bin_index=/var/lib/mysql/mysql-bin.index
#配置serverid
server-id=1#第二種方式:
#此一行等同于上面log_bin三行
log-bin=/var/lib/mysql/mysql-bin
#配置serverid
server-id=1

主從復制過程

復制分成三步

  • master服務器將數據的改變記錄二進制binlog日志,當master上的數據發生改變時,則將其改變寫入二進制日志中;
  • slave服務器會在一定時間間隔內對master二進制日志進行探測其是否發生改變,如果發生改變,則開始一個I/OThread請求master二進制事件
  • 同時主節點為每個I/O線程啟動一個dump線程,用于向其發送二進制事件,并保存至從節點本地的中繼日志(relaylog)中,從節點將啟動SQL線程從中繼日志中讀取二進制日志,在本地重放,使得其數據和主節點的保持一致,最后I/OThread和SQLThread將進入睡眠狀態,等待下一次被喚醒。

IO線程去請求主庫 的binlog,并將得到的binlog日志寫到relay log(中繼日志) 文件中

SQL 線程,會讀取relay log文件中的日志,并解析成具體操作,來實現主從的操作一致,而最終數據一致;

?master一定要開啟binlog二進制日志功能;通常為了數據安全考慮,slave也開啟binlog功能

總結?

  • Master主庫在事務提交時,會把數據變更記錄在二進制日志文件Binlog中。
  • 從庫讀取主庫的二進制日志文件 Binlog,寫入到從庫的中繼日志 Relay Log。
  • slave重做中繼日志中的事件,將改變反映它自己的數據

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/215513.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215513.shtml
英文地址,請注明出處:http://en.pswp.cn/news/215513.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Volatility3內存取證工具安裝及入門在Linux下的安裝教程

1-1. Volatility3簡介 Volatility 是一個完全開源的工具,用于從內存 (RAM) 樣本中提取數字工件。支持Windows,Linux,MaC,Android等多類型操作系統系統的內存取證。 針對競賽這塊(CTF、技能大賽等)基本上都…

websocket vue操作

let websocket: WebSocket; /** websocket測試 */ function connectWebsocket() {if (typeof WebSocket "undefined") {console.log("您的瀏覽器不支持WebSocket");return;}// let ip window.location.hostname ":8080";let ip "10.192…

瑞薩RZ/G2L核心板Linux Log目錄文件詳解

為了排除系統問題,監控系統健康狀況以及了解系統與應用程序的交互方式,我們需要了解各log文件的作用,以G2L中yocto文件系統為例,在系統/var/log/目錄下會存放記錄系統中各個部分的log文件作用如下: 1. 文件詳情 下圖…

Ubuntu系統部署Inis博客并使用內網穿透發布到公網隨時隨地遠程訪問

目錄 前言 推薦 1. Inis博客網站搭建 1.1. Inis博客網站下載和安裝 1.2 Inis博客網站測試 1.3 cpolar的安裝和注冊 2. 本地網頁發布 2.1 Cpolar臨時數據隧道 2.2 Cpolar穩定隧道(云端設置) 2.3.Cpolar穩定隧道(本地設置)…

鴻蒙原生應用/元服務開發-Stage模型能力接口(二)

ohos.app.ability.AbilityConstant (AbilityConstant)一、說明 AbilityConstant提供Ability相關的枚舉,包括設置初次啟動原因、上次退出原因、遷移結果、窗口類型等。本模塊首批接口從API version 9開始支持。后續版本的新增接口,采用上角標單獨標記接口…

matlab 最小二乘擬合平面(拉格朗日乘子法)

目錄 一、算法原理二、代碼實現三、結果展示本文由CSDN點云俠原創,原文鏈接。博客長期更新,爬蟲自重。 一、算法原理 設擬合出的平面方程為: a x + b y &#

Linux筆記之systemctl命令詳解

Linux筆記之systemctl命令詳解 code review! 文章目錄 Linux筆記之systemctl命令詳解systemctl restart docker 詳解 systemctl 是一個用于管理 systemd 服務的命令行工具。systemd 是一個用于啟動、停止和管理 Linux 系統中的進程的系統和服務管理器。下面是一些常見的 syst…

機器視覺系統選型-條形光源分類及應用場景

標準面光源 從平坦發光面照射漫射光 機械零件尺寸測量電子元件、IC的外形檢測邊緣缺陷檢測服裝紡織、食品包裝檢測 中孔面光源 從相機的同軸方向照射漫射光 金屬零件缺陷檢測金屬外殼檢測大面積電子元件的字符識別 平行面光源 照射平行度較高的漫射光玻璃瓶直徑測量螺釘牙輪…

Android studio 離線配置gradle

Gradle Distributions Gradle Distributions 查看gradle 文件夾下 gradle-wrapper.properties文件中的distributionUrl 版本號 然后在上邊網站下載對應需要的gradle對應版本 下載后復制到 gradle wrapper文件下,同時修改 distributionUrl 指向本地文件 然后同步就…

xtu oj 1233 Cycle Matrix

題目描述 給定N,輸出一個N*N的矩陣,矩陣為N層,每層是一個字符,從A到Z。 比如說N3,矩陣為 CCCCC CBBBC CBABC CBBBC CCCCC輸入 第一行是一個整數K(K≤50),表示樣例數。 每個樣例占1行,為一個整…

647.回文子串

給你一個字符串 s ,請你統計并返回這個字符串中 回文子串 的數目。 回文字符串 是正著讀和倒過來讀一樣的字符串。 子字符串 是字符串中的由連續字符組成的一個序列。 具有不同開始位置或結束位置的子串,即使是由相同的字符組成,也會被視作…

迷你型洗衣機好用嗎?口碑好的四款小型洗衣機推薦

隨著人們的生活水平的提升,越來越多小伙伴來開始追求更高的生活水平,一些智能化的小家電就被發明出來,而且內衣洗衣機是其中一個。現在通過內衣褲感染到細菌真的是越來越多,所以我們對內衣褲的清洗頻次會高于普通衣服,…

輕量封裝WebGPU渲染系統示例<47>- 多種光源(源碼)

當前示例源碼github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/material/src/voxgpu/sample/MultiLightsShading.ts 當前示例運行效果: 此示例基于此渲染系統實現,當前示例TypeScript源碼如下: export class MultiLightsShading {private mRscene…

STM32 DAC+串口

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 前言一、DAC是什么?二、STM32 DAC1.什么型號有DAC2. 簡介3. 主要特點4. DAC框圖5. DAC 電壓范圍和引腳 三、程序步驟總結 前言 提示:這里可…

Runtime

Runtime 概念: Runtime是一套底層純C語言API,OC代碼最終都會被編譯器轉化為運行時代碼,通過消息機制決定函數調用方式,這也是OC作為動態語言使用的基礎。Runtime的最大特征就是實現了OC語言的動態特性。 消息機制原理 在Objec…

代碼隨想錄27期|Python|Day13|棧與隊列|239. 滑動窗口最大值 (一刷至少需要理解思路)|347.前 K 個高頻元素 (一刷至少需要理解思路)

239. 滑動窗口最大值 單調隊列 滑動窗口中的隊列一直保持出口大,入口小的順序。(圖:代碼隨想錄) 1、每次有新的元素進入(也就是滑動窗口移動后),都需要先和入口的元素比較大小,如果…

BDD100K數據集

官網:BDD100K (vis.xyz)????? 論文:[1805.04687] BDD100K: A Diverse Driving Dataset for Heterogeneous Multitask Learning (arxiv.org) github:bdd100k/bdd100k: Toolkit of BDD100K Dataset for Heterogeneous Multitask Learning - CVPR 2020 Oral Pap…

特發性震顫會導致其他并發癥嗎?

特發性震顫是一種較為常見的神經系統疾病,其主要癥狀是姿勢性震顫,常常在手部開始,并可逐漸累及頭部、下肢等其他部位。雖然特發性震顫的主要癥狀是震顫,但該病也可能導致其他并發癥。下面將詳細介紹特發性震顫可能引起的并發癥。…

靈茶 - 2023 - 12 - 12

鏈接 Problem - 620C - Codeforces 思路 : 貪心 : 對于每一段區間,從前往后貪,如果前面一段區間有重復數字,那么就直接合并成答案的一段區間,然后繼續尋找下一段區間,對于最后一段,如果沒有匹配的話&am…

自定義kafka客戶端消費topic

文章目錄 自定義kafka客戶端消費topic結論1 背景2 spring集成2.1.8.RELEASE版本不支持autoStartup屬性3 自定義kafka客戶端消費topic3.1 yml配置3.2 KafkaConfig客戶端配置3.3 手動啟動消費客戶端 自定義kafka客戶端消費topic 結論 使用自定義的KafkaConsumer給spring進行管理…