一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一文詳解MySQL主從復(fù)制

阿銘linux ? 來(lái)源:阿銘linux ? 2023-01-17 09:13 ? 次閱讀

19.1 主從復(fù)制介紹

19.1.1 主從存在的意義

數(shù)據(jù)備份:為了避免單點(diǎn)故障,增加一個(gè)從服務(wù)器,用來(lái)復(fù)制主服務(wù)器上的數(shù)據(jù)。

分擔(dān)負(fù)載:將寫(xiě)操作在主上做,查詢(xún)操作在從上做。

19.1.2 主從復(fù)制原理

21297f38-95f6-11ed-bfe3-dac502259ad0.png

① 主上將所有變更事件記錄到binlog里

② 從發(fā)起請(qǐng)求連接主

③ 主的binlog備份線(xiàn)程將binlog傳給從

④ 從的I/O線(xiàn)程將binlog解析成自己的relay log

⑤ 從的SQL線(xiàn)程根據(jù)relay log來(lái)執(zhí)行具體的SQL語(yǔ)句

MySQL主從復(fù)制是一個(gè)異步的復(fù)制過(guò)程,主庫(kù)發(fā)送更新事件到從庫(kù),從庫(kù)讀取更新記錄,并執(zhí)行更新記錄,使得從庫(kù)的內(nèi)容與主庫(kù)保持一致。

binlog:binary log,主庫(kù)中保存所有更新事件日志的二進(jìn)制文件。binlog是數(shù)據(jù)庫(kù)服務(wù)啟動(dòng)的一刻起,保存數(shù)據(jù)庫(kù)所有變更記錄(數(shù)據(jù)庫(kù)結(jié)構(gòu)和內(nèi)容)的文件。在主庫(kù)中,只要有更新事件出現(xiàn),就會(huì)被依次地寫(xiě)入到binlog中,之后會(huì)推送到從庫(kù)中作為從庫(kù)進(jìn)行復(fù)制的數(shù)據(jù)源。

binlog dump線(xiàn)程:每當(dāng)有從庫(kù)連接到主庫(kù)的時(shí)候,主庫(kù)都會(huì)創(chuàng)建一個(gè)線(xiàn)程然后發(fā)送binlog內(nèi)容到從庫(kù)。對(duì)于每一個(gè)即將發(fā)送給從庫(kù)的sql事件,binlog dump線(xiàn)程會(huì)將其鎖住。一旦該事件被線(xiàn)程讀取完之后,該鎖會(huì)被釋放,即使在該事件完全發(fā)送到從庫(kù)的時(shí)候,該鎖也會(huì)被釋放。

在從庫(kù)中,當(dāng)復(fù)制開(kāi)始時(shí),從庫(kù)就會(huì)創(chuàng)建從庫(kù)I/O線(xiàn)程和從庫(kù)的SQL線(xiàn)程進(jìn)行復(fù)制處理。

從庫(kù)I/O線(xiàn)程:當(dāng)START SLAVE語(yǔ)句在從庫(kù)開(kāi)始執(zhí)行之后,從庫(kù)創(chuàng)建一個(gè)I/O線(xiàn)程,該線(xiàn)程連接到主庫(kù)并請(qǐng)求主庫(kù)發(fā)送binlog里面的更新記錄到從庫(kù)上。從庫(kù)I/O線(xiàn)程讀取主庫(kù)的binlog輸出線(xiàn)程發(fā)送的更新并拷貝這些更新到本地文件,其中包括relay log文件。

從庫(kù)的SQL線(xiàn)程:從庫(kù)創(chuàng)建一個(gè)SQL線(xiàn)程,這個(gè)線(xiàn)程讀取從庫(kù)I/O線(xiàn)程寫(xiě)到relay log的更新事件并執(zhí)行。

19.2 搭建主從復(fù)制

19.2.1 基于二進(jìn)制日志文件位置的復(fù)制

