2011-04-19 74 views
0

所以我正在研究在非常基本的主/從設置中設置MySQL複製。我們主要關注服務器故障而不是災難恢復,所以我主要關心故障轉移。我們所有的應用程序都是用PHP編寫的,所以我認爲在MySQL連接中設置一些東西相當簡單,所以如果主數據庫無法連接,我們將編寫一個文件並故障轉移到從服務器上,使用它。MySQL複製恢復的最佳實踐

我的問題是在什麼重新synching的最佳做法數據後,故障切換會,或者如果有一個更好的解決方案。

故障轉移本身應該是自動化的,但恢復過程可以是手動,我們正在尋找這樣做了廣域網。在此先感謝您的幫助

編輯

唸叨主/從與主/從架構後,我真的不任何更清晰上的設置是最適合我的方案。數據庫本身相當大(我目前沒有確切的大小)並主要表示事務/日誌數據(有一些小的身份驗證和重複檢查)。大部分行不會被改變,只會被添加到數據庫中。

我對複製服務器的主要關注/使用是故障轉移,因此,儘管主 - 主複製似乎是實現這些目的的理想選擇,但閱讀這些複製服務器聽起來好像是實際發生故障轉移一樣,並且記錄是添加到數據庫B中,恢復數據庫A比在主從關係中更加困難。

項目不從任何數據庫除了彙總/歸檔過程中刪除,我們可以只添加功能來驗證這兩個服務器在此期間的主/從設置可供選擇。在故障恢復發生的災難恢復情況下,15-20分鐘的恢復時間可能沒有問題,但不是每晚保持一致。希望這些幫助能夠澄清這種情況。

+2

這聽起來更像是你想要一種Master-Master類型的複製。 – 2011-04-19 19:44:43

+0

經過進一步的審查,它看起來更像是師父......我不知道這是一個選擇。我會進一步研究並根據需要進行編輯。謝謝埃德 – DaOgre 2011-04-19 20:08:25

回答

0

很多因素進來放在這裏。根據數據庫的大小,您可以創建一種算法來抓取已更改的內容(IE存儲移至故障轉移或MAX ID時的日期/時間),並僅使用該數據填充新數據庫。這會導致問題,並刪除項目。如果項目實際上被刪除,並且不僅僅在被刪除時設置了日期。

根據大小,您可以關閉站點進行維護15-30分鐘,執行SQL轉儲並截斷表並通過MySQL CLI界面重新導入數據,但這可能需要一些時間,具體取決於關於數據。

哪個更好,這一切都取決於你的需要。後者可能會被編寫到可以關閉站點進行維護的位置,然後將數據從FailOverServer提取到RegServer,然後實現一系列MySQL命令以截斷RegServer並在完成後從FailServer導入數據。重新打開站點。

我從來沒有做過,所以不能來,如果它是一個很好的路要走說話。但只要在FailOverServer上沒有修改表,它應該可以正常工作。

+0

感謝布拉德,我已經更新了原始問題的一些答案。你能否澄清你提到的維護不會是夜間正確的?如果我們觸發了故障轉移,只是在需要的基礎上?(我之前沒有設置複製) – DaOgre 2011-04-19 23:20:30

+0

是的,這將是一個需要的基礎。但是您需要不斷更新FailOver服務器才能進行故障轉移。我不確定最好的方法是什麼,因爲我之前沒有這樣做。當我有機會的時候,我會看看我是否無法做更多的挖掘同步。 – 2011-04-20 14:01:26