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

标签 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

最佳答案

分步指南

  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(因为这是在包安装时默认创建的)。这样做是为了让全新安装开箱即用,无需先创建集群,但是当您尝试升级 9.6/main10/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
    

关于pg_upgradecluster的一些说明

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

sudo pg_upgradecluster 9.6 main

如果您有一个非常大的集群,您可以使用带有--link 选项的pg_upgradecluster,这样就可以进行升级。但是,这很危险——如果发生故障,您可能会丢失集群。除非必要,否则不要使用此选项,因为 -m upgrade 已经足够快了。

基于:

更新

本指南适用于从 9.6 升级到 11、从 10 升级到 11,以及从 10 升级到 13。

关于postgresql - 在 Ubuntu 16.10 上将 PostgreSQL 从 9.6 升级到 10.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46687645/

相关文章:

ruby-on-rails - 如何使用 rake db :dump:schema 转储多个 postgres 模式

sql - Postgres 警告 : pg_query(): Query failed: ERROR: operator does not exist: boolean = integer LINE 1

java - Spring Boot中json转换的正确方式和位置

regex - 使用 Regexp 提取和处理 GPU 温度信息

mysql - 在 ubuntu 上使用 ansible 安装 MySQL

ubuntu - 如何清理/var/lib/docker/vfs 目录

postgresql - 以 SAS XPORT (xpt) 格式从 postgreSQL 导出数据

sql - PostgreSQL:根据日期识别回访者 - 连接或窗口函数?

git - 全局 git 配置 Intellij

Ubuntu Unity 的状态图标 api?