Open Project 系列3 --- 备份与还原

一、概要

1. 承上启下

Open Project 系列

2. 简介

Open Project提供了两种备份方式,一种是Admin用户通过页面备份,另一种是通过命令备份。本文选择通过命令备份的方式。

3. 备份内容

a. 存储在Postgres中的数据;

b. 配置文件;

c. 上传的文件(附件);

d. Git/SVN仓库(如果有的话)。

二、页面备份

1. 备份页面

(1) 使用Admin账户登录后点击右上角头像,进入"Administration->Backup"页面:

(2) 生成备份Token

(3) 请求备份

(4) 备份后会自动下载

三、命令备份

1. 备份前

(1) 停止Open Project服务

sudo systemctl stop openproject

2. 备份

sudo openproject run backup

3. 备份后

(1) 备份目录

/var/db/openproject/backup

(2) 注意

为确保备份文件的安全性,强烈建议将该文件备份至其他主机。

四、还原

1. 还原前

(1) 停止Open Project服务

sudo systemctl stop openproject

2. 还原

(1) 还原附件文件

sudo tar xzf /var/db/openproject/backup/attachments-20191119210038.tar.gz -C /var/db/openproject/files

(2) 还原配置文件

sudo tar xzf /var/db/openproject/backup/conf-20191119210038.tar.gz -C /etc/openproject

(3) 解压仓库文件

sudo tar xzf /var/db/openproject/backup/git-repositories-20191119210038.tar.gz -C /var/db/openproject/git
sudo tar xzf /var/db/openproject/backup/svn-repositories-20191119210038.tar.gz -C /var/db/openproject/svn

(4) 数据库还原

a. 首先查询Open Project实例对应的数据库链接字符串

sudo openproject config:get DATABASE_URL

该命令执行的结果:

postgres://<dbusername>:<dbpassword>@<dbhost>:<dbport>/<dbname>

b. 数据库还原

sudo pg_restore --clean --if-exists --dbname $(sudo openproject config:get DATABASE_URL) postgresql-dump-20200804094017.pgdump

参数"--clean --if-exists" 将清空数据库。

c. 异常1

pg_restore会尝试将备份库中的用户名设置为新库的owner,如果目标数据库与备份库的用户名不同,则会报错,此时需要添加"--no-owner"参数来避免报错。

d. 异常2

如果恢复数据库时,出现错误提示"Error while PROCESSING TOC […] cannot drop constraint",则需要删除并重建目标数据库:

sudo su - postgres -c psql
DROP DATABASE openproject; CREATE DATABASE openproject OWNER openproject;

3. 还原后

(1) 重启

sudo systemctl restart openproject

五、参考

1. 官方

(1) 备份

https://www.openproject.org/docs/system-admin-guide/backup/

https://www.openproject.org/docs/installation-and-operations/operation/backing-up/

(2) 还原

https://www.openproject.org/docs/installation-and-operations/operation/restoring/

posted @ 2023-06-12 23:18  白马黑衣  阅读(254)  评论(0编辑  收藏  举报