クラウド導入における最大の課題はデータベース移行です。多くの企業では、データベースのドメイン名や IP アドレスをアプリケーションクライアントにハードコーディングしています。その結果、オンプレミスデータベースから ApsaraDB RDS に移行するには、クライアントコードを修正し、アプリケーションをリファクタリングする必要があります。このプロセスは複雑でリスクが高いものです。
ソリューション
プライベートゾーンを使用して、以前のドメイン名と同一のデータベースドメイン名を作成できます。次に、CNAME レコードを使用して、ドメイン名を RDS によって割り当てられた内部エンドポイントにポイントできます。このアプローチにより、クラウドへのデータベース移行中にクライアントコードを修正する必要がなくなります。これにより、アプリケーションのリファクタリングの必要性が減り、移行リスクが低減されます。
準備
以下のリソースを準備します。
リソース
数量
値の例
オンプレミスデータベース接続ドメイン名
1
db.example.com
ECS サーバー
1 以上
1.1.XX.XX, 2.2.XX.XX
RDS データベースインスタンス
1
rm-2ze44q293vs56l9po*****.mysql.rds.aliyuncs.com
手順
1. RDS 内部エンドポイントを取得する
RDS 管理コンソールに移動します。左側のナビゲーションウィンドウで、[インスタンス] をクリックします。[インスタンス] ページで、[インスタンス ID/名前] 列のインスタンス ID をクリックします。
左側のナビゲーションウィンドウで、[データベース接続] を選択します。次に、[内部エンドポイント] の横にあるドメイン名をコピーします。

2. ビルトイン権威 ドメイン名と DNS レコードの追加
Alibaba Cloud DNS - PrivateZone に移動します。
[ビルトイン権威] ページで、[カスタムドメイン名] タブをクリックします。
[ゾーンの追加] ボタンをクリックします。[ビルトイン権威ゾーンの追加] ダイアログボックスで、ドメイン名を入力します。この例では、db.example.com を入力します。ドメインタイプについては、要件に基づいてタイプを選択します。推奨されるタイプは [ビルトイン権威] 加速ゾーン です。次に、[OK] をクリックします。
[カスタムドメイン名] ページで、ドメイン名
db.example.comを見つけます。[アクション] 列で、[DNS レコード] をクリックします。[DNS レコード] ページで、[レコードの追加] をクリックします。[レコードタイプ] を CNAME に、[ホストレコード] を [@] に、[解決リクエストソース] をデフォルトに設定します。[レコード値] には、データベースの内部エンドポイント (例:
rm-2ze44q293vs56l9po*****.mysql.rds.aliyuncs.com) を入力します。パラメーターを設定したら、[OK] をクリックします。[カスタムドメイン名] ページに戻ります。ドメイン名
db.example.comを見つけ、[アクション] 列の [スコープ設定] をクリックします。[ゾーン設定] ページで、[ゾーンスコープ] を設定します。データベースが配置されている VPC を関連付けます。
3. 結果のテスト
ドメイン名に関連付けられている VPC 内の ECS サーバーにログオンします。次のコマンドを実行して、DNS の解決をテストします。正常な応答は、下の図に示されています。応答が異常な場合は、DNS レコードが正しく設定されていることを確認してください。
dig db.example.com
RDS 接続のテスト: 同じ VPC 内の ECS サーバーにログオンします。次のコマンドを実行して、接続をテストします。正常な接続は、次の図に示す出力によって示されます。
mysql -utest_dns -ptest_dns -hdb.example.com -P3306 -Dtest_dns
一般的なエラー
ERROR 2003 (HY000): Can’t connect to MySQL server on ‘db.example.com’ (110)。データベースのホワイトリスト設定を確認し、ECS インスタンスの IP アドレスをホワイトリストに追加してください。
