MySQL主從複製,主主複製,備份相關。

  1. 主從複製原理:

主庫發生改變會把改變數據庫寫入二進制日誌,通過slave服務線程更新同步到從服務器 的io線程,io線程把數據更改寫入中繼日誌,從服務器通過sql線程把數據更新寫入從庫,從而實現同步。

  1. 主主複製原理:

主主複製原理,原理其實就是主從複製原理(主主複製,是兩個庫互相把對方當做主庫,互相連接)

  1. 增量備份,全量備份:

全量備份:備份整個數據庫。 【 mysqldump —備份 】
備份:mysqldump -uroot -p shop > /tmp/shop.sql;
還原: mysql -u root -p shop < /tmp/shop.sql;
Source /tmp/shop.sql;
增量備份:藉助binlog日誌文件。

  1. 主從延時原因?怎麼解決?

原因:因爲主庫改數據的時候,是多線程併發更新。從庫是單線程串行更新,比較慢。
解決方法:
1、在mysql5.6支持多線程更新【針對多個數據庫】,但是對於單庫還是單線程更新的。
2、提高從庫的配置。【加快從庫更新效率】
3、強制從主庫拿數據 【不去從庫讀取數據】
4、從緩存讀取數據
5、使用mysql_proxy。
6、配置文件中 – sync_binlog=1
sync_binlog
這個參數直接影響mysql的性能和完整性
sync_binlog=0:
當事務提交後,Mysql僅僅是將binlog_cache中的數據寫入Binlog文件,但不執行sync之類的磁盤同步指令通知文件系統將緩存刷新到磁盤,而讓Filesystem自行決定什麼時候來做同步,這個是性能最好的。
sync_binlog=n,在進行n次事務提交以後,Mysql將執行一次sync之類的磁盤同步指令,通知文件系統將Binlog文件緩存刷新到磁盤。

  1. 主鍵衝突:

MySQL主主複製是爲了減輕數據庫寫入壓力,但在高併發情況下,會發生主鍵衝突
解決方法:

改變數據庫的配置,使其自增id的自增值發生改變(自增值變爲服務器數量,offset偏移從1開始自增,兩個服務器的話,偏移一個是一,一個是二,自增的量都是二)

  1. 主鍵浪費如何產生:

因爲設置了auto-increment,所以主鍵自增的時候,並不是1,2,3這樣開始,而是1,3,5等,這是不可避免的。畢竟魚(數據庫壓力小)和熊掌(主鍵不浪費)不可兼得

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章