沃趣科技mysql數據一致性_第1頁
沃趣科技mysql數據一致性_第2頁
沃趣科技mysql數據一致性_第3頁
沃趣科技mysql數據一致性_第4頁
沃趣科技mysql數據一致性_第5頁
已閱讀5頁,還剩24頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

MySQL數據一致性杭州沃趣科技股份有限公司H2an0gz1ho5u

.W1O1Q.U0T3echnology

Co.,

Ltd.01目錄MySQL崩潰恢復安全性02MySQL復制原理及異步、semi-sync復制03MySQL主備復制如何保證數據一致性杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.01目錄MySQL崩潰恢復安全性02MySQL復制原理及異步、semi-sync復制03MySQL主備復制如何保證數據一致性杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.Innodb崩潰恢復安全性如何保證undo-log實現事務的原子性(記錄著數據變更前的記錄,用于回滾沒有提交的事務)redo-log實現事務的持久性,和Undo

Log相反,Redo

Log記錄的是發生新的修改的數據。恢復時可以根據Redo

Log的內容,將所有數據恢復到最新的狀態杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.undo+redo簡單的事務執行過程和特點假設表中有A、B兩個數據,值分別為1、2,事務執行update時的簡單過程如下:begin,undo

logredo

logundo

logredo

logredo

logcommit,事務開始記錄A=1記錄A=3記錄B=2記錄B=4把A、B修改落盤提交事務杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.undo+redo簡單的崩潰恢復過程如何使用redo

log、undo

log簡單崩潰恢復如下:checkpoint點prepare狀態redo

logundo

logchange

buffermerge,undo

purge主要是為了加快crash

恢復的速度用checkpoint標記數據落盤到哪個位置了,對于checkpoint之前的部分,不需要再用redo

log恢復,因為數據已經的部分.prepare狀態之前的事務,會直接回滾,杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.prepare狀態的事務,如果binlog已經落盤,落盤了,只需要應用checkpocinht點e之ck后point是什么?

則重新提交,否則回滾控制redo

log如何刷新的參數主庫參數優化:

mit=1杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.Double

writedouble

write

作用?避免部分寫double

write

組成?內存和磁盤各兩個1M組成杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.01目錄MySQL崩潰恢復安全性杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.0203MySQL主備復制如何保證數據一致性MySQL復制原理及異步、semi-sync復制MySQL的復制的應用場景?利用從庫做讀能力提升(讀寫分離)利用從庫做讀能力提升(讀寫分離)?利用從庫做master故障的接管(故障切換)利用從庫做master故障的接管(故障切換)?利用從庫做備份減少對業務的影響利用從庫做備份減少對業務的影響?利用從庫做升級(升級MySQL版本或者升級業務數據庫結構)利用從庫做升級(升級MySQL版本或者升級業務數據庫結構)?利用從庫做特殊的SQL統計(如count,group

by,sum)利用從庫做特殊的SQL統計(如count,group

by,sum)12345杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.MySQL

如何實現復制Binlog

Dump杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.二階段提交sync-binlog=1log-bin=mysql-bin開啟binary

logInnodb_support_xa=1多線程并發執行提交事務,按照事務的先后順序寫入binlog。杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.MySQL

binlog的格式發展MySQL5.1.5MySQL5.1.5MySQL5.1.8之前及其之后及其之后只支持statement新增支持row格新增支持mixed格式式格式杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.MySQL

Binary

log三種格式的區別Mixed=statement+row:mysql默認采用statement格式進行二進制日志文件的記錄,但是在一些情況下會使用row格式,可能使用row格式的情況有:1)表的存儲引擎為NDB,這時對表的DML操作都會以row格式記錄

2)使用了uuid(),user(),current_user(),found_rows(),row_count()等不確定函數

3)使用了insert

delay語句使用了用戶自定義函數UDF使用了臨時表Statement:記錄的是邏輯SQL優點是日志量小缺點是執行一些不確定的函數(如uuid(),now())會出現主從數據不一致Row:記錄的不再是簡單的SQL語句了(DDL還是記錄的SQL),而是記錄的表的行更改的情況優點是解決了statement格式下主從數據不一致的問題,所有數據都可以安全地復制缺點是日志量大,影響從庫日志的復制時間杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.Binary

