备份
为什么要备份?
有几个原因可以说明“备份”一个完整的 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 文件简单复制到备份专用的目录中就足够了。
注意:此备份是可选的!如果您拥有备份更好(这可能有助于故障排除)。但不是恢复系统必须的。
还原
此主题将在页面 还原 中介绍。
相关视频
(法语配音,但字幕可用,并使用法语审查)