2010-02-21 80 views
7

可以使用嗎?我在谷歌的研究,我發現了幾篇文章,但在德國和其他朗,因此不理解。使用Mercurial進行Mysql備份

如果我們可以通過Mercurial [在本地主機]從服務器獲得mysql備份到本地主機,那將是非常好的。也許與遠程Mysql連接等,你知道這樣做的任何方式?可能嗎?

謝謝!問候...

+0

我並不完全清楚這個問題。你想每隔一段時間將你的MySQL數據庫轉儲到Mercurial存儲庫中嗎? – 2010-02-21 18:57:07

+0

採取我的在線網站的MySQL備份,我總是登錄到服務器上的phpmyadmin,寫入登錄通行證等比選擇表,backup-saveas文件,bla bla ...很長的過程。 ps,我有不同的服務器,主機的網站。所以我只是在想,如果可以從服務器以不知不覺的方式從服務器獲取mysql備份,並轉換爲mercurial rep。 – 2010-02-21 19:01:26

+0

hg帶來什麼好處?你不只是創建一個備份時間表和時間戳文件。磁盤空間現在不是真正的限制因素。 – CurtainDog 2010-02-22 08:21:24

回答

5

假設你想存儲在一個版本控制庫定期備份有三個步驟:

  1. 設置要存儲數據庫快照的Mercurial庫。

    mkdir db-backup 
    hg init db-backup 
    
  2. 以文件格式獲取數據庫。最簡單的方法是通過mysqldump。只備份原始數據庫表文件將不起作用,因爲它們可能處於不一致的狀態。

    cd db-backup 
    mysqldump -u username -p -h dbhost databasename > databasename.sql 
    
  3. 提交數據庫轉儲到版本控制庫中,在你的情況下mercurial。

    hg commit -A -m "committing database snapshot as at `date`" 
    

最後2個步驟,你可能會想要自動化的東西。

+0

是的,但是這會給您帶來什麼樣的好處或信息? – PurplePilot 2010-02-24 12:42:21

+2

通過隨時間存儲數據的快照,您可以在不同的時間點比較和對比數據庫的狀態。 與存儲帶時間戳的備份文件相比,優勢包括由於有效存儲差異而使用較少的磁盤空間,可通過存儲庫克隆共享數據庫的完整歷史記錄。 – BenM 2010-02-24 17:18:41

2

我認爲這在多個層面上是毫無意義且危險的練習。但是,如果您考慮VCS系統的工作方式,它會在當前版本和以前版本(或基準版本)之間進行區分,然後如果您恢復到以前的版本(VCS)將文件寫入目錄。在第一個例子中,如果你使用數據庫做了這個,然後做了一個比較,你會看到什麼?通過數據庫管理系統過濾數據庫中數據的視圖,以便對原始文件進行區分是毫無意義的。在第二種情況下,如果您恢復了對工作數據庫的修訂版本,我認爲除了已刪除的數據庫外,您不會獲得太多的修訂。還會發生什麼意見,存儲過程,觸發器等?

我唯一認爲像這樣的事情是隻轉儲數據庫結構,沒有數據和VCS,所以我可以比較一下,看看做了哪些結構性改變。然而,加強團隊溝通解決了這個問題。

處理數據庫的方式是使用一套適當的備份程序和程序,不要忘記一套還原程序和程序以及一個測試機制,以確保您的備份都能正常工作。