备份

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 还原

此主题将在页面 还原 中介绍。

相关视频

(法语配音,但字幕可用,并使用法语审查)