1. ホーム
  2. postgresql

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

2023-08-18 01:07:19

質問

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

    すでにクラスタが存在する main があります (これはパッケージのインストール時にデフォルトで作成されるため)。これは、新規インストール時に最初にクラスタを作成する必要がなく、すぐに動作するようにするためですが、もちろん、アップグレード時に 9.6/main をアップグレードしようとすると衝突します。 10/main も存在します。推奨される手順は、10クラスタを pg_dropcluster で削除し、アップグレードは 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 へのアップグレードに問題なく使用できます。古いバージョンからアップグレードする場合は -m upgrade を省略することを検討してください。

sudo pg_upgradecluster 9.6 main

本当に大きなクラスタでは pg_upgradecluster--link オプションで指定することで、インプレースでアップグレードが行われます。しかし、これは危険です - 障害が発生した場合にクラスタを失う可能性があります。必要なければこのオプションは使わないでください。 -m upgrade はすでに十分な速度を持っているからです。

に基づいています。

更新

このガイドは、9.6 から 11、10 から 11、および 10 から 13 へのアップグレードに問題なく使用できます。