MySQL 【主從模式(一)】基于binlog文件位置的復(fù)制

主從復(fù)制

概念

MySQL主從復(fù)制谁帕,可以將一臺MySQL數(shù)據(jù)庫服務(wù)器(主)上的數(shù)據(jù)復(fù)制到另外一臺或者多臺數(shù)據(jù)庫服務(wù)器(從)上辩蛋,保持主從數(shù)據(jù)的一致性技健。
根據(jù)不同的配置骄呼,可以選擇將主庫中的所有數(shù)據(jù)庫、指定數(shù)據(jù)庫或者數(shù)據(jù)庫中的指定表復(fù)制到從庫中琼富。

作用

MySQL主從復(fù)制的作用包括:

    1. 數(shù)據(jù)備份仪吧,高可用性。對數(shù)據(jù)進(jìn)行熱備份鞠眉,將主從部署在不同的服務(wù)器上薯鼠。當(dāng)主庫宕機(jī)故障,可以快速進(jìn)行主從切換械蹋,提高可用性出皇。
    1. 讀寫分離,橫向擴(kuò)展朝蜘,提高性能。將所有的更新操作路由至主庫涩金,查詢操作路由至從庫谱醇,進(jìn)行讀寫分離暇仲。同時可以通過配置多個從庫進(jìn)行擴(kuò)展,提高查詢性能副渴。
    1. 數(shù)據(jù)安全奈附。在從庫上執(zhí)行備份操作,而不影響主庫的數(shù)據(jù)煮剧。也可以配置延遲復(fù)制斥滤,在出現(xiàn)異常操作時,可以及時進(jìn)行數(shù)據(jù)恢復(fù)勉盅。
    1. 數(shù)據(jù)分析與長距離分發(fā)佑颇。使用從庫進(jìn)行數(shù)據(jù)分析和供遠(yuǎn)端站點(diǎn)使用,而不影響主庫的性能草娜。

原理

MySQL的主從復(fù)制依賴于MySQL binlog詳解與解析工具指南文章中提及的MySQL的binlog功能挑胸。

  • ? 主庫將數(shù)據(jù)變更的語句或者行數(shù)據(jù)變化,記錄到binlog中宰闰;
  • ? 主庫上的dump線程茬贵,采集binlog數(shù)據(jù)與從庫的IO線程進(jìn)行交互;
  • ? 從庫的IO線程將獲取到的數(shù)據(jù)轉(zhuǎn)儲成relaylog文件移袍;
  • ? 從庫的SQL線程將relaylog中的數(shù)據(jù)讀取出來解藻,并在從庫上進(jìn)行回放。
    主從庫相應(yīng)的線程信息如下圖:

主庫:


從庫:


主從同步模式

異步:MySQL默認(rèn)的復(fù)制模式葡盗。主庫執(zhí)行完并寫入binlog后螟左,不關(guān)心從庫是否處理了事務(wù),立即將結(jié)果返回給客戶端戳粒。
在該模式下路狮,無法保證任何事務(wù)都被傳達(dá)到副本,若此時主庫宕機(jī)崩潰蔚约,進(jìn)行故障轉(zhuǎn)移后出現(xiàn)數(shù)據(jù)丟失奄妨。
全同步:當(dāng)主庫提交事務(wù)后,要等待所有的從庫都提交事務(wù)后苹祟,才能將結(jié)果返回給客戶端砸抛。
該模式下,可以隨時從主庫進(jìn)行故障轉(zhuǎn)移到任何從庫树枫,不擔(dān)心數(shù)據(jù)丟失直焙。但是可能導(dǎo)致事務(wù)的執(zhí)行時間延長
半同步:介于異步與全同步之間砂轻。主庫提交事務(wù)后奔誓,等待至少一個(數(shù)量可配)從庫收到并記錄事務(wù),然后提交事務(wù)返回結(jié)果搔涝。
延遲同步故意配置從庫落后于主庫指定的時間厨喂。
該模式下和措,可以防止用戶在主庫上犯錯,DBA可以進(jìn)行數(shù)據(jù)恢復(fù)蜕煌;可以檢查延遲之前的數(shù)據(jù)庫狀態(tài)派阱。

基于binlog文件位置的復(fù)制

根據(jù)不同的場景,要使用不同的方法來配置主從同步斜纪。但是通用的一般步驟如下(不同的場景只是在相應(yīng)的步驟上進(jìn)行特定的優(yōu)化與修改):

  • ? 在主庫上開啟binlog贫母,同時配置唯一的server ID。注意:該操作可能需要重啟主庫盒刚。
[mysqld]
  log-bin=mysql-bin
  server-id=1

