我的OpenProject管理软件与默认的postgresql 10一起安装。 当前postgresql数据库为12,它具有许多新功能。
我想升级我的Postgres数据库而不丢失数据库中的数据。 我的系统是ubuntu 18.04,并托管了openproject。
我搜索了Internet,但找不到逐步升级Postgresql的方法。
能否请您指导我安装新的数据库,并且所有数据都应位于新的数据库中。 谢谢您的帮助。
答案 0 :(得分:27)
A)首先为此创建所有数据库的备份(如果不需要备份,可以从B继续)
sudo su postgres
pg_dumpall > backup.sql
B)升级到PostgreSQL12
sudo apt-get update
sudo apt-get install postgresql-12 postgresql-server-dev-12
sudo systemctl stop postgresql.service
/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'
exit
sudo vim /etc/postgresql/12/main/postgresql.conf
#change port to 5432
sudo vim /etc/postgresql/10/main/postgresql.conf
#change port to 5433
sudo systemctl start postgresql.service
sudo su postgres
psql -c "SELECT version();"
./analyze_new_cluster.sh
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
注意:根据您的要求更改postgresql.conf和pg_hba.conf
PS :随时评论您的问题,建议或您想提出的任何其他修改
答案 1 :(得分:7)
psql --version sudo -u postgres psql pg_dumpall > alldbs.sql
(此命令将从PostgreSQL数据库中备份所有数据库)然后退出postgres用户,并:
在终端内运行以下命令:
sudo systemctl stop postgres
sudo apt-get install -y postgresql-12 postgresql-server-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
重新启动PostgreSQL服务:
sudo systemctl restart postgresql
登录到postgres:
su - postgres
检查版本:
psql --version
我已经完成上述步骤,可以更新数据库并恢复所有数据。
答案 2 :(得分:0)
SHOW LC_COLLATE;
$ sudo systemctl list-units | grep postgres
查找正在运行的Postgresql服务$ sudo service postgresql-<source-version>.service stop
$ /usr/pgsql-<target-version>/bin/initdb -D /var/lib/pgsql/<target-version>/data --locale=<add-your-encoding>
$sudo su postgres
$ /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
如果可以,我们可以继续进行下一步;如果无法解决问题,请继续进行下一步 预期的输出:集群兼容
$sudo su postgres
$ /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
预期输出:升级完成
谢谢。 享受!!!