首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不丢失openproject数据的情况下将postgresql数据库从10升级到12

如何在不丢失openproject数据的情况下将postgresql数据库从10升级到12
EN

Stack Overflow用户
提问于 2020-02-26 16:22:49
回答 3查看 35.3K关注 0票数 28

我的OpenProject管理软件是用默认的PostgreSQL10安装的。目前postgresql是12,它有很多新功能。

我想在不丢失数据库中数据的情况下升级Postgres数据库。我的系统是ubuntu 18.04,托管了openproject。

我在网上搜索,没有找到一步一步升级postgresql的方法。

你能指导我安装新的数据库,所有的数据都应该在新的数据库中。谢谢你的帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-06-04 23:55:53

A)首先创建该数据库的所有数据库的备份(如果不需要备份,可以从B继续)

  1. 以postgres用户

身份登录

代码语言:javascript
复制
    sudo su postgres

  1. 为所有数据库中的所有数据创建备份.sql文件

代码语言:javascript
复制
    pg_dumpall > backup.sql

B)升级到PostgreSQL12

  1. 更新软件包和安装postgres 12

代码语言:javascript
复制
     sudo apt-get update
     sudo apt-get install postgresql-12 postgresql-server-dev-12

  1. 停止postgresql服务

代码语言:javascript
复制
     sudo systemctl stop postgresql.service

  1. 迁移data

代码语言:javascript
复制
     /usr/lib/postgresql/12/bin/pg_upgrade \
     --old-datadir=/var/lib/postgresql/10/main \
     --new-datadir=/var/lib/postgresql/12/main \
     --old-bindir=/usr/lib/postgresql/10/bin \
     --new-bindir=/usr/lib/postgresql/12/bin \
     --old-options '-c config_file=/etc/postgresql/10/main/postgresql.conf' \
     --new-options '-c config_file=/etc/postgresql/12/main/postgresql.conf'

  1. 切换到常规用户

代码语言:javascript
复制
     exit

  1. 交换新旧postgres版本的端口。

代码语言:javascript
复制
     sudo vim /etc/postgresql/12/main/postgresql.conf
     #change port to 5432
     sudo vim /etc/postgresql/10/main/postgresql.conf
     #change port to 5433

  1. 启动postgresql服务

代码语言:javascript
复制
     sudo systemctl start postgresql.service

  1. 以postgres用户

身份登录

代码语言:javascript
复制
     sudo su postgres

  1. 检查新的postgres版本

代码语言:javascript
复制
     psql -c "SELECT version();"

  1. 运行生成的新群集脚本

代码语言:javascript
复制
     ./analyze_new_cluster.sh

  1. 以普通(默认用户)用户身份返回并清理旧版本的混乱

代码语言:javascript
复制
     sudo apt-get remove postgresql-10 postgresql-server-dev-10
     #uninstalls postgres packages
     sudo rm -rf /etc/postgresql/10/
     #removes the old postgresql directory
     sudo su postgres
     #login as postgres user
     ./delete_old_cluster.sh
     #delete the old cluster data

  1. 恭喜!您的postgresql版本现已升级,如果B中一切正常,我们不必应用备份,因为我们已经将数据从旧版本迁移到新版本,备份只是为了以防出现问题。

注意:根据您的要求更改postgresql.conf和pg_hba.conf

PS:请随时评论您的问题、建议或您想要建议的任何其他修改

票数 85
EN

Stack Overflow用户

发布于 2020-04-14 21:11:54

  1. 备份数据库

psql --version sudo -u postgres psql pg_dumpall > alldbs.sql

(此命令将备份postgresql数据库中的所有数据库)

然后退出postgres用户,并:

终端内的

  1. 运行以下命令:

sudo systemctl stop postgres sudo apt-get安装postgresql-12 postgresql- -y -dev- 12 postgresql-contrib-12 libpq-dev postgresql-12-hypopg sudo pg_dropcluster 12 main --stop sudo pg_upgradecluster 10 main sudo pg_dropcluster 10 main --stop

  1. 重启postgresql服务:

sudo systemctl重启postgresql

  1. 登录postgres:

su - postgres

要检查版本,请使用

psql --版本

我已经完成了上面的步骤,我可以更新DBand还原所有数据。

票数 21
EN

Stack Overflow用户

发布于 2020-10-21 20:32:30

使用pg_upgrade升级Postgresql

第1步(查找源Postgresql服务器的区域设置语言和编码)

  • 以postgres用户
  • 身份登录到Postgresql数据库,执行查询the

第2步(停止现有/源Postgresql服务器)

使用$ sudo systemctl list-units | grep postgres

  • Stop $ sudo service postgresql-<source-version>.service stop

  • 查找正在运行的Postgresql服务

第-3步(安装目标Postgresql服务器)

  • Configure repos and install (谷歌提供的大量教程)

第-4步(更新区域设置语言和编码)

代码语言:javascript
复制
$ /usr/pgsql-<target-version>/bin/initdb -D /var/lib/pgsql/<target-version>/data --locale=<add-your-encoding>

第5步(检查从源到目标的升级是否存在任何潜在问题)

以postgres用户$sudo su postgres身份运行命令

代码语言:javascript
复制
  $  /usr/pgsql-<target-version>/bin/pg_upgrade --old-bindir /usr/pgsql-<source-version>/bin --new-bindir /usr/pgsql-<target-version>/bin --old-datadir /var/lib/pgsql/<source-version>/data --new-datadir /var/lib/pgsql/12/data --link --jobs=2 --check

如果可以,我们可以转到下一步,如果没有,在继续下一步之前修复问题。预期输出:Clusters are compatible

第-6步(使用链接选项将源升级到目标Postgresql版本)

与以postgres用户$sudo su postgres身份使用migration

  • Run命令相比,
  • 链接选项要快得多

代码语言:javascript
复制
    $ /usr/pgsql-<target-version>/bin/pg_upgrade --old-bindir /usr/pgsql-<source-version>/bin --new-bindir /usr/pgsql-<target-version>/bin --old-datadir /var/lib/pgsql/<source-version>/data --new-datadir /var/lib/pgsql/<target-version>/data --link

预期输出:Upgrade Complete

谢谢。尽情享受!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60409585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档