2017-03-02 13 views
1

2つの異なるrdsインスタンス上の同じmysqlデータベース間で何百万行も移動する必要があります。私が考えたアプローチは次のとおりです。AWS RDSインスタンス間でデータを移動

- use data-pipeline to export data from the first instance to amazon-s3 
- use data-pipeline to import data from amazon-s3 to the second instance 

私の問題は、最後の最初のインスタンスのデータを削除する必要があることです。膨大な量のデータを扱っているので、バッチで行を削除するストアドプロシージャを作成することを考えました。それを実現する方法はありますか?それとも他の解決策がありますか?

もう1つのことは、テーブル全体またはデータベース全体ではなく、特定のテーブルから一部の行を移動するだけでよいということです。

答えて

0

1つのテーブル内のすべてのデータを削除する場合は、deleteステートメントの代わりにTRUNCATE TABLEを使用します。それはあなたに多くの時間を節約します。

2

AWS DMSサービスは、膨大な量のデータを移動する最も簡単な方法です。以下の手順に従ってください。

のパラメータグループを両方のRDSインスタンスで変更する必要があります。

'log_bin' = 'ON' 

'binlog_format' = 'ROW' 

'binlog_checksum' = 'NONE' 

'log_bin_use_v1_row_events' = 'ON' 
  1. 最初のRDSインスタンスからデータベースのスキーマのダンプを取ります。

  2. 2番目のRDSで復元します。

  3. ここで、DMSの設定を開始します。

  4. 最初にエンドポイントを設定します。

  5. 次に、ソース(最初のRDS)から デスティネーション(2番目のRDS)にデータをインポートするタスクを作成します。移行タイプで

  6. 、既存のデータをロードしたい場合は継続的な変化を選択 、その後 に移行、既存のデータたり、リアルタイムデータを同期しようとする場合に選択します。

  7. タスク設定で、T アゼットテーブルの準備モード= Do を選択します。

  8. チェックそれはどんな エラーの場合にデバッグに役立つでしょうチェックボックスをオンにロギングを有効に。

  9. タスクが開始されたら、 ダッシュボードでプロセスを確認できます。

+0

私は、テーブル全体またはデータベース全体ではなく、特定のテーブルからいくつかの行を移動するだけでよいということです。 –

0

データパイプラインは、定期的なプロセスのためのものです。一度の操作をしたいだけなら、たくさんの面倒なように思えます。まともなネットワークスループットを持つインスタンスを起動する方が簡単な場合は、データを保持するために十分な大きさのEBSボリュームを接続し、mysqldumpなどのコマンドラインツールを使用してデータを移動してください。

クリーンアップが行われる限り、テンポラリテーブル(または不要な行以外のすべて)に保存する行をコピーして名前を変更してオリジナルの一時テーブル。次に元のテーブルを削除します。

関連する問題