① 根據(jù)我們前面的文檔,搭建兩臺(tái)MySQL服務(wù),具體步驟略

192.168.222.128 主
192.168.222.132 從

② 檢查并配置兩臺(tái)機(jī)器的server_id

vi my.cnf #搜索server_id ,如果沒(méi)有則增加
主上設(shè)置為server_id=1
從上設(shè)置為 server_id = 2

③ 在主上創(chuàng)建用作主從復(fù)制的用戶(hù)

create user 'rep'@'192.168.222.132'  identified with 'mysql_native_password' by 'AmingLinux.Com';
grant REPLICATION SLAVE  on *.* to 'rep'@'192.168.222.132';
flush privileges;

④在主上查詢(xún)?nèi)罩久忠约拔恢?/p>

show master status; ##記錄下對(duì)應(yīng)的日志命令以及位置
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| aminglinux.000001 |      853|              |                  |
+------------------+----------+--------------+------------------+

⑤到從上執(zhí)行

change master to master_host='192.168.222.128',master_user='rep',master_password='AmingLinux.Com',master_log_file='aminglinux.000001',master_log_pos=853;
start slave;
show slave statusG

19.2.2 基于GTID的主從復(fù)制

1. 什么是GTID

GTID(Global Transaction ID)是對(duì)于一個(gè)已提交事務(wù)的編號(hào),并且是一個(gè)全局唯一的編號(hào)。GTID實(shí)際上是由UUID+TID組成的。其中UUID是一個(gè)MySQL實(shí)例的唯一標(biāo)識(shí),保存在mysql數(shù)據(jù)目錄下的auto.cnf文件里。TID代表了該實(shí)例上已經(jīng)提交的事務(wù)數(shù)量,并且隨著事務(wù)提交單調(diào)遞增。下面是一個(gè)GTID的具體形式:

3E11FA47-71CA-11E1-9E33-C80AA9429562:23

2.GTID的作用

根據(jù)GTID可以知道事務(wù)最初是在哪個(gè)實(shí)例上提交的,GTID的存在方便了Replication的Failover(故障切換)

3. GTID比傳統(tǒng)復(fù)制的優(yōu)勢(shì)

更簡(jiǎn)單的實(shí)現(xiàn)failover,不用以前那樣在需要找log_file和log_Pos。更簡(jiǎn)單的搭建主從復(fù)制。比傳統(tǒng)復(fù)制更加安全。GTID是連續(xù)沒(méi)有空洞的,因此主從庫(kù)出現(xiàn)數(shù)據(jù)沖突時(shí),可以用添加空事物的方式進(jìn)行跳過(guò)。

4. GTID的工作原理

① master更新數(shù)據(jù)時(shí),會(huì)在事務(wù)前產(chǎn)生GTID,一同記錄到binlog日志中。

②slave端的i/o線(xiàn)程將變更的binlog,寫(xiě)入到本地的relay log中。

③sql線(xiàn)程從relay log中獲取GTID,然后對(duì)比slave端的binlog是否有記錄。

④如果有記錄,說(shuō)明該GTID的事務(wù)已經(jīng)執(zhí)行,slave會(huì)忽略。

⑤如果沒(méi)有記錄,slave就會(huì)從relay log中執(zhí)行該GTID的事務(wù),并記錄到binlog。

⑥在解析過(guò)程中會(huì)判斷是否有主鍵,如果有就用二級(jí)索引,如果沒(méi)有就用全部掃描。

4. GTID復(fù)制搭建

由于之前做過(guò)主從配置,可以先取消之前的主從。

slave上執(zhí)行:

stop slave;
reset slave all;

master上執(zhí)行:

reset master;

① 主上修改配置文件,重啟mysql服務(wù)

server_id = 1
gtid_mode = on
enforce_gtid_consistency=on
log_bin=mysql-bin
binlog_format=row
log-slave-updates=1
skip-slave-start=1

② 從上修改配置文件,重啟mysql服務(wù)

