# 致远协同管理软件

# 数据备份手册

北京致远互联软件股份有限公司

2022年03月

[前言]

本手册对协同管理系统的数据备份相关事宜进行说明。如对手册存在疑问,可与致远互联的客户服务人员联系。

# 说明

协同系统的数据主要分为:非结构化数据、结构化数据(数据库)。

协同系统提供的S1支持PostgreSQL、MySQL数据库的备份,其他数据的备份建议采用专业的备份软件或数据库自身的备份方法定期备份。

以下章节展开说明主要的非结构化数据目录,以及各数据库自身的备份方法。

# 非结构化数据备份与恢复

产品使用过程中,随业务开展将产生非结构化数据,如附件、索引文件等非结构化数据。具体有以下目录:

类别 默认路径 备注
协同附件 [协同产品目录]/base/upload 可以通过system用户调整
索引文件 [协同产品目录]/base/index 可以通过应用配置器调整
软加密文件 [协同产品目录]/base/license 软加密文件,不可调整位置
应用配置文件 [协同产品目录]/base/conf 参数配置文件,不可调整位置
Dee文件 [协同产品目录]/base/dee 不可调整位置
消息队列文件 [协同产品目录]/base/activemq 不可调整位置
电子邮件文件 [协同产品目录]/base/webmail 可以通过应用配置器调整
首页空间配置 [协同产品目录]/base/portal 不可调整位置
公共资源文件夹 [协同产品目录]/base/resource 可以通过应用配置器调整

非结构化的数据备份,建议采用专业的文件备份软件进行定期备份。

# 数据库备份与恢复

提醒:

  • 定期做数据库备份;

  • 数据备份包分离存储;

# PostgreSQL数据备份与恢复

# PostgreSQL数据库的备份

启动【协同产品目录】/pgsql9.2.5/bin/pgAdmin3.exe;

在需要备份的数据库上右键,选择备份,如下图所示:

备份完成后的截图如下:

数据库名字上右键---恢复,选择刚才备份的文件,即可恢复。

在恢复后的数据库中执行以下SQL:


DROP CAST IF EXISTS (SMALLINT AS BOOLEAN);
DROP CAST IF EXISTS (BOOLEAN AS SMALLINT);
CREATE CAST (SMALLINT AS BOOLEAN) WITH INOUT AS IMPLICIT;
CREATE CAST (BOOLEAN AS SMALLINT) WITH INOUT AS IMPLICIT;
DROP CAST IF EXISTS (VARCHAR AS SMALLINT);
DROP CAST IF EXISTS (SMALLINT AS VARCHAR);
CREATE CAST (VARCHAR AS SMALLINT) WITH INOUT AS IMPLICIT;
CREATE CAST (SMALLINT AS VARCHAR) WITH INOUT AS IMPLICIT;


# MySQL数据备份与恢复

MySQL数据的备份与恢复可手工采用mysqldump的方式备份/恢复,亦可采用S1的备份功能(仅针对集中部署的MySQL服务,请参考S1备份恢复章节)。

# MySQL数据库的备份

  • 说明

备份前,请先停止产品服务,以保证数据的完整性。

  • 备份命令示例

    mysqldump -uroot -p123456 -P3306 -h127.0.0.1 -E -R --single-transaction -B V50 >D:\backup\v50-2013.sql

  • 命令解释

-uroot:指定备份用户为root;

-p123456:指定用户的密码,其中123456为密码,需要输入正确的root用户密码;

-P3306:大写的字母P,指定mysql服务的端口,默认为3306;

-h127.0.0.1:指定mysql服务的地址,默认127.0.0.1;

-E:导出mysql的事件(events);

-R:导出mysql的存储过程及函数;

--single-transaction:此参数仅支持InnoDB引擎,此参数将锁表,为保持事务/数据一致性;

-B V50:指定导出的数据库名称,其中V50为数据库名称;

> D:\backup\v50-2013.sql:指定备份文件的物理路径及文件名;

  • 其他说明

执行mysqldump命令,Windows系统需进入mysql程序的bin目录,Linux系统需进入/usr/bin目录。

# MySQL数据库的恢复

  • 说明

还原前,请确认当前数据库中与备份数据库名称一致的数据不再使用,恢复将覆盖对应数据库中的数据。

  • 还原命令示例

mysql -uroot -p123456 -P3306 -h127.0.0.1 <D:\backup\v50-2013.sql

  • 命令解释

-uroot、-p123456、-P3306、-h127.0.0.1:指定用户名、密码、端口、IP地址;

< D:\backup\v50-2013.sql:指定恢复用sql文件的物理路径及文件名;

  • 其他说明

执行mysql命令,在Windows系统需要进入mysql程序的bin目录,Linux系统需进入/usr/bin目录。

# Oracle数据备份与恢复

Oracle数据的备份与恢复采用数据的导出导入方式。

