使用MySQL自身複製來恢複binlog

來源:互聯網
上載者:User

標籤:blog   http   io   ar   os   使用   sp   for   on   

如果需要恢複的二進位日誌較多,較複雜,強烈建議使用MySQL自身複製來恢複binlog,而不要使用mysqlbinlog。

目錄 [hide]

  • 1. 如何操作
    • 1.1 將binlog作為relay log來執行
    • 1.2 從專門構建的binlog server上拉binlog
  • 2. 其他需要注意的事項

在MySQL手冊中一直是推薦使用mysqlbinlog工具來實現指定時間點的資料恢複,事實上,這是一個經常"讓人鬱悶"的辦法。更好的辦法是,使用MySQL內部複製線程中的SQL Thread來做恢複。

這個idea來自Lazydba同學;在Google稍作搜尋,在Xaprb上Baron Schwartz也很早提到了使用類似的方法來恢複binlog,在那篇討論中, 還可以看到Jeremy Cole也提到:使用MySQL手冊中推薦的方法是困難重重的,而且mysqlbinlog這個辦法從邏輯上來說也是一個錯誤--因為這樣MySQL不得 不在兩個不同的地方實現一套相同的邏輯,最終難免會出錯。使用mysqlbinlog來恢複,你可能會需要以下“讓人鬱悶”的問題:

(*) Max_allowed_packet問題 (*) 惱人的Blob/Binary/text欄位問題 (*) 特殊字元的轉義問題 (*) 沒有"斷點恢複":執行出錯後,沒有足夠的報錯,也很難從失敗的地方繼續恢複
1. 如何操作

本文不打算寫一個step by step的文檔,只介紹主要的思路和粗略的操作步驟。

1.1 將binlog作為relay log來執行

優點:實施簡單;缺點:需要關閉一次資料庫(不確定不關閉資料庫行不行);

思路:直接將要恢複的binlog拷貝到relay log目錄,並修改slave-info相關的檔案,讓MySQL把binlog當做relay log來執行

簡單的操作步驟:

* 關閉當前執行個體 * 將binlog拷貝到對應的relay log目錄(datadir或者relay-log參數指定的目錄) * 開啟relay-log-info-file參數指定的relay-log.info檔案(預設是datadir目錄下的relay-log.info檔案),修改檔案前面兩行。 這兩行的意義分別是:當前執行的relay log檔案;當前執行到relay log檔案的位置(position) * 開啟relay-log-index檔案(由參數--relay-log-index,預設是資料目錄下的host_name-relay-bin.index)將需要恢複的binlog檔案全路徑列表存在該檔案中 * 啟動資料庫,並start slave io_thread
1.2 從專門構建的binlog server上拉binlog

這個方法,無需啟動資料庫,但是需要重新啟動一個全新的執行個體,將binlog拷貝到該執行個體中,這裡稱這個執行個體為binlog server。然後把需要恢複的執行個體複製指向這個binlog server。這裡需要做的是,將日誌拷貝到binlog server對應目錄下,並修改對應的master-info檔案,使得備庫能夠dump到這些binlog檔案。

2. 其他需要注意的事項

* 設定檔中建議加上skip-slave-start,以免在不需要時候slave線程自己開始執行了

* start slave的時候,可以通過start slave until的方式,控制slave執行到的位點

* slave執行的其實位點,則通過relay-log.info或者change master to來指定

Good Luck.

http://www.orczhou.com/index.php/2013/11/use-mysql-replication-to-recove-binlog/

使用MySQL自身複製來恢複binlog

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.