高效能MySql學習筆記 第十章 複製

2022-09-04 19:48:08 字數 2202 閱讀 2388

複製解決的問題

複製如何工作建立複製賬號

配置主庫和備庫

啟動複製

從另乙個伺服器開始複製

其他推薦的複製配置基於語句的複製

缺點基於行的複製

缺點複製檔案

傳送複製事件到其他備庫

複製過濾器一主庫多備庫

結構圖如下:

主 - 主複製

擁有備庫的主 - 主結構是為每乙個主庫增加乙個備庫。這樣做增加了冗餘,對於不同地理位置的複製拓撲,能夠消除單點失效的問題。

環形複製

主庫、分發主庫、以及備庫

樹或金字塔型

定製的複製方案

分離功能

乙個常見的方法是將 oltp 伺服器的資料複製到專門為 olap 工作負載準備的備庫上。

資料歸檔

模擬多主庫複製

建立日誌伺服器

監控複製

測量備庫延遲

確定主備是否一致

從主庫重新同步備庫

改變主庫

客戶端停止當前主庫的寫操作。

通過flush tables with read lock在主庫上停止所有活躍地寫入。或者在主庫上設定 read_only 選項。從這一刻開始應該禁止向即將被替換的主庫做任何寫入。

選擇乙個備庫作為新的主庫,並確保它已經完全跟上主庫。

確保新主庫和舊主庫資料是一致的。

在新主庫上執行stop sl**e

在新主庫上執行change master to master_host='',然後再執行reset sl**e,使其斷開與主庫的鏈結,並丟棄 master.info 裡的資訊。

執行show master status記錄新主庫的二進位制日誌座標。

確保其他備庫已經追上。

關閉舊主庫。

啟用新主庫上事件。

將客戶端鏈結到新主庫。

在每台備庫上執行change master to語句,使用第7步中獲得的二進位制日誌座標,來指向新的主庫。

確定哪台備庫的資料最新,檢查每台備庫上show sl**e status命令輸出。選擇其中 master_log_file/read_master_log_pos 的值最新的那個。

讓所有備庫執行完其從崩潰前的舊日誌那獲得的中繼日誌。

執行前一小節的5~7步。

比較每台備庫和新主庫上的master_log_file/read_master_log_pos 的值。

執行前一小節的10~12步。

在乙個主 - 主配置中交換角色

停止主動伺服器上的所有寫入。

在主動伺服器上設定 read_only。

在主動伺服器上執行show master status並記錄二進位制日誌座標。

使用主動伺服器上的二進位制日誌座標在被動伺服器上執行select master_pos_wait()該語句將阻塞住,直到複製跟上主動伺服器。

在被動伺服器上關閉 read_only。

修改應用程式,使其寫入到新的主動伺服器中。

資料損壞或丟失的錯誤

mysql的複製並不能很好地從伺服器崩潰、掉電、磁碟損壞、記憶體或網路錯誤中恢復。遇到這些問題時幾乎可以肯定都需要從某個點開始重啟複製。

使用非事務型表

混合事務型表和非事務型表

不確定的語句

主庫和備庫使用不同的儲存引擎

備庫發生資料改變

不唯一的伺服器id

未定義的伺服器id

對未複製資料的依賴性

丟失的臨時表

innodb加鎖讀引起的鎖爭用

在主 - 主複製結構中寫入兩台主庫

過大的複製延遲

來自主庫過大的包

受限制的複製頻寬

mysql5.5提供了複製心跳,保證備庫一直於主庫相聯絡,避免悄無聲息地斷開連線。

高效能MySQL 第十章 複製(2)

1 複製拓撲 可以在任意個主庫和備庫之間建立複製,只有乙個限制 每乙個備庫只能有乙個主庫。基本原則 乙個mysql備庫例項只能有乙個主庫。每個備庫必須有乙個唯一的伺服器id。乙個主庫可以有多個備庫 或者相應的,乙個備庫可以有多個兄弟備庫 如果開啟了log sl e updates選項,乙個備庫可以把...

第十章 函式

使用def關鍵字 定義個數可變的位置形參 定義個數可變的關鍵字形參 定義預設值引數 定義個數可變的位置形參 deffun1 args 結果為乙個元組 print args fun1 10,20,30 10,20,30 定義個數可變的關鍵字形參 deffun2 args 結果為乙個字典 print a...

第十章 屬性

z屬性 本章也比較簡單稍作介紹 無參屬性就是我們常見的屬性 可以封裝屬性 以執行緒安全方式訪問 有參屬性就是c 中的所引器 匿名型別 如圖遇到如下 具體點就是 上面的注釋也已經講清楚了,定義的型別之後,構造例項,然後初始化屬性。現在詳細說下 編譯器接收到 上圖 先用var 定義乙個型別,但是不具體指...