在Ubuntu 16.10上将PostgreSQL从9.6升级到10.0

时间:2017-10-11 11:58:17

标签: postgresql ubuntu

我的数据库超过600 GB,我当前的数量只有1 TB,所以这可能会限制我的选择。

我的配置文件在这里:

/etc/postgresql/9.6/main

我的数据库在这里:

/mnt/1TB/postgresql/9.6/main

编辑 - 本指南适合我。我需要做的唯一的补充是手动下载libicu55并安装它,我必须为我的/ tmp /文件夹授予postgres 1777权限。我还将数据文件夹保存到不同的驱动器,因此我不得不使用命令:

pg_upgradecluster -m upgrade 10 main /mnt/1TB/postgresql/10

https://gist.github.com/delameko/bd3aa2a54a15c50c723f0eef8f583a44

2 个答案:

答案 0 :(得分:166)

循序渐进指南

  1. 进行备份。确保您的数据库没有更新。

    pg_dumpall > outputfile
    
  2. 安装Postgres 10 。按照此页面上的说明操作:https://www.postgresql.org/download/linux/ubuntu/

    然后运行sudo apt-get install postgresql-10。较新版本将与早期版本并排安装。

  3. 运行pg_lsclusters

    Ver Cluster Port Status Owner    Data directory               Log file
    9.6 main    5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log
    10  main    5433 online postgres /var/lib/postgresql/10/main  /var/log/postgresql/postgresql-10-main.log
    

    已经存在10个集群main(因为这是默认情况下在程序包安装时创建的)。这样做是为了使全新安装能够开箱即用而无需首先创建集群,但当{I}}存在9.6/main时,当您尝试升级10/main时,它会发生冲突。建议的过程是使用pg_dropcluster删除10个群集,然后使用pg_upgradecluster进行升级。

  4. 停止10个群集并将其删除:

    sudo pg_dropcluster 10 main --stop
    
  5. 停止写入数据库的所有进程和服务。停止数据库:

    sudo systemctl stop postgresql 
    
  6. 升级9.6群集:

    sudo pg_upgradecluster -m upgrade 9.6 main
    
  7. 再次启动PostgreSQL

    sudo systemctl start postgresql
    
  8. 运行pg_lsclusters。您的9.6群集现在应该“关闭”,并且10群集应该在5432处于联机状态:

    Ver Cluster Port Status Owner    Data directory               Log file
    9.6 main    5433 down   postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log
    10  main    5432 online postgres /var/lib/postgresql/10/main  /var/log/postgresql/postgresql-10-main.log
    
  9. 首先,检查一切正常。之后,删除9.6群集:

     sudo pg_dropcluster 9.6 main --stop
    
  10. 关于pg_upgradecluster

    的一些注释

    本指南适用于从9.5升级到10.1。从旧版本升级时,请考虑在步骤#6中省略-m upgrade

    sudo pg_upgradecluster 9.6 main
    

    如果您拥有一个非常大的群集,则可以使用pg_upgradecluster --link选项,以便升级到位。但是,这很危险 - 如果发生故障,您可能会丢失群集。如果没有必要,请不要使用此选项,因为-m upgrade已经足够快了。

    基于:

    更新

    本指南适用于从9.6升级到11和从10升级到11。

答案 1 :(得分:0)

几乎开箱即用。我在17.10很巧妙。虽然可以将它放在.deb文件中,但它不起作用 - 如果它们破坏了LTS版本,Postgres只会更新非LTS版本。所以把Zesty放到那个deb中,你很高兴。