備份

From Dolibarr ERP CRM Wiki
Jump to navigation Jump to search

Who.png 為什麼要備份?

有幾個原因可以說明「備份」一個完整的 Dolibarr 實例資料庫是非常重要的。例如:

  • 計劃進行升級,並希望在失敗時能回溯到以前的版本。
  • 想要把 Dolibarr 從一台伺服器遷移到另一台伺服器上。
  • 最重要的是,為了在發生災難(操作錯誤、磁碟崩潰、黑客入侵破壞...)時,能夠進行恢復以確保安全。

基於上述所有原因,建議定期對Dolibarr使用和保存的所有數據進行備份。

Who.png 備份什麼內容?

Dolibarr將其數據存儲在三個不同的位置。它們都必須在每次版本升級之前備份,以確保在出現問題或需要回溯到前版本時,能夠恢復數據。 以下是無損恢復所需備份的3種類型的數據。

A) 資料庫

該資料庫包含您從 Dolibarr 界面錄入的所有數據(除了下一章中介紹的附加/生成的文檔)。

必須在全局範圍(所有內容)內對其進行備份。建議定期備份資料庫。請參閱下面的注釋。

B) 文檔

與Dolibarr實例相關的所有文檔都保存在配置文件 dolibarr/htdocs/conf/conf.php$dolibarr_main_document_root 變量指定的目錄中。如果您在安裝時使用了默認選項,則為 dolibarrdir/documents 。此目錄必須完整備份,因為它包含上傳到應用程式的所有附件(如員工或產品照片)以及應用程式生成的所有文檔(如PDF)。

系統升級時,升級過程不應更改此目錄,但 web 伺服器可以隨時讀取和寫入此目錄,它可能會因錯誤操作或 bug 而被更改。為了確保備份所有附加的文件,並在它們被意外刪除或更改時能夠恢復它們,複製此目錄的所有內容即可。

注意:複製包含所有文檔的整個文件夾可能是一個繁重的過程,所以如果你不能經常這樣做,至少要備份你的資料庫(資料庫應該小得多,仍然可以恢復大部分數據,然後可以用來重新生成大部分文檔)。

C) 配置文件

雖然配置文件通常不會在升級過程中被更改,但升級前也最好對任何可能發生的情況進行防範。

配置文件名為 conf.php,位於 dolibar/htdocs/conf/ 目錄中。

請將此文件複製到備份的專用區域中。

注意:此備份是可選的,因為如果您知道資料庫密碼(以及任何其他非標準配置),就可以手動重建此文件,或者使用 Dolibarr 安裝嚮導重建此文件(此文件僅包含連接到安裝Dolibarr的資料庫和目錄的參數)。進行還原時,仍然可以通過重新安裝來重新生成此文件。

D) 變更後的代碼

最後,任何模塊的自定義開發,即:所有為了滿足特定需求而添加或修改的php文件(或其他文件)也必須被備份。在大多數情況下,這一點與您無關。

Who.png 什麼時候備份?

備份的頻率取決於您使用Dolibarr的強度和您可接受的數據丟失容忍度。頻率越高,在恢復崩潰/故障時丟失的數據越少。

此外,您可以選擇更頻繁地備份一個更關鍵的部分(如資料庫),而不定期地備份其他部分,因為它們更重要(如文檔)。

作為一個很好的起點,您的資料庫應該每月甚至每周備份一次,具體取決於您的使用情況;而文檔可以每月或每半年備份一次(具體取決於您的使用情況)。

此外,conf.php 文件只需要備份一次(因為它只會在更改主機時更改,而且無論如何都可以手動創建)。

Who.png 如何備份?

A) 資料庫

備份資料庫有四種方法:

使用 Dolibarr 系統備份工具

這是最簡單的備份方法,此外,你所有的備份都將存儲在伺服器上,並將列出,以便您可以隨時恢復到任何舊版本。

如果您使用的是最新版本的Dolibarr,請使用管理員帳戶登錄Dolibarr(只有管理員可以使用系統工具)。

前往菜單 主頁 -> 管理工具 -> 備份。

然後選擇備份的選項(您可以保留所有默認值)。

備選方案:默認方法 MySQL轉儲(mysqldump)需要您有權限訪問和運行伺服器上的二進位文件mysqldump,並使用消耗大量內存的默認設置。 如果您使用的是共享主機,並且內存不足(這通常會導致空白頁面),您可以嘗試從Dolibarr 16.0開始選擇導出選項「在低內存模式下轉儲」。 如果您的主機禁止使用mysqldump程序,您也可以嘗試另一種方法 MySQL Dump (php) 。此方法不能保證100%,因此請先自己嘗試,先備份,然後在本地非生產伺服器上還原,以檢查您的數據是否被正確備份。

警告:一些用戶報告說,當啟用壓縮時,某些主機的備份有時不完整(缺少一些表)。雖然無法重現此問題,但請記住通過查看.sql文件的內容來檢查備份的內容,該文件的結尾行應是如下樣式:

-- Dump completed on YYYY-MM-DD HH:MM:DD

或者,如果您想萬無一失,就不要啟用壓縮。

使用 mysqldump

如果您更喜歡手動模式,可以直接使用資料庫提供的備份工具。

在MySQL中,將資料庫備份到文件的命令是:

mysqldump -u user -pyourpass --result-file=mysqldump_databasename_version_date.sql databasename

其中:

  • user 是Dolibarr用於連接到資料庫的MySQL特權用戶,
  • yourpass 是MySQL用戶帳戶的密碼(注意,p和
    mysqldump -u user -pyourpass --result-file=mysqldump_databasename_version_date.sql databasename
    
    之間沒有空格),
  • databasename 是資料庫伺服器的名稱或IP。