server_id = 2
gtid_mode = on
enforce_gtid_consistency=on
log_bin=mysql-bin
binlog_format=row
log-slave-updates=1
skip-slave-start=1

③ 主上授權(quán)用戶(hù)

create user 'rep'@'192.168.222.132'  identified with 'mysql_native_password' by 'AmingLinux.Com';
grant REPLICATION SLAVE  on *.* to 'rep'@'192.168.222.132';
flush privileges;

④ 從上配置主從

stop slave;
CHANGE MASTER TO MASTER_HOST='192.168.222.128', MASTER_USER='rep',MASTER_PASSWORD='AmingLinux.Com',MASTER_AUTO_POSITION=1,MASTER_CONNECT_RETRY=10;
start slave;

④ 查看主從狀態(tài)

從上執(zhí)行

show slave statusG

⑤ 測(cè)試主從

主上新建一個(gè)數(shù)據(jù)庫(kù)

create database  testd;

到從上查看是否有testd數(shù)據(jù)庫(kù)

show databases;

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    9596

    瀏覽量

    86968
  • 數(shù)據(jù)備份
    +關(guān)注

    關(guān)注

    0

    文章

    57

    瀏覽量

    11980
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    840

    瀏覽量

    27332
  • 日志
    +關(guān)注

    關(guān)注

    0

    文章

    140

    瀏覽量

    10784
  • 線(xiàn)程
    +關(guān)注

    關(guān)注

    0

    文章

    507

    瀏覽量

    20019

原文標(biāo)題:MySQL主從復(fù)制

