欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

mysqlmaster/slavecrash_safereplication:你不懂我我不怪你

written by 小旋風(fēng)
業(yè)界很多的兄弟都對(duì)MySQL 趨之若鶩,甚是喜歡,因?yàn)樗?可愛(ài)(安裝包小 小巧玲瓏),單純(安裝簡(jiǎn)單、使用簡(jiǎn)單 易上手),真誠(chéng)(開(kāi)源),善解人意(功能強(qiáng)勁、持續(xù)改進(jìn))。
你卻因?yàn)椴焕斫庹`以為她 “不專(zhuān)一”(主從不一致,其實(shí)是可以主從一致的),逐漸對(duì)她若離若棄。 她在燈火闌珊處翹首以盼你的驀然回首,你卻冷冷的一笑而過(guò),她只能黯然
傷神念叨著:“你不懂我,我不怪你”。其實(shí)不怪你才怪。

下面小編就帶你去認(rèn)知mysql carsh_safe replication 的內(nèi)心世界

crash-safe replication 定義
  當(dāng)master/salve 任何一個(gè)節(jié)點(diǎn)發(fā)生宕機(jī)等意外情況,服務(wù)器重啟后master/salve數(shù)據(jù) 仍然保持一致性。
 
包含
 master crash-safe replication     
 slave  crash-safe replication

master crash-safe replication 
  需要配置3個(gè)參數(shù)。
  innodb-flush-log-at-trx-commit=1
  sync_binlog=1
  innodb-xa-support=1

詳解:
 master crash-safe  replication  只要保證事務(wù)和其二進(jìn)制的持久性就 ok。
 為了保證持久性,必須要保證 每提交一個(gè)事務(wù) 都要 持久化 redo log 到 重做日志文件  和 bin log 到 二進(jìn)制日志文件(保證主從庫(kù)數(shù)據(jù)一致性)。
 并且要確保 每commit 一個(gè)事務(wù)時(shí) 保存2個(gè)文件的原子性,由于是不同的文件需要開(kāi)啟分布式事務(wù)。

innodb-flush-log-at-trx-commit=1 
    每commit 一個(gè)事務(wù) 都要調(diào)用fsync 把其產(chǎn)生的redo log 信息保存到 磁盤(pán)上的 重做日志文件上。
    從而保證事務(wù)的持久性。發(fā)生故障重啟mysql server 通過(guò)redo log進(jìn)行恢復(fù)。

sync_binlog=1      
  每commit 一個(gè)事務(wù) 保存其二進(jìn)制日志到二進(jìn)制文件,保證主從數(shù)據(jù)一致性

innodb-xa-support=1  
  開(kāi)啟分布式事務(wù) 


slave crash-safe replication
  需要配置3個(gè)參數(shù)
  innodb-flush-log-at-trx-commit=1
  relay_log_info_repository=table
  relay_log_recovery=on

slave 非正常關(guān)閉 經(jīng)常會(huì)出現(xiàn)的問(wèn)題:
  不斷的1062 主鍵沖突錯(cuò)誤
    why?
    skip-slave-error=1062 ???
  主從數(shù)據(jù)不一致

是不是經(jīng)常碰到slave 宕掉后,復(fù)制報(bào)1062 主鍵沖突。可能你會(huì)直接執(zhí)行 SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1   跳過(guò)一個(gè)錯(cuò)誤。為什么想過(guò)沒(méi)有呢 ?
小編一向認(rèn)為 為什么 要比 是什么來(lái)的重要,我們要知其然知其所以然,這樣才可以避免錯(cuò)誤。下面就隨俺理理吧

SQL  thrend  主要做2件事
  1: 回放 relay log 中事務(wù)信息
  2: 更新 relay_log.info文件里的信息。確保下次重啟服務(wù),讓SQL  thrend  曉得從那個(gè)relay log 文件 的那個(gè)位置繼續(xù)開(kāi)始回放

why:
問(wèn)題就出現(xiàn)在步驟2上,跟新 relay_log.info 文件是緩存寫(xiě),其中 由 參數(shù) sync_relay_log_info 控制寫(xiě)到 relay_log.info文件的時(shí)機(jī)。
其默認(rèn)值是1000,意思是 每執(zhí)行10000個(gè) relay log 中的事務(wù)才寫(xiě)一次盤(pán)。就算是把sync_relay_log_info=1 也是有可能重復(fù)執(zhí)行1個(gè)事物的。
并且這樣頻繁的刷盤(pán),會(huì)導(dǎo)致系統(tǒng)性能?chē)?yán)重下降不可取。

salve 報(bào) 1062 場(chǎng)景實(shí)例解析:
 假設(shè) slave 上現(xiàn)在SQL thread  已經(jīng)回放了95000 個(gè)事務(wù),此時(shí)的 relay_log.info文件 記錄的位置是30500【第90000 個(gè)事務(wù)位置】那么此時(shí)salve 宕機(jī)了,
 重啟后 SQL thread 讀取 relay_log.info 得到已經(jīng)執(zhí)行到 某個(gè) relay log 文件 的30500 位置 即 第90000 個(gè)事務(wù)位置,然后又重新執(zhí)行90000-95000 的事務(wù),又因?yàn)?br /> 有主鍵約束自然就報(bào) 主鍵沖突了。

主從數(shù)據(jù)不一致 why
 同樣是上面的問(wèn)題,如果沒(méi)有主鍵約束,insert 數(shù)據(jù)就會(huì)重復(fù)執(zhí)行,從庫(kù)就會(huì)多出重新執(zhí)行的 insert 數(shù)據(jù)。
 一般 bin log 都是基于row 的, insert  不是冪等的 ,update  是冪等的。冪等:f(x)=f(f(x))  也就是此時(shí) 導(dǎo)致master/salve 不一致的都是insert 語(yǔ)句且表中沒(méi)有主鍵

解決方案:
MySQL 5.6 crash safe :   relay_log_info_repository=table
  relay-info.log的信息保存在InnoDB的事務(wù)表
  BEGIN;
   apply log event;
   apply log event;
   UPDATE mysql.slave_relay_log_info
  SET Master_log_pos = Exec_Master_Log_Pos,
  Master_log_name = Relay_Master_Log_File,
  Relay_log_name = Relay_Log_File,
  Relay_log_pos = Relay_Log_Pos;
 COMMIT

這樣就使得 執(zhí)行 relay log 中的 事務(wù) log event 與 更新 relay_log.info 的原子性。

 IO thread
   接收binary log event
   更新master-info.log
緩存寫(xiě)
  sync_master_info
解決方案
  relay_log_recovery=on
  確保binary log還在master服務(wù)器上

這與SQL thread 同理 ,會(huì)重復(fù)接受binary log event,解決的方案是relay_log_recovery=on 配合 之前的 relay_log_info_repository=table
即每次重啟服務(wù)IO thread  會(huì)讀取mysql.slave_relay_log_info表 中的 Master_log_name   Master_log_pos  即 IO thread  會(huì)重新到
 master 上從指定 二進(jìn)制文件 Master_log_name   的指定位置Master_log_pos  繼續(xù)拉數(shù)據(jù),前提是master 對(duì)應(yīng)的二進(jìn)制的文件還在。










網(wǎng)站題目:mysqlmaster/slavecrash_safereplication:你不懂我我不怪你
當(dāng)前地址:http://chinadenli.net/article8/gieiop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作品牌網(wǎng)站建設(shè)手機(jī)網(wǎng)站建設(shè)動(dòng)態(tài)網(wǎng)站自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司