
大規模なデータベースがある場合、別のサーバーへの移行は簡単ではありません。Linode のデータベースを Amazon RDS データベースに移動したいのですが、試してみたところpg_dump
成功pg_restore
しましたが、かなりの時間がかかります。
私の質問は、圧縮のような高速な方法があるか、またはLinodeのデータベースをAmazon RDSのデータベースと同期できるかということです。
つまり、CNAME を Amazon を参照するように変更するだけで、データベースはすでに同期されているので、引き続き動作しますか?
どのような提案でも助かります!
答え1
RDS ではなく別の実際のホストに移行する場合は、ストリーミング レプリケーションを使用して必要な操作を実行できます。
pg_basebackup
DBを新しいホストへrecovery.conf
現在のマスターを指すレプリカを起動します- レプリケーションをキャッチアップさせる
- レプリカの同期レプリケーションを有効にしてマスターをリロードします。
- ...次にマスターをシャットダウンし、レプリカをマスターとして再起動して実行します。
RDS では、基盤となるサーバーにアクセスできないため、この方法は機能しません。独自のストリーミング レプリケーションを使用したり、制御したりすることはできませんpg_basebackup
。したがって、RDS を使用している場合、唯一の現実的な選択肢は、ダンプして再ロードすることです。
理論上、Amazon はユーザーが RDS にないマスターの RDS レプリカを設定し、それをマスターに昇格できるようにすることができます。これは非常に良いアイデアで、DB を RDS にもっと簡単に移行できるようになります。ただし、執筆時点ではこの機能はなく、元のデータベースが互換性のあるオプション、同じメジャー バージョン、レプリカ サーバーと同じ CPU アーキテクチャでコンパイルされている場合にのみ機能するため、実行が複雑になる可能性があります。たとえば、x86 と x64 の間でレプリケートすることはできません。また、Amazon がニーズに合わせて PostgreSQL を自由に変更することもできなくなります。
これは逆の場合も同様です。移行することはできませんからRDS はストリーミング レプリケーションを使用します。そのため、RDS に大規模でビジーな DB がある場合、長時間のダウンタイムなしでそれを復旧するのは非常に困難になります。
率直に言って、すでに独自の DB を実行している場合、RDS の魅力はわかりません。コストが高く、データに対する制御のほとんどが失われます。(ただし、私は PostgreSQL サービス分野の別の会社で働いているため、私の意見はそれを念頭に置いて検討する必要があります)。
あなたかもしれないLondiste、Bucardo、Slony-I などのサードパーティのレプリケーション ソリューションを使用して、データベースを RDS にレプリケートできます。私はこれらのツールを RDS で試したことがありませんが、拡張機能のインストールやティッカー デーモンの実行などが必要なため、機能しないのではないかと思います。EC2 ノードで実行できるかもしれませんが、複雑で正しく実行するのは困難です。