# Oracle数据库备份恢复步骤概述

  • 第一步:选用exp、expdp中其中一种数据导出方法(推荐使用expdp方式),备份出原A8-V5服务数据;

  • 第二步:在目标数据库服务器上新建一个与原服务名称一样的表空间及用户;

  • 第三步:将备份出的A8-V5数据拷贝到目标数据库服务器上,对目标数据库选用imp、impdp中其中一种数据恢复方法,导入备份出来的A8-V5数据;

  • 第四步:在A8-V5应用服务器上,打开A8-V5安装目录中的ApacheJetspeed\conf,使用【A8-V5应用配置工具】修改A8-V5的数据库链接地址,指向新的数据库;

  • 第五步:重新启动A8-V5服务。

# imp/exp方式:

exp和imp是Oracle的工具程序,在成功安装了Oracle Client客户端后就可以执行imp或exp命令了。它们即可以在数据库客户端使用,也可以在数据库服务端使用。

# Windows数据库服务器:

在Windows中打开命令提示符,或者在开始->运行中输入cmd,回车后进入命令提示符窗口,在命令行中执行如下格式语句(如下两种语句在Linux下格式相同):

导入数据格式:imp <用户名>/<密码>@ <instance_sid> file=</路径/文件名>.dmp full=y
导出数据格式:exp <用户名>/<密码>@ <instance_sid> file=</路径/文件名>.dmp 

如下图所示为Windows下导出数据的格式:

注意:一定要记下A8-V5所使用的表空间名及用户名,方便在导入时创建表空间及用户。

在目标数据库服务器上创建好用户及表空间后,就可以使用imp命令导入备份出来的数据了。

如下图所示为Windows下导入数据的格式:

导入成功后,在命令行中会有如下提示:

# Linux数据库服务器:

在Linux下打开终端(应用程序->系统工具->终端),在命令行中先用su - oracle命令切换至Oracle用户下(Oracle用户有写入权限的路径,否则导出会报错的),如下图:

导出数据文件的目录最好选择Oracle用户的目录,可以在切换到Oracle用户后使用pwd命令查看Oracle用户的主目录,如下图:

在Oracle用户下,才能使用imp或exp命令。

如下图所示为Oracle用户下导出数据格式:

成功导出后会有如下提示:

在目标数据服务器上创建相同名称的数据库表空间及用户后,可以使用imp命令导入数据(导入前必须在目标数据库服务器上创建与原数据库相同名称的表空间及用户)。

下图为导入数据格式:

导入成功后会有如下提示:

# expdp/impdp方式:

EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。

# Windows数据库服务器:

在Windows命令提示符下,用SQLPLUS命令登录sys用户,如下图所示:

执行如下语句,创建导出/导入目录,并授权:

create or replace directory dumpdir as '导出/导入路径';
grant read, write on directory dumpdir to scott;
  • 注:Scott用户不一定是在每个数据库中都存在的,只有在安装数据库的时候选择安装示例才有,并改成public用户。

执行格式及结果如下图所示:

在Sqlplus状态下输入exit,退出Sqlplus,在命令行中执行如下格式语句,执行导出、导入:

导出实例:expdp <用户名>/<密码>@<instance_sid> DIRECTORY = dumpdir DUMPFILE=<文件名>.dmp

导入实例:impdp <用户名>/<密码>@<instance_sid> DIRECTORY= dumpdir DUMPFILE=<文件名>.dmp

导出语句的格式如下图:

导入语句格式如下图(导入前必须在目标数据库服务器上创建与原数据库相同名称的表空间及用户):

# Linux数据库服务器:

在Linux终端中输入su - oracle切换至oracle用户,用pwd命令查看oracle用户的目录,如下图:

用Sqlplus登录要导出数据的账户,如下图:

在Sqlplus命令行中执行如下语句,创建导出/导入目录,并授权:

create or replace directory dumpdir as '导出/导入路径';
grant read, write on directory dumpdir to scott;

执行结果如下图:

在Sqlplus中输入exit退出到oracle用户命令行中,在此命令行中执行如下格式导出、导入语句:

导出实例:expdp <用户名>/<密码>@<instance_sid> DIRECTORY = dumpdir DUMPFILE=<文件名>.dmp

导入实例:impdp <用户名>/<密码>@<instance_sid> DIRECTORY= dumpdir DUMPFILE=<文件名>.dmp

执行格式如下图所示:

导入格式(导入前必须在目标数据库服务器上创建与原数据库相同名称的表空间及用户):

# SQLServer数据备份与恢复

# 物理备份方式

  • 第一步:停止数据库服务

  • 第二步:备份数据库对应的数据文件和日志文件,查看数据库的属性可以看到数据文件和日志文件的位置.如下图:

# 逻辑备份方式

打开SSMS管理工具,右键需要备份的数据库,选择任务->备份:

1651914565374.png

点击添加选择备份文件路径和名称:

点击确定,弹出备份完成:

QQ截图20210914143359

目录中生成备份文件:

QQ截图20210914144029

# 数据恢复过程

创建同名数据库,右键选择属性:

在选项中,修改限制访问为单用户(SINGLE_USER):

右键数据库选择任务->还原->文件和文件组:

源设备选择实际备份文件路径点击确定:

左上方选项中勾选覆盖现有数据库点击确定开始还原:

弹出"成功还原了数据库"a8"",代表还原成功,点击确定:

编撰人:zhangshuang、yangtao