日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql主从同步原理_mysql主从同步以及原理

發布時間:2025/3/15 数据库 11 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql主从同步原理_mysql主从同步以及原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

mysql主從復制介紹

當前的生產工作中,大多數應用的mysql主從同步都是異步的復制方式,即不是嚴格實時的數據同步。

實時和異步:

同步復制: 指的是客戶端連接到MySQL主服務器寫入一段數據,MySQL主服務器同步給MySQL從服務器需要等待從服務器發出同步完成的響應才返回客戶端OK, 這其中等待同步的過程是阻塞的, 如果有N臺從服務器, 效率極低

異步復制: 指的是客戶端連接到MySQL主服務器寫入一段數據,MySQL主服務器將寫入的數據發送給MySQL從服務器, 然后直接返回客戶端OK, 可能從服務器的數據會和主服務不一致

半同步復制:指的是客戶端連接到MySQL主服務器寫入一段數據,MySQL主服務器只將數據同步復制給其中一臺從服務器, 半同步復制給其他的從服務器, 來達到其中一臺從服務器完全同步的效果

主從復制原理:

從庫需要兩個線程完成,一個叫做I/O線程,一個叫做sql線程

主庫需要一個線程叫做I/O線程

主庫必須要開啟binlog日志才能完成主從同步,當用戶請求到主的庫里面,會將增刪改的東西記錄到binlog日志里面,主從復制是從庫去找主庫的,建立時,我們在從庫上使用change master指定master的ip,端口,二進制文件名稱,pos,master的密碼等信息。并在從庫上開啟start ?slave就會開啟同步。

開啟同步后,先是從向主發起請求。然后主庫進行驗證從庫是否正常,驗證之后,主庫就會給從庫按照信息發送日志,從庫上存放日志的地方叫做中繼日志(relay log),其實從庫里面還有一個master info信息,這個里面記錄的是change master的信息,每一次取日志回來都會對從庫的master ?info信息進行更新,接下來從庫根據master ?info的binlog信息去主庫在取跟新的binlog信息,

放到中繼日志里面,我們如何進行更新?

當主將binlog發送過來放到中繼日志里面的時候,sql線程就會語句經過轉換寫到從庫里面。

注意

1.開啟binlog日志

2.change master(在從庫上)

3.在從庫開啟start slave之前。這兩個庫的數據必須是一樣的,所以講主庫的數據進行備份使用master-data=1,會記錄位置的。然后從庫會指定從主庫備份里面找備份點。

4.要在開關之前建立專門用于主從同步的賬號

5.從庫打開開關的過程,其實就是打來從庫兩個線程的過程

6.start slave

主庫返回的除了binlog日志內容外,還有本次返回日志內容后在Master服務器端的新的binlog文件名稱以及在binlog中的下一個指定更新的位置。這個位置會保存在從庫的master info里面。

>flush tables ?with read ?lock;在主庫上執行加上讀鎖

然后另開一個窗口,連接到主mysql

>show master ?status; ?查看主庫的binlog以及pos值。

下來是備份主庫數據,將備份數據在從庫上執行。目的就是讓從庫和主庫的數據一樣。

從庫將主庫的備份數據導入完了以后要將鎖打來:

>unlocks ?tables;

然后在從庫上執行change ?master語句。這些信息會記錄在從庫的master.info的信息中;(如果你備份的時候指定master-data=1)

最后一步開啟start ?slave;

查看是否成功使用show slave ?status; 查看兩個進程是否為yes。

從庫里面的relay-log.info:記錄sql線程從中繼里面讀取到的日志。

描述mysql主從復制原理

自己總結:從庫的io線程會實時依據master.info信息的去主庫的binlog日志里面讀取更新的內容,將更新的內容取回到自己的中繼日志中,同時會更新master.info信息,此時sql線程實時會從中繼日志中讀取并執行里面的sql語句。

描述mysql主從同步部署

自己總結:

1.將主庫的數據備份,備份的時候時候master-data=1指定。然后在從庫上將備份數據導入

2.在主庫上給開啟主庫的bin-log功能,以及service-id

mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_account'@'10.121.0.220' identified by '123456'

這句的意思是,允許從服務器'10.121.0.220 '使用'slave-account'及'123456'這個帳號密碼對對主服務器的所有數據庫(*.*)進行主從復制('REPLICATION SLAVE').

3.在主庫上執行flush ?tables ?with ?relay ?locks; 讀寫鎖。然后領開啟一個窗口

4.然后只從庫上執行change master ? 里面指定剛才創建的用戶以及密碼

5.執行start ?slave;

6.show slave ?status;看看兩個線程是否啟動

7.在主庫上解鎖。

總結

以上是生活随笔為你收集整理的mysql主从同步原理_mysql主从同步以及原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。