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

在Ubuntu 16.10上将PostgreSQL从9.6升级到10.0,postgresql,ubuntu,Postgresql,Ubuntu,我的数据库超过600 GB,而我当前的卷只有1 TB,这可能限制了我的选择 我的配置文件如下: /etc/postgresql/9.6/main 我的数据库在这里: /mnt/1TB/postgresql/9.6/main 编辑- 这本指南对我有用。我唯一需要做的是手动下载libicu55并安装它,我必须授予postgres1777对我的/tmp/文件夹的权限。我还将数据文件夹保存到另一个驱动器,因此我必须使用以下命令: pg_upgradecluster -m upgrade 10 mai

我的数据库超过600 GB,而我当前的卷只有1 TB,这可能限制了我的选择

我的配置文件如下:

/etc/postgresql/9.6/main
我的数据库在这里:

/mnt/1TB/postgresql/9.6/main
编辑- 这本指南对我有用。我唯一需要做的是手动下载libicu55并安装它,我必须授予postgres1777对我的/tmp/文件夹的权限。我还将数据文件夹保存到另一个驱动器,因此我必须使用以下命令:

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

一个循序渐进的指南
  • 进行备份。确保没有更新您的数据库

     pg_dumpall > outputfile
    
  • 安装Postgres 10。请按照本页上的说明进行操作:

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

  • 运行
    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
    (因为这是在安装软件包时默认创建的)。这样做是为了让新的安装能够开箱即用,而无需首先创建集群,但是当您尝试升级
    9.6/main
    时,当
    10/main
    也存在时,它当然会发生冲突。建议使用
    pg\u dropcluster
    删除10个群集,然后使用
    pg\u upgradecluster
    升级

  • 停止10群集并将其丢弃:

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

     sudo systemctl stop postgresql 
    
  • 升级9.6群集:

     sudo pg_upgradecluster -m upgrade 9.6 main
    
      sudo pg_dropcluster 9.6 main --stop
    
  • 重新启动PostgreSQL

     sudo systemctl start postgresql
    
  • 运行
    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.6群集:

     sudo pg_upgradecluster -m upgrade 9.6 main
    
      sudo pg_dropcluster 9.6 main --stop
    
  • 关于
    pg\u升级集群的一些注意事项
    本指南适用于从9.5升级到10.1。当从旧版本升级时,考虑在步骤6中省略<代码> -M升级>代码>:

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

    基于:

    • 文件:
    • 要点1:
    • 要点2:
    更新
    本指南适用于从9.6升级到11,从10升级到11,以及从10升级到13。

    几乎是现成的。我在17点10分。虽然你可以把它放在.deb文件中,但它不起作用——Postgres只会在破坏LTS版本的情况下更新非LTS版本。因此,将Zesty放入该deb中,您就可以开始了。

    “逻辑复制是否可以在Ubuntu服务器上与Postgresql 10一起工作,并可以在Windows 10机器上与Postgresql 10一起工作”-是的。安装Postgres 10二进制文件后,您可以使用
    pg\u upgrade
    将当前数据目录迁移到Postgres 10。如果您使用
    --link
    选项,升级过程中只需要最少的额外空间。但是:首先,不要忘记备份。最好是另一个媒体(或机器)我的服务器是16.10,16.04的链接可以正常工作吗?deb yakkety pgdg mainpostgresql-10:dependens:libicu55(>=55.1-1~),但它不可安装是我使用yakkety代码名得到的错误。在.list文件中使用16.04的代码名安全吗?首先我必须更改为sudo-u postgres pg_dumpall>outfile这个命令在本指南中做得很好,从9.3到10.0运行得很好。谢谢刚刚在Ubuntu16.04上使用这个从9.6升级到10,太好了,谢谢你在第6步之后,我必须运行“sudo systemctl start postgresql”才能将新版本(10)上线。对于任何好奇的人来说,这些步骤对于postgresql9.6->11也非常有效。