MYSQL的發(fā)展背景和特性;
MYSQL的體系架構(gòu)組成;
MYSQL的各種存儲引擎及適用場景;
MYSQL主從復(fù)制的基本原理;
MYSQL常見的主從復(fù)制架構(gòu)和高可用架構(gòu);
總結(jié)處理復(fù)制延遲和復(fù)制不一致的問題。
版本介紹:
Mysql GA(ORACLE)
Percon mysql
MariaDB
開源
開放源代碼且無版權(quán)制約,自主性強(qiáng)、使用成本低可根據(jù)
歷史悠久、社區(qū)及用戶非?;钴S,遇到問題,可以很快獲取到幫助。
可移植:
支持多種操作系統(tǒng),提供多種api幾口,支持多種開發(fā)語言。
安全:
有著非常完善的用戶和權(quán)限系統(tǒng),當(dāng)你建立連接時,可以通過加密的方式來保證他通信安全。
Mysql的體系架構(gòu):
常用的存儲引擎和特性對比
MYSQL從5.5.5版本開始默認(rèn)存儲引擎為InnoDB(表級別)
基本概念
MYSQL從3.2.3版本開始提供復(fù)制的功能,復(fù)制是指將主庫的DDL和DML(除select)操作通過二進(jìn)制日志傳到服務(wù)器上(從庫),然后再從庫上對這些日志重新執(zhí)行(也叫重做),從而使得從庫和主庫的數(shù)據(jù)保持同步。
為什么要做主從復(fù)制:
z
輔助備份
分擔(dān)負(fù)載
應(yīng)用場景
應(yīng)用場景1:從服務(wù)器作為主服務(wù)器的實時數(shù)據(jù)備份
應(yīng)用場景2:主從服務(wù)器實現(xiàn)讀寫分離,服務(wù)器實現(xiàn)負(fù)載均衡
應(yīng)用場景3:把多個從服務(wù)器根據(jù)業(yè)務(wù)重要性進(jìn)行拆分訪問
復(fù)制的原理
Master:binlog dump 線程。Slave: I/O線程,Slave: SQL線程
異步復(fù)制
主節(jié)點只需要把寫入操作在本地完成,就響應(yīng)用戶。
半同步復(fù)制&增強(qiáng)半同步復(fù)制
為了保證主庫上的每一個binlog事務(wù)都能夠被可靠的復(fù)制到從庫上,主庫在每次事務(wù)提交成功時,并不是及時反饋給客戶端用戶,而是等待其中一個從庫也接收到了binlog并成功將事務(wù)記錄到了中繼日志中,然后才反饋給用戶。
rpl_semi_sync_master_timeout
set globalrpl_semi_sync_master_wait_point=AFTER_COMMIT;
半同步復(fù)制的配置:
半同步參數(shù)需要先注釋掉,等初始化完成之后安裝好半同步插件,再開啟半同步參數(shù)
如果是雙主架構(gòu)則主備庫都需要安裝:
rpl_semi_sync_master_enabled= 1
rpl_semi_sync_slave_enabled= 1
maser
slave
結(jié)果:
完全同步的復(fù)制
當(dāng)主庫提交事務(wù)之后,所有的從庫節(jié)點必須收到、APPLY并且提交這些事務(wù),然后主庫線程才能繼續(xù)做后續(xù)操作。因為需要等待所有從庫執(zhí)行完該事務(wù)才能返回,所以全同步復(fù)制的性能必然會收到嚴(yán)重的影響。
一主一從
主主復(fù)制
一主多從---擴(kuò)展系統(tǒng)讀取的性能,因為讀是在從庫讀取的;
多主一從---5.7開始支持
聯(lián)級復(fù)制
MYSQL的主從復(fù)制-高可用架構(gòu)對比
分類 | MM | MHA | MGR |
優(yōu)勢 | 主主模式能將讀寫請求分?jǐn)偟絻蓚€主節(jié)點,有效提升服務(wù)器使用率。 | MHA除了支持日志點的復(fù)制還支持GTID的方式 | 基本無延遲,延遲比異步的小很多 |
主節(jié)點發(fā)生故障后,能快速進(jìn)行主從切換。 | 同MMM相比,MHA會嘗試從舊的Master中恢復(fù)舊的二進(jìn)制日志,只是未必每次都能成功。如果希望更少的數(shù)據(jù)丟失場景,建議使用MHA架構(gòu)。 | 支持多寫模式,但是目前還不是很成熟 | |
當(dāng)故障節(jié)點恢復(fù)后,故障節(jié)點能通過復(fù)制進(jìn)行數(shù)據(jù)恢復(fù)(應(yīng)用其他節(jié)點數(shù)據(jù))和數(shù)據(jù)同步(將未同步數(shù)據(jù)發(fā)生給其他節(jié)點)。 | 數(shù)據(jù)的強(qiáng)一致性,可以保證數(shù)據(jù)事務(wù)不丟失 | ||
不足 | 當(dāng)主節(jié)點上MySQL實例發(fā)生故障后,可能會存在部分?jǐn)?shù)據(jù)(Binlog)未同步到另外的主節(jié)點,導(dǎo)致數(shù)據(jù)丟失(直到故障節(jié)點恢復(fù))。 | MHA需要自行開發(fā)VIP轉(zhuǎn)移腳本。 | 僅支持innodb |
主主模式下,很容易因數(shù)據(jù)訪問控制不當(dāng)導(dǎo)致數(shù)據(jù)沖突。 | MHA只監(jiān)控Master的狀態(tài),未監(jiān)控Slave的狀態(tài) | 只能用在GTID模式下,且日志格式為row格式 | |
為提高系統(tǒng)高可用性,雙主架構(gòu)會被擴(kuò)展成雙主多從結(jié)構(gòu),同樣存在主節(jié)點發(fā)生故障后多個從庫選主和恢復(fù)復(fù)制的問題。 | |||
適用場景 | 讀寫都需要高可用的場景 | 一主多從的環(huán)境下,MySQL的主從復(fù)制是異步或是半同步。 | 對主從延遲比較敏感 |
希望對對寫服務(wù)提供高可用,又不想安裝第三方軟件 | |||
數(shù)據(jù)強(qiáng)一致的場景 |
如何處理同步延遲
1. 如果是機(jī)械盤:
set globalinnodb_flush_neighbors=2;
表示刷新在buffer pool 中位于磁盤上相同的extend 區(qū)的臟頁,通過AIO可以將多個IO寫入操作合并為一個IO操作,增大寫入量,減少了物理寫IO。
2.如果是IO的問題:
set globalinnodb_io_capacity=1200; (默認(rèn)200)
即每秒的輸入輸出量(或讀寫次數(shù))。
3.臨時調(diào)整:
set globalinnodb_flush_log_at_trx_commit=2; (默認(rèn)為1)
set globalsync_binlog=0;
同步之后需要調(diào)整回:
set globalinnodb_flush_log_at_trx_commit=1;
set globalsync_binlog=1;
錯誤信息
錯誤分析
mysqlbinlogmysql-bin.xxx -vv --base64-output=decode-rows --start-position=a--stop-position=b>/tmp/test.log
錯誤分析結(jié)論
200711 8.49 –9:42期間日志中斷,原因是這段時間內(nèi),主機(jī)重啟了,而二進(jìn)制這部分日志傳輸?shù)絺鋷斓臅r候丟失了。
解決方案
主庫:
確定備庫丟失的二進(jìn)制日志的內(nèi)容(根據(jù)時間或者位點信息)
經(jīng)過排查確定丟失的日志為mysql-bin000333中的start-position=362945607 到 stop-position=363101485的內(nèi)容。
備庫:中端將
mysqlbinlog--skip-gtids --start-position=362945607 --stop-position=363101485mysql-bin000333 |mysql -utest -p -h ip
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/130164.html
摘要:肖鵬微博數(shù)據(jù)庫那些事兒肖鵬,微博研發(fā)中心技術(shù)經(jīng)理,主要負(fù)責(zé)微博數(shù)據(jù)庫相關(guān)的業(yè)務(wù)保障性能優(yōu)化架構(gòu)設(shè)計,以及周邊的自動化系統(tǒng)建設(shè)。經(jīng)歷了微博數(shù)據(jù)庫各個階段的架構(gòu)改造,包括服務(wù)保障及體系建設(shè)微博多機(jī)房部署微博平臺化改造等項目。 showImg(https://segmentfault.com/img/bV24Gs?w=900&h=385); 對于手握數(shù)據(jù)庫的開發(fā)人員來說,沒有誤刪過庫的人生是...
摘要:編輯器編輯器背景編輯器前段時間遇到一個線上問題,后來排查好久發(fā)現(xiàn)是因為主從同步延遲導(dǎo)致的,所以今天寫一篇文章總結(jié)一下這個問題希望對你有用。編輯器幾句嘮叨編輯器大家好,我是小飯,一枚后端工程師。背景前段時間遇到一個線上問題,后來排查好久發(fā)現(xiàn)是因為主從同步延遲導(dǎo)致的,所以今天寫一篇文章總結(jié)一下這個問題希望對你有用。如果覺得還不錯,記得加個關(guān)注點個贊哦思維導(dǎo)圖思維導(dǎo)圖常見的主從架構(gòu)隨著日益增長的訪...
閱讀 1356·2023-01-11 13:20
閱讀 1707·2023-01-11 13:20
閱讀 1215·2023-01-11 13:20
閱讀 1906·2023-01-11 13:20
閱讀 4165·2023-01-11 13:20
閱讀 2757·2023-01-11 13:20
閱讀 1402·2023-01-11 13:20
閱讀 3671·2023-01-11 13:20