在配置文件中開啟binlog腺劣,設(shè)置server-id(范圍1-2<sup>32</sup> - 1,且不同于其他數(shù)據(jù)庫實例

  • ? 在從庫上配置唯一server ID伪冰。注意:該操作可能需要重啟從庫誓酒。
  • ? 在庫上創(chuàng)建單獨(dú)的用戶,用于從庫讀取主庫的binlog贮聂。
mysql> CREATE USER 'repl'@'%.example.com' IDENTIFIED BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.example.com';
  • ? 獲取主庫當(dāng)前binlog文件及其位置靠柑。

mysql> SHOW MASTER STATUS\G
*************************** 1. row ***************************
             File: mysql-bin.000003
         Position: 73
     Binlog_Do_DB: test
 Binlog_Ignore_DB: manual, mysql
Executed_Gtid_Set: 3E11FA47-71CA-11E1-9E33-C80AA9429562:1-5
1 row in set (0.00 sec)

使用SHOW MASTER STATUS語句可以確定二進(jìn)制文件:mysql-bin.000003,位置:73吓懈。
這些信息用來配置從庫時歼冰,告訴從庫開始復(fù)制主庫的起始點(diǎn)。

  • ? 如果主實例已經(jīng)有數(shù)據(jù)耻警,需要創(chuàng)建數(shù)據(jù)快照隔嫡,將其數(shù)據(jù)copy到從實例。不同的存儲引擎創(chuàng)建數(shù)據(jù)快照的方法不一樣甘穿。
    創(chuàng)建數(shù)據(jù)快照的方法有很多種:MySQL dump 腮恩;copy數(shù)據(jù)庫原始數(shù)據(jù)文件使用第三方工具等温兼,在之后會詳細(xì)分享不同的方法秸滴。
  • ? 配置從庫連接主庫

mysql> CHANGE MASTER TO
  ->     MASTER_HOST='source_host_name',
  ->     MASTER_PORT='source_port_num',
  ->     MASTER_USER='replication_user_name',
  ->     MASTER_PASSWORD='replication_password',
  ->     MASTER_LOG_FILE='recorded_log_file_name',
  -> 

MASTER_HOST、MASTER_PORT主庫的主機(jī)和端口募判,
MASTER_USER荡含、MASTER_PASSWORD上述步驟中在主庫上創(chuàng)建的賬號與密碼,
MASTER_LOG_FILE届垫、MASTER_LOG_POS上述步驟中獲取的主庫的二進(jìn)制文件及位置释液。

  • ? 開啟同步并查看同步狀態(tài)
    start slave;開啟同步;
    show slave status\G查看同步狀態(tài)装处;

至此误债,配置的主從的一般步驟就完成了。
如果是主庫與從庫都是新安裝,主庫沒有數(shù)據(jù)需要copy到從庫寝蹈,使用上述步驟就可以配置成功糟袁。
但是如果主庫存在數(shù)據(jù),或者要將新安裝的從庫加入到已有的主從關(guān)系中躺盛,就需要在配置從庫連接主庫前,進(jìn)行額外的操作形帮,
主要是根據(jù)主庫的狀態(tài)和數(shù)據(jù)槽惫,使用不同的方法將數(shù)據(jù)copy到從庫中,在之后會詳細(xì)分享不同的方法辩撑。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末界斜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子合冀,更是在濱河造成了極大的恐慌各薇,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件君躺,死亡現(xiàn)場離奇詭異峭判,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)棕叫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門林螃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人俺泣,你說我怎么就攤上這事疗认。” “怎么了伏钠?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵横漏,是天一觀的道長。 經(jīng)常有香客問我熟掂,道長缎浇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任打掘,我火速辦了婚禮华畏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘尊蚁。我一直安慰自己亡笑,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布横朋。 她就那樣靜靜地躺著仑乌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上晰甚,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天衙传,我揣著相機(jī)與錄音,去河邊找鬼厕九。 笑死蓖捶,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的扁远。 我是一名探鬼主播俊鱼,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼畅买!你這毒婦竟也來了并闲?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤谷羞,失蹤者是張志新(化名)和其女友劉穎帝火,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體湃缎,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡犀填,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了嗓违。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宏浩。...
    茶點(diǎn)故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖靠瞎,靈堂內(nèi)的尸體忽然破棺而出比庄,到底是詐尸還是另有隱情,我是刑警寧澤乏盐,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布佳窑,位于F島的核電站,受9級特大地震影響父能,放射性物質(zhì)發(fā)生泄漏神凑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一何吝、第九天 我趴在偏房一處隱蔽的房頂上張望溉委。 院中可真熱鬧,春花似錦爱榕、人聲如沸瓣喊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽藻三。三九已至洪橘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間棵帽,已是汗流浹背熄求。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留逗概,地道東北人弟晚。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像逾苫,于是被迫代替她去往敵國和親指巡。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容