アップグレードの問題:重複キーによるアップグレード失敗、スナップショット復元失敗

昨日、似たような事例に対処しました(Help! Upgrade led to complete fail - #8 by Judith を参照)。大まかな手順としては、以下のような作業が必要だと考えられます。

  • postgres_data_old を postgres_data に名前を戻す
  • 古いコンテナを再起動する
  • 重複しているユーザー(大文字小文字の違いが原因で重複している場合も含む)の名前を変更して、破損したインデックスの問題を修正する
  • ユーザーテーブルのインデックスを再構築し、すべてが正常に修正されていることを確認する
  • PostgreSQL 13 アップデート で説明されている通り、PostgreSQL 12 のテンプレートに変更する
  • リビルドしてアップグレードする
  • 動作確認ができたら、テンプレートを元に戻してアップグレードを完了させる
  • ユーザー名だけでなく、username_lower も更新する必要がある点に注意

昨日修正した事例では、2020 年 2 月まで遡る重複ユーザー名が存在していました。そのため、古いデータベースを復元して修正するのはお勧めしません。

この問題を修正するには、Postgres コマンドラインを用いたレコードの修正方法、データベースの再構築、および PostgreSQL 13 アップグレードにおける複雑ながら詳細に文書化されている問題への対処法を理解する必要があります。

もし 500 ドルの予算がある場合は、私までご連絡ください。連絡先はプロフィールに記載しています。