ヤマムギ

growing hard days.

*

AWS Database Migration Service(DMS)チュートリアル

   

公式ユーザーガイドのAWS Database Migration Service の開始方法を参考に実施しました。

このチュートリアルでは、オンプレミスからではなく、RDS for MySQLから、RDS for PostgreSQLへのデータ移行を試します。

VPC

バージニア北部で元々作っていたDemo用のVPCを使用しました。

セキュリティグループ

DMS用とソースデータベース、ターゲットデータベース、設定クライアント用に4つ作成しました。

  • DBConfiguration
    インバウンドはなしでデフォルトのままです。

  • DMS
    インバウンドはなしでデフォルトのままです。

  • MySQL
    3306ポートに、DBConfiguration、DMS、マイIPからのインバウンドを許可。

  • PostgreSQL
    5432ポートに、DBConfiguration、DMS、マイIPからのインバウンドを許可。

RDSパラメータグループ

mysql8.0

checksumをなしにするということでしたので、checksumが含まれるパラメータの値をNONEか0にしました。

binlog_formatはROWにしました。

postgres12

session_replication_roleをreplicaにしました。

RDS for MySQL(ソースデータベース)の作成

手順どおり、パブリックサブネットグループでパブリックアクセスを有効にしたMySQLインスタンスを作成しました。
開発検証用を選択してデフォルトのままで、インスタンスクラスをt3.microにしました。
パラメータグループとセキュリティグループは事前に作成したものを設定しました。
初期データベースは一応作成しましたが、要らなかったかもしれません。

RDS for PostgreSQL(ターゲットデータベース)の作成

手順どおり、パブリックサブネットグループでパブリックアクセスを有効にしたPostgreSQLインスタンスを作成しました。
開発検証用を選択してデフォルトのままで、インスタンスクラスをt3.microにしました。
パラメータグループとセキュリティグループは事前に作成したものを設定しました。
初期データベースは一応作成しました。

初期データベース作成用EC2インスタンス

t3a.nanoでスポットインスタンスで作成しました。
起動後、セッションマネージャで接続しました。

事前作業用にGitとMySQLをインストールしてSQLを実行しました。

事後のレプリケーション確認用にPSSQLをインストールしました。

pgdg.repo

MySQL JDBCドライバを用意する

https://dev.mysql.com/downloads/connector/j/でダウンロードしました。

Platform Independentを選択しました。

ログインはせずに「No thanks, just start my download.」を選択してZipをダウンロードして、任意のディレクトリに展開しました。

PostgreSQLドライバを用意する

https://jdbc.postgresql.org/download.htmlからCurrent Versionをダウンロードしました。

SCTを使用してスキーマを移行する

macOSにAWS Schema Conversion ToolをインストールでインストールしておいたSCTを使用しました。

OLTP
Source database: MySQL
Target database: RDS for PostgreSQL

[Connect to MySQL]を押下して、サーバー情報を設定しました。

Server name: RDS for MySQLのエンドポイント
Server port: 3306
User name: admin
Password: changeit
MySQL driver path: 事前にダウンロードして展開していたjarを選択しました。

[Test connection]が成功しました。
[OK]を押下して接続しました。

[Connect to Amazon RDS for PostgreSQL]を押下して、サーバー情報を設定しました。

Server name: RDS for PostgreSQLのエンドポイント
Server port: 5432
Database: dms_sample
User name: postgres
Password: changeit
PostgreSQL driver path: 事前にダウンロードして展開していたjarを選択しました。

[Test connection]が成功しました。
[OK]を押下して接続しました。

左のソースのMySQLデータベースを選択して、変換対象のテーブル、ビュー、ファンクションを選択して右クリック-[Convert schema]を選択しました。

右のペインに変換対象のスキーマが反映されるので、右クリック-[Apply to database]でデータベースに反映しました。

画面全体です。

作業用EC2からスキーマが作成されたことを確認しました。

DMSインスタンスの作成

DMSインスタンスを作成します。

インスタンスクラスはdms.t3.microを選択しました。
他はデフォルトです。

検証なのでシングルAZにしました。
セキュリティグループは事前に作成しているものを選択しました。
今回は必要なさそうですが、パブリックアクセス可能にしておきました。

作成しました。

DMSソースエンドポイントの作成

ソースエンドポイントを選択して、今回はRDSなので[RDS DBインスタンスの作成]をチェックして、MySQLインスタンスを選択しました。

エンドポイントへのデータベースアクセスでは、手動設定にしました。

[テストの実行]ボタンを押下してみて、successfulになりました。
セキュリティグループの設定も大丈夫だったみたいです。

[エンドポイントの作成]ボタンを押下しました。

DMSターゲットエンドポイントの作成

次はターゲットエンドポイントを作成しました。

同じように設定しました。

テストもOKでした。

作成しました。

ソースとターゲットが作成できました。

データベース移行タスクの作成

タスクの設定では、レプリケーションインスタンス、ソースデータベース、ターゲットデータベースを選択しました。
移行タイプは「既存のデータを移行して、継続的な変更をレプリケートする」を選択しました。

ターゲットテーブル作成モードで、「何もしない」に変更しました。
他はデフォルトでした。

[新しい選択ルールの追加]で[スキーマの入力]を選択して、[スキーマ名]にdms_sampleを入力しました。

他はデフォルトで作成しました。

移行の確認

移行タスクを作成すると移行が開始されました。

移行が完了しました。

テーブル統計で確認しました。
きれいに移行されたように見えます。

作業用EC2インスタンスで確認します。

first_nameがTestのレコードはないことを確認しました。
チュートリアルの手順どおりにMySQLにレコードを追加して確認します。

MySQLテーブルに接続してレコードを挿入しました。

マネジメントコンソールのテーブル統計で見てみると、レコードが挿入対象になっていることがわかりました。

PostgreSQLを確認すると追加したレコードが挿入されていました。


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - AWS , ,

ad

ad

  関連記事

Amazon VPCにオンプレミス検証環境想定プライベートDNSサーバー(BIND)をEC2で起動する

オンプレミス想定の検証で使うために、Amazon VPCにプライベート向けDNS …

特定AWSアカウント特定リージョンのSQSキューを削除するLambda(Python)

やりたいこと 特定アカウント内特定リージョン内のSQSキューを全部削除したいです …

Mountpoint for Amazon S3を試しました

このブログでは、画像などの配信にS3を使用しています。 WordPressのプラ …

CloudFrontからのバーチャルホストなサイトのテストってどうしてます?

このブログの構成です。 AWSで構築しています。 4つのサイトを1つのEC2で配 …

AWS Transit GatewayのVPN接続

上記のような構成で、オンプレミス側は東京リージョンのVPCでVyOSを起動して接 …

Going Serverless with AWS(AWS Summit Tokyo 2017)を聞いてきました

AWS Summit Tokyo 2017でセッション「Going Server …

EC2 Auto Recovery機能を設定しておいた

以前EC2インスタンスのリタイア対象になったこともあり、というより、やっておいて …

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト – プロフェッショナル」を執筆しました

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテク …

名前解決してセッションマネージャが使えるようにVyOSのhost_name.pyを編集しました

発生したエラー セッションマネージャからこんなエラーが出力されました。 [cra …

WordPressの年ごとのブログ投稿数を調べるSQL

毎年年末に使いそうなのでメモです。 [crayon-6649bd9dbd7663 …