MySQL的原理以及流程_MySQL的复制原理以及流程?
主從復(fù)制:將主數(shù)據(jù)庫中的DDL和DML操作通過二進(jìn)制日志(BINLOG)傳輸?shù)綇臄?shù)據(jù)庫上,然后將這些日志重新執(zhí)行(重做);從而使得從數(shù)據(jù)庫的數(shù)據(jù)與主數(shù)據(jù)庫保持一致。
主從復(fù)制的作用
主數(shù)據(jù)庫出現(xiàn)問題,可以切換到從數(shù)據(jù)庫。
可以進(jìn)行數(shù)據(jù)庫層面的讀寫分離。
可以在從數(shù)據(jù)庫上進(jìn)行日常備份。
MySQL主從復(fù)制解決的問題
數(shù)據(jù)分布:隨意開始或停止復(fù)制,并在不同地理位置分布數(shù)據(jù)備份
負(fù)載均衡:降低單個(gè)服務(wù)器的壓力
高可用和故障切換:幫助應(yīng)用程序避免單點(diǎn)失敗
升級(jí)測(cè)試:可以用更高版本的MySQL作為從庫
MySQL主從復(fù)制工作原理
在主庫上把數(shù)據(jù)更高記錄到二進(jìn)制日志
從庫將主庫的日志復(fù)制到自己的中繼日志
從庫讀取中繼日志的事件,將其重放到從庫數(shù)據(jù)中
**基本原理流程,3個(gè)線程以及之間的關(guān)聯(lián) ** 主:binlog線程——記錄下所有改變了數(shù)據(jù)庫數(shù)據(jù)的語句,放進(jìn)master上的binlog中;
從:io線程——在使用start slave 之后,負(fù)責(zé)從master上拉取 binlog 內(nèi)容,放進(jìn)自己的relay log中;
從:sql執(zhí)行線程——執(zhí)行relay log中的語句;
復(fù)制過程
Binary log:主數(shù)據(jù)庫的二進(jìn)制日志
Relay log:從服務(wù)器的中繼日志
第一步:master在每個(gè)事務(wù)更新數(shù)據(jù)完成之前,將該操作記錄串行地寫入到binlog文件中。
第二步:salve開啟一個(gè)I/O Thread,該線程在master打開一個(gè)普通連接,主要工作是binlog dump process。如果讀取的進(jìn)度已經(jīng)跟上了master,就進(jìn)入睡眠狀態(tài)并等待master產(chǎn)生新的事件。I/O線程最終的目的是將這些事件寫入到中繼日志中。
第三步:SQL Thread會(huì)讀取中繼日志,并順序執(zhí)行該日志中的SQL事件,從而與主數(shù)據(jù)庫中的數(shù)據(jù)保持一致。
總結(jié)
以上是生活随笔為你收集整理的MySQL的原理以及流程_MySQL的复制原理以及流程?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Fraction+mysql_MySQL
- 下一篇: powerdesigner 同步mysq