web-dev-qa-db-ja.com

Ubuntu 16.10でPostgreSQLを9.6から10.0にアップグレードします

データベースは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

50
trench

ステップバイステップガイド

  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/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
    

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にアップグレードする場合に正常に機能します。

191
Max Malysh

箱から出してほとんど働いた。私は17.10上手です。 canを.debファイルに入れても機能しません。Postgresは、LTSリリースを破る場合にのみ非LTSリリースを更新します。だからZestyをそのdebに入れて、あなたは行ってもいい。

0
datakid