0

postgres 8.x から 9.x にアップグレードし、 --link オプションを指定して pg_upgrade を実行した後、8.x に「ダウングレード」した場合 (つまり、pg-9 デーモンを停止し、 pg-8 デーモン)?

特に、pg-9 でテーブルにデータを挿入したとします。pg-8 にダウングレードした後、そのデータを見つけることができますか? そのデータを挿入したテーブルがpg_upgradeの時点ですでに存在していたかどうかに依存しますか? そして (ひねくれ者と呼んでください) pg-9 に再アップグレードし、pg-8 に再ダウングレードするなどを何度も繰り返したとします。保証はありますか、それともチャンスをつかんでいますか?

私はいくつかの小規模なテストを行いました。私が見つけたのは、最初のダウングレードの後、pg_upgrade を実行する前のデータにほぼ戻っていることです。大まかに、正確ではありません。そして、アップグレードとダウングレードのサイクルごとに、より「大雑把」になっているようです。

これで、「大まかに」の部分を受け入れることができます。ただし、私が本当に嫌いなのは、再再アップグレード/ダウングレードを何度も繰り返した後、取り返しのつかないほど破損した DB になってしまうことです。それは心配すべきですか?

最後に、pg_dump については知っていますが、時間とストレージの理由から、可能であれば避けたいと思います。

4

1 に答える 1

2

不可逆的なステップであると考える必要pg_upgradeがあります。変更を元に戻したい場合は、使用しないでください。古いデータベースがそのまま残り、変更されません。ユーザーが古いデータベースに戻ると、アップグレード後に行った変更が失われます。--link

ユーザーが使用できるバックアップおよび復元ツールを実際に提供する必要があります。これにより、ユーザーはバックアップを作成し、新しいバージョンにアップグレードし、ダウングレードに不満がある場合はバックアップを復元できます。おまけとして、バックアップ ツールを下位互換性のあるバックアップを作成できるようにしてください。そうすれば、$newversion からのバックアップを $oldversion に復元できます。

于 2013-04-26T02:24:29.990 に答える