文章出處:【微信號(hào):aming_linux,微信公眾號(hào):阿銘linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于二進(jìn)制安裝MySQL主從復(fù)制

    二進(jìn)制安裝MySQL實(shí)現(xiàn)主從復(fù)制
    發(fā)表于 03-10 09:43

    mysql主從復(fù)制

    mysql 主從復(fù)制
    發(fā)表于 04-28 14:30

    基于mycat的Mysql主從復(fù)制讀寫(xiě)分離全攻略

    基于mycat的Mysql主從復(fù)制讀寫(xiě)分離全攻略
    發(fā)表于 09-08 10:10 ?4次下載
    基于mycat的<b class='flag-5'>Mysql</b><b class='flag-5'>主從復(fù)制</b>讀寫(xiě)分離全攻略

    利用MySQL進(jìn)行從的主從復(fù)制

    本文講述了如何使用MyBatisPlus+ShardingSphereJDBC進(jìn)行讀寫(xiě)分離,以及利用MySQL進(jìn)行從的主從復(fù)制。
    的頭像 發(fā)表于 07-28 09:47 ?1190次閱讀

    MySQL主從復(fù)制原理詳解

    簡(jiǎn)單講,MySQL主從復(fù)制就是數(shù)據(jù)寫(xiě)入臺(tái)服務(wù)器(主服務(wù)器)后,同時(shí)還會(huì)額外寫(xiě)入另外的服務(wù)器(從服務(wù)器)。也就是說(shuō)數(shù)據(jù)會(huì)寫(xiě)多份,這樣做的目的主要有兩個(gè):
    的頭像 發(fā)表于 02-06 10:27 ?1212次閱讀

    個(gè)操作把MySQL主從復(fù)制整崩了

    最近公司某項(xiàng)目上反饋mysql主從復(fù)制失敗,被運(yùn)維部門(mén)記了次大過(guò),影響到了項(xiàng)目的驗(yàn)收推進(jìn),那么究竟是什么原因?qū)е碌哪兀慷?b class='flag-5'>主從復(fù)制的原理又是什么呢?本文就對(duì)排查分析的過(guò)程做
    的頭像 發(fā)表于 05-11 11:14 ?667次閱讀
    <b class='flag-5'>一</b>個(gè)操作把<b class='flag-5'>MySQL</b><b class='flag-5'>主從復(fù)制</b>整崩了

    聊聊RocketMQ的主從復(fù)制

    RocketMQ 主從復(fù)制是 RocketMQ 高可用機(jī)制之,數(shù)據(jù)可以從主節(jié)點(diǎn)復(fù)制個(gè)或多個(gè)從節(jié)點(diǎn)。
    的頭像 發(fā)表于 07-04 09:42 ?831次閱讀
    聊聊RocketMQ的<b class='flag-5'>主從復(fù)制</b>

    什么是Redis主從復(fù)制

    Redis主從復(fù)制 來(lái)自靈魂的拷問(wèn):什么是Redis主從復(fù)制? 簡(jiǎn)言之就是: 主對(duì)外從對(duì)內(nèi),主可寫(xiě)從不可寫(xiě) 主掛了,從不可為主 看下面的圖加深下理解: 對(duì),你沒(méi)看錯(cuò),Redis主從復(fù)制沒(méi)有動(dòng)態(tài)選舉
    的頭像 發(fā)表于 10-09 15:09 ?543次閱讀
    什么是Redis<b class='flag-5'>主從復(fù)制</b>

    mysql主從復(fù)制三種模式

    MySQL主從復(fù)制種常見(jiàn)的數(shù)據(jù)同步方式,它可以實(shí)現(xiàn)將個(gè)數(shù)據(jù)庫(kù)的更改同步到其他多個(gè)數(shù)據(jù)庫(kù)的功能。主從復(fù)制可以提高數(shù)據(jù)庫(kù)的可用性和性能,以
    的頭像 發(fā)表于 11-16 14:04 ?1788次閱讀

    mysql如何實(shí)現(xiàn)主從復(fù)制的具體流程

    主從復(fù)制MySQL數(shù)據(jù)庫(kù)中常用的數(shù)據(jù)復(fù)制技術(shù)之,它的主要目的是將個(gè)數(shù)據(jù)庫(kù)服務(wù)器上的數(shù)據(jù)復(fù)制
    的頭像 發(fā)表于 11-16 14:10 ?916次閱讀

    mysql主從復(fù)制主要有幾種模式

    MySQL主從復(fù)制MySQL數(shù)據(jù)庫(kù)中常用的種數(shù)據(jù)復(fù)制方式,用于實(shí)現(xiàn)數(shù)據(jù)的備份、負(fù)載均衡、故障恢復(fù)等目的。
    的頭像 發(fā)表于 11-16 14:15 ?1348次閱讀

    mysql主從復(fù)制的原理

    MySQL主從復(fù)制種數(shù)據(jù)庫(kù)復(fù)制技術(shù),它允許將個(gè)MySQL數(shù)據(jù)庫(kù)的更新操作自動(dòng)
    的頭像 發(fā)表于 11-16 14:18 ?617次閱讀

    mysql主從復(fù)制 混合類(lèi)型的復(fù)制

    MySQL主從復(fù)制種常用的數(shù)據(jù)復(fù)制技術(shù),可以實(shí)現(xiàn)數(shù)據(jù)從個(gè)MySQL服務(wù)器(主服務(wù)器)
    的頭像 發(fā)表于 11-16 14:20 ?721次閱讀

    mysql主從復(fù)制數(shù)據(jù)不致怎么辦

    MySQL主從復(fù)制種常用的數(shù)據(jù)復(fù)制技術(shù),用于實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)同步和分布式部署。然而,在實(shí)際應(yīng)用中,主從復(fù)制過(guò)程中出現(xiàn)數(shù)據(jù)不
    的頭像 發(fā)表于 11-16 14:35 ?2683次閱讀

    配置MySQL主從復(fù)制和讀寫(xiě)分離

    配置MySQL主從復(fù)制和讀寫(xiě)分離
    的頭像 發(fā)表于 10-23 11:44 ?698次閱讀
    配置<b class='flag-5'>MySQL</b><b class='flag-5'>主從復(fù)制</b>和讀寫(xiě)分離