這些信息(用戶、密碼和資料庫)可在配置文件 dolibarrdir/htdocs/conf/conf.php 中找到 。

生成的結果文件(稱為"轉儲文件")名為 mysqldump_databasename_version_date.sql ,其中

  • version 是 dolibarr 的版本號(如:3.7)。
  • date 可以被替換為一個日期,建議格式為YYYYMMDD,其中YYYY表示年份(例如,2011年),MM為月份編號(例如05),DD為在一個月中的哪一天(例如。18)。

使用上例的值,轉儲文件將被命名為 mysqldump_nombase_3.7_20110518.sql。


如果您想壓縮您的文件,則使用如下命令:

mysqldump databasename -h host -u user -pyourpass -l --single-transaction -K --add-drop-table=TRUE --tables -c -e --hex-blob --default-character-set=utf8 | bzip2 > mysqldump_databasename_version_date.bz2

以這種方式生成的轉儲文件將被直接壓縮為 bzip 格式。

示例:

在Linux上,要在每天1:30定期備份到文件 mysqldump_databasename_DD.sql.bz2 中,您可以將以下內容添加到cron文件中:

30 1 * * * mysqldump databasename -h host -u user -pyourpass -l --single-transaction -K --add-drop-table=TRUE --tables -c -e --hex-blob --default-character-set=utf8 | bzip2 > mysqldump_databasename_`date +%d`.sql.bz2

使用 phpMyAdmin

您也可以使用phpMyAdmin備份資料庫,但必須啟用一個選項,以便以後可以使用備份來恢復(如果您忘記這樣做,請閱讀下面關於foreign-key-checks的說明)。

在phpMyAdmin中,單擊導出選項卡,其次選擇Dolibarr資料庫或Dolibarr表(取決於您所在的窗口-資料庫視圖或表視圖),並選中禁用外鍵檢查,同時檢查結果是否為SQL格式,最後可以驗證導出。

注意:如果您使用默認選項,則無法使用備份來恢復。此外,即使有了這個選項,備份也永遠不會被 phpMyAdmin保護,而且經常是無法使用的。唯一安全的方法是使用 mysqldump(從 Dolibarr 或手動。請參閱前兩章)。

使用其它第三方工具

您也可以使用第三方的資料庫備份軟體,例如可以上傳到伺服器上的PHP腳本(如 db2SQL by Howard Yeend 或BigDump),或者使用資料庫設計器/工作檯軟體,它們通常提供遠程連接到資料庫的能力,並允許您執行完整備份(遠程管理資料庫功能)。


此轉儲文件是備份中最重要的元素。將其保存在某個安全位置,或將其委託給負責恢復環境的供應商。注意,這還不夠,備份文檔目錄(步驟B,請參閱下一章)也至關重要。

注意事項:Warning.png 在任何情況下,您的SQL轉儲文件必須在恢復之前禁用外鍵檢查,否則由於外鍵之間的衝突,SQL備份將無法恢復!

示例:在SQL文件的開頭和結尾添加 FOREIGN_KEY_CHECKS :

-- SQL Dump
-- Server version: 5.5.8

SET FOREIGN_KEY_CHECKS=0;
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

CREATE TABLE IF NOT EXISTS `llx_accountingaccount` (

INSERT INTO ...

CREATE TABLE ...

INSERT INTO ...

...

SET FOREIGN_KEY_CHECKS=1;


Warning.png Mysqldump(無論是通過命令行工具還是Dolibarr的備份功能)是備份數據的最安全方法,因為它是由與MySQL相同的開發人員開發的,因此始終是最新的。phpMyAdmin和第三方軟體可能會生成有效的SQL轉儲文件,但其使用的SQL可能已過時或缺少某些功能(取決於您選擇的選項)。

B) 文檔

只需將整個文檔目錄複製到專用備份磁碟/目錄就足夠了。

文檔目錄的位置:

  • 默認情況下,該目錄名為 dolibarr/documents
  • 可以通過 conf.php 文件中的變量 $dolibarr-main-data-root 找到完整路徑
  • 可以從菜單 主頁-管理工具-備份-步驟2 中找到此目錄的完整路徑信息


您需要為此目錄創建一個zip存檔。為此,有兩種解決方案:

使用Dolibarr備份工具(如果可用,建議使用)

如果您使用的是較新版本的Dolibarr,請使用管理員帳戶登錄 Dolibarr(只有管理員可以使用系統工具)。

接下來,前往菜單 主頁->管理工具->備份,然後單擊步驟2中的「生成備份」按鈕。

使用您常用的zip工具

前往文件管理器,轉到先前標識的目錄。右鍵單擊此目錄,然後從上下文菜單中選擇「壓縮」或「Zipper壓縮」或「創建zip包」或「創建存檔」或類似內容以生成zip文件。


此存檔文件是備份的第二個關鍵元素(與步驟a中的轉儲文件一起)。將其保存在某個位置,或將其委託給負責恢復環境的供應商。

好消息:如果您通過Dolibarr的系統工具及其步驟1(請參閱上一段)執行資料庫備份,則資料庫轉儲文件也將包含在此文件夾(dolibarr/documents/admin/backup)中,因此將一起被備份。

C) 配置文件

將 conf/conf.php 文件簡單複製到備份專用的目錄中就足夠了。

注意:此備份是可選的!如果您擁有備份更好(這可能有助於故障排除)。但不是恢復系統必須的。

Astuces.png 還原

此主題將在頁面 還原 中介紹。

相關視頻

(法語配音,但字幕可用,並使用法語審查)