mysql主從復制--概念及架構

分類:IT技術 時間:2016-10-09
mysql repication
mysql repication原理    前端用戶的寫操作,或者是數據庫修改操作,都會記錄到二進制日誌文件,保存為事件;master通過3306端口將binlog發給slave mysql服務器,slave mysql服務器將binlog保存到relay log,讀取relay log並執行一遍,將數據寫入磁盤
1.1 主從示意圖
1.2 一主多從、多級復制

mysql repication先天缺陷    mysql一個查詢只能在一顆CPU上執行,若主有多個CPU,同時執行多個事務,多個事務的往數據庫中寫數據的速度會比較快,但是二進制日誌會在內存中緩存,一段時間後才會一條一條從緩存同步到二進制日誌文件。此時,二進制日誌才會同步到從上,salve從中繼日誌一條一條讀取事件,並執行,這樣,主的速度比從快很多
mysql repication模式異步:默認模式,master本地執行成功,即成功;不管二進制日誌是否發送發送到slave半同步:在一主多從模式下,master將二進制日誌發送到多個slave,但只保證一個slave接收成功,則表示半同步成功,與同步類似。mysql 5.5後支持半同步。同步:master執行一條語句,master二進制日誌同步到slave中繼日誌中,slave讀取中繼日誌文件並執行成功,返回信息通知master執行成功。同步模式,mysql的速度會慢很多,前端應用將會等待很久。
4 mysql replication作用1、slave下線做冷備份,熱備較為復雜。2、高可用,當主出現故障,從稍作處理即可上線工作3、異地容災4、scale out:分攤讀負載,一主多從,主寫從讀
5 在mysql主從中,不使用mysql代理,如何實現master負責寫,slave負責讀?(以discuz為例)    php模塊本身並不和mysql產生交互,和mysql交互的是discuz,讓discuz解決讀寫問題;    雙主模型,可以減輕服務器讀數據的壓力,無法減輕寫操作;並且容易出現重復記錄二進制日誌的情況,因此少采用。
6 主從、一主多從、雙主都不能減輕一臺服務器寫的壓力;當一臺服務器不能承受寫壓力時:1)scale on,提高其配置2)scale out,數據拆分(垂直拆分、水平拆分)

7 mysql讀寫分離的實現mysql-proxyamoeba8 數據拆分cobar
9 mysql日誌二進制日誌 bin lpg    存放位置:數據目錄下mysql-bin.xxxxxxxx
    滾動:1 達到最大上線;2 flush logs;3 服務器重啟    清除二進制日誌命令:purge    格式:statement,基於語句,不建議使用          row,基於行,建議使用          mixed,混合    mysql-bin.index:二進制日誌文件索引文件    查看當前mysql使用的二進制日誌文件:show master stattus;    查看二進制日誌文件內容:show binlog events in “file”;
    查看二進制日誌文件列表:show binary logs;
    二進制日誌記錄事件包含的元素:timestamp,position(offset),event,server-id
    二進制日誌可用於即時點還原,但並不能替代數據備份?
        使用二進制日誌恢復數據時,並不能保證數據和以前完全一樣。多顆CPU並行處理數據,但記錄日誌時是串行寫入的。
    
事務日誌錯誤日誌 error log一般查詢日誌中繼日誌 relay log慢查詢日誌


















來自為知筆記(Wiz)


Tags: 服務器 master discuz 數據庫 二進制

文章來源:


ads
ads

相關文章
ads

相關文章

ad