一、概要
1. 承上启下
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/
标签:Project,tar,备份,sudo,db,---,openproject,var,Open From: https://www.cnblogs.com/eagle6688/p/17476092.html