備份
為什麼要備份?
有幾個原因可以說明「備份」一個完整的 Dolibarr 實例數據庫是非常重要的。例如:
- 計劃進行升級,並希望在失敗時能回溯到以前的版本。
- 想要把 Dolibarr 從一台服務器遷移到另一台服務器上。
- 最重要的是,為了在發生災難(操作錯誤、磁盤崩潰、黑客入侵破壞...)時,能夠進行恢復以確保安全。
基於上述所有原因,建議定期對Dolibarr使用和保存的所有數據進行備份。
備份什麼內容?
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文件(或其他文件)也必須被備份。在大多數情況下,這一點與您無關。
什麼時候備份?
備份的頻率取決於您使用Dolibarr的強度和您可接受的數據丟失容忍度。頻率越高,在恢復崩潰/故障時丟失的數據越少。
此外,您可以選擇更頻繁地備份一個更關鍵的部分(如數據庫),而不定期地備份其他部分,因為它們更重要(如文檔)。
作為一個很好的起點,您的數據庫應該每月甚至每周備份一次,具體取決於您的使用情況;而文檔可以每月或每半年備份一次(具體取決於您的使用情況)。
此外,conf.php 文件只需要備份一次(因為它只會在更改主機時更改,而且無論如何都可以手動創建)。
如何備份?
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,請參閱下一章)也至關重要。
注意事項: 在任何情況下,您的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;
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 文件簡單複製到備份專用的目錄中就足夠了。
注意:此備份是可選的!如果您擁有備份更好(這可能有助於故障排除)。但不是恢復系統必須的。
還原
此主題將在頁面 還原 中介紹。
相關視頻
(法語配音,但字幕可用,並使用法語審查)