こんにちは、RoomClipでエンジニアをしている谷(naotee)です。
RedShiftはwindow関数が使えますし、大量のレコードがあったとしても、集計や分析系のクエリが早く返ってきて便利ですよね。 また、RedShiftに突っ込んだログ系のデータのidの詳細を持っているのがMySQLなんですが、JOINさせる際にできる限り新しいデータで見れる方が良いですよね。 ということで、今回AWS DMSのOngoind Replicationを利用し、MySQL(RDS)とRedshiftをリアルタイム同期させてみました。
「AWS Database Migration Service は、広く普及しているほとんどの商用データベースとオープンソースデータベース間のデータ移行にご利用いただけます。」
AWS Database Migration Service(データベースを簡単かつ安全に AWS へ移行) | AWS
上記3つは全て同じリージョンである必要があります。 弊社のMySQL(RDS)は東京リージョンに、RedShiftはコスト対策のためバージニアにありましたので、 MySQL(RDS)のクロスリージョンレプリカを利用してバージニアに同期元DBを設置し、バージニアでDMSを設定しました。
同期(タスク)の種類は3つあります。
今回はRedShiftに0から同期するので「migrate existing data and replicate ongoing changes(初期転送後、差分転送開始)」をタスクで指定します。