news 2026/5/10 15:09:19

OpenProject服务的备份与恢复

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OpenProject服务的备份与恢复

1. 参考

  1. Backing up your OpenProject installation
  2. Restoring an OpenProject backup
  3. Linux安装OpenProject

2. 环境

  1. Docker compose部署的OpenProject服务
  2. 服务器192.168.7.28 作为主服务器,预装OpenProject服务,提供生产环境
  3. 服务器192.168.15.96 作为备份服务器,预装OpenProject服务,作为备份环境

3. 流程

  1. 服务器192.168.7.28 备份OpenProject服务的Postgresql数据库
  2. 服务器192.168.15.96使用rsync命令同步OpenProject服务的配置文件(docker-compose.yml)、存储文件(assets)、Postgresql数据库备份文件
  3. 服务器192.168.15.96恢复Postgresql数据库备份文件

4. 备份Postgresql数据库

dockerexecopenproject-db-1 pg_dump -U postgres -d openproject --insert>"/public/postgresql/pgsqlbackup/pgsql_openproject.sql"
  • openproject-db-1:posgresql的容器名称
  • -U postgres:连接数据库账号
  • -d openproject: 备份数据库名称
  • –insert 生成insert语句的备份文件
  • “/public/postgresql/pgsqlbackup/pgsql_openproject.sql” :备份文件存储路径

5. 恢复备份文件

5.1 服务器192.168.15.96同步备份文件

  • 同步主服务器192.168.7.28下OpenProject目录(排除postgresql数据库目录)
/bin/rsync -avz --exclude='/postgresql/'--delete-after root@192.168.7.28:873/public/application/openproject/ /public/application/openproject/
  • 同步主服务器192.168.7.28下OpenProject的数据库备份文件
/bin/rsync -avz --delete-after root@192.168.7.28:873/public/postgresql/pgsqlbackup/pgsql_openproject.sql /public/postgresql/pgsqlbackup/

5.2 服务器192.168.15.96恢复数据库备份

  • 定义环境变量
# 定义备份数据库名字DBNAME="openproject"# 定义postgresql容器名称CONTAINER_NAME="openproject-db-1"# 定义docker-compose.yml文件位置,停止openproject服务需要使用DOCKER_COMPOSE_YML="/public/application/openproject/docker-compose.yml"# 需要预先停止的docker compose 服务SERVICE_NAME="web worker"
  • 停止openproject项目的web worker,删除数据库
# 停止openproject项目的web worker,删除数据库docker compose -f${DOCKER_COMPOSE_YML}kill${SERVICE_NAME}\&&dockerexec${CONTAINER_NAME}psql -U postgres -c"DROP DATABASE IF EXISTS${DBNAME};"
  • 重建openproject数据库
# 重建openproject数据库dockerexec${CONTAINER_NAME}psql -U postgres -c"CREATE USER openproject;"dockerexec${CONTAINER_NAME}psql -U postgres -c"CREATE DATABASE openproject OWNER${DBNAME};"
  • 导入数据库备份,初始化数据库,重启web、work服务
# 导入数据库备份,初始化数据库,重启web、work服务dockerexec-i${CONTAINER_NAME}psql -U postgres -d${DBNAME}<"/public/postgresql/pgsqlbackup/pgsql_openproject.sql"\&&docker compose -f${DOCKER_COMPOSE_YML}start seeder\&&docker compose -f${DOCKER_COMPOSE_YML}start${SERVICE_NAME}

6. 检查服务状态

cd/public/application/openproject/\&&docker composeps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS openproject-autoheal-1 willfarrell/autoheal:1.2.0"/docker-entrypoint …"autoheal About an hour ago Up About an hour(healthy)openproject-cache-1 memcached"docker-entrypoint.s…"cache About an hour ago Up About an hour11211/tcp openproject-cron-1 openproject/openproject:16-slim"./docker/prod/entry…"cronAbout an hour ago Up About an hour8080/tcp openproject-db-1 postgres:17"docker-entrypoint.s…"db About an hour ago Up About an hour5432/tcp openproject-proxy-1 openproject/proxy"caddy run --config …"proxy About an hour ago Up About an hour443/tcp,2019/tcp,443/udp,0.0.0.0:8899->80/tcp,[::]:8899->80/tcp openproject-web-1 openproject/openproject:16-slim"./docker/prod/entry…"web About an hour ago Up About an hour(healthy)8080/tcp openproject-worker-1 openproject/openproject:16-slim"./docker/prod/entry…"worker About an hour ago Up About an hour8080/tcp

6. 补充说明

上述命令为简化示例,可以编写成Shell脚本定时执行,实现定时备份,自动恢复的功能

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 20:26:41

用于氧化石墨烯的多模态表征与激光还原图案化的共聚焦显微技术

氧化石墨烯&#xff08;GO&#xff09;是制备导电还原氧化石墨烯&#xff08;rGO&#xff09;的重要前驱体&#xff0c;在柔性电子、储能等领域应用广泛。激光还原因无掩模、局部精准的优势成为 GO 图案化关键技术&#xff0c;但传统方法难以实时观察还原过程&#xff0c;制约机…

作者头像 李华
网站建设 2026/5/9 11:30:51

3CTEST解析8/20μs冲击电流测试的多样性挑战与冲击电流发生器选型策略

一、冲击电流波简述冲击电流波主要分为两类&#xff1a;第一类为指数波&#xff0c;包括1/20μs、4/10μs、8/20μs、30/80μs、10/350μs、10/1000μs等。第二类为矩形方波&#xff0c;常见冲击方波的峰值持续时间在500μs至3200μs之间。冲击电流发生器是能够产生上述冲击电流…

作者头像 李华
网站建设 2026/5/4 13:40:12

Java计算机毕设之基于javaweb的在线图书借阅管理系统:图书查询、借阅信息、借阅历史(完整前后端代码+说明文档+LW,调试定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/5/5 2:48:23

排序-堆排序

一、堆排序 1.1、堆的基本概念 堆结构是用数组实现的完全二叉树完全二叉树中如果每棵子树的最大值都在顶部就是大根堆—升序完全二叉树中如果每棵子树的最小值都在顶部就是小根堆—降序优先级队列的实现就是堆结构 1.2、完全二叉树的数组表示 每层都是满的或者每层都是从左到右…

作者头像 李华