log格式-statement格式記錄的內容Binary

log格式-row格式記錄的內容MySQL復制原理Master節點配置[mysqld]log-bin=mysql-binserver-id=1Slave節點配置[mysqld]server-id=2Binlog

Dump杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.Slave查看復制詳情show

slave

status\GMysql>show

slavestatus\GSlave_IO_Running:YESSlave_SQL_Running:YES杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.場景一:Master主庫正常關機從庫重連間隔參數:master_connect_retry=10杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.場景二:Master主庫異常InternetMASTER

SLAVEslave_net_timeoutmaster_connect_retrymaster_retry_count默認值3600秒默認值60秒,changemaster語句可設置默認值86400次,changemaster語句可設置杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.官方半同步復制原理杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.5.7增強半同步原理杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.開啟semi-sync主備復制主庫Master安裝插件semisync_master.so并配置f:mysql>

install

plugin

rpl_semi_sync_master

SONAME

'semisync_master.so';[mysqld]rpl_semi_sync_master_enabled=1rpl_semi_sync_master_timeout=1000

#

1

second從庫slave安裝semisync_slave.so插件并配置f:mysql>

install

pluginrpl_semi_sync_slave

SONAME

'semisync_slave.so';[mysqld]rpl_semi_sync_slave_enabled=1查看當前semi-sync變量設置:mysql>

SHOW

VARIABLES

LIKE

‘rpl_semi_sync%’;查看當前semi-sync狀態信息:mysql>

SHOW

STATUS

LIKE

'Rpl_semi_sync%';PS:如果從庫已經啟動了異步復制,那么在配置了semi-sync之后,備庫需要先stop

slaveio_thread;startslaveio_thread;然后再使用參數setglobalrpl_semi_sync_slave_enabled=1;重新打開半同步杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.01目錄MySQL崩潰恢復安全性02MySQL復制原理及異步、semi-sync復制03MySQL主備復制如何保證數據一致性杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.從庫崩潰恢復之后,如何知道從主庫的哪個位置開始復制?記錄主機master連接信息、IO線程讀取到的當前主機Binarylog文件名和日志偏移量master_info_repository=FILE時這些信息記錄到文件中relay_記錄本地SQL線程已經執行到的中繼日志名稱和主庫對應的Binarylog文件名、偏移量relay_log_info_repository=FILE時這些信息記錄到relay_文件中杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.IO線程和SQL線程的信息保存在文件中如何保證不丟失保存文件,崩潰時可能并沒有落盤,導致丟失雙sync參數設置為1,又會導致從庫性能差,且因為binlogevent的更新與保存這個位置之間并不是原子操作,所以就算設置為1還是可能丟失這個位置杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.IO線程和SQL線程的信息保存在innodb表中如何保證不丟失relay_log_recovery=ON保存table,innodb表,可利用innodb崩潰恢復特性對于SQL線程信息保存在table中,mysql自身做了兩個優化:

1、slave_relay_log_info表的update事務插入合并到SQL線程執行binlog的事務中,通過這個優化可以做到實時更新SQL線程杭州沃趣科技股份有限公司Hangzhou

WOQU

Technology

Co.,

Ltd.位置,并且保證了兩者之間是一個原子操作。2、innodb本身支持group

commit,更新slave_relay_log_info也適用MySQL數據一致性--回顧基于binlog邏輯日志復制log-bin=mysql-bin#主庫打開寫binlog功能server-id=1#復制架構中全局唯一binlog_format=row

#row數時,只把真正的變更復制到從庫mit=1#保證redo

實時落盤sync_binlog=1#保證binlog實時落盤

innodb_support_xa=1#保證binlog的寫入順序與事務提交順序一致server-id=2

#復制架構中全局唯一innodb存儲引擎自身通過rreeldaoy_lloo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論