ApsaraDB RDSインスタンスがオーバーロードされている場合、RDSインスタンスから別のRDSインスタンスにデータベースまたはテーブルを垂直に分割できます。 このトピックでは、デュアル書き込みソリューションと単純分割ソリューションを使用して、RDSインスタンスで垂直分割を実行する方法について説明します。
背景情報
RDSインスタンスにデータベースAとデータベースBが含まれているとします。ビジネスの成長によりRDSインスタンスが最大のパフォーマンスに達し、RDSインスタンスのワークロードをオフロードする場合は、データベースBを別のRDSインスタンスに垂直に分割できます。 詳細については、このトピックの「デュアル書き込みソリューション」および「単純分割ソリューション」のセクションを参照してください。
使用上の注意
RDSインスタンスのデータベースまたはテーブルを分割する別のRDSインスタンスを作成する必要があります。 ターゲットRDSインスタンスとソースRDSインスタンスのデータベースアカウントに必要な権限が同じであることを確認します。 ターゲットRDSインスタンスでサポートされているデータベースエンジンの詳細については、「データ移行シナリオの概要」をご参照ください。
説明ソースデータベースとターゲットデータベースのデータベースアカウントを作成し、データ移行に必要なアクセス許可をデータベースアカウントに付与することをお勧めします。 これにより、セッションの区別が容易になり、データセキュリティが向上します。
ターゲットRDSインスタンスのエンドポイントをアプリケーションに追加する必要があります。
単純分割ソリューションを使用する場合は、サービスを短期間中断し、分割するデータベースへのデータの書き込みを一時的に停止する必要があります。 アプリケーションの変更、リリース、および垂直分割中のRDSインスタンス間の切り替えによる悪影響を軽減するために、オフピーク時に単純分割ソリューションを使用することを推奨します。 詳細については、このトピックの「単純分割ソリューション」セクションを参照してください。
デュアル書き込みソリューション
デュアル書き込みソリューションは、段階的な切り替えを実装し、サービスへの悪影響を軽減します。 デュアルライトソリューションを使用する前に、アプリケーションを変更し、アプリケーションデータがソースRDSインスタンスとターゲットRDSインスタンスのデータベースBに書き込まれることを確認する必要があります。
ソースRDSインスタンスとターゲットRDSインスタンスのデータ移行タスクを設定します。 たとえば、移行元RDSインスタンスのデータベースBは、移行するデータベースです。 詳細については、「データ移行シナリオの概要」をご参照ください。
説明データ移行タスクを設定するときは、[スキーマ移行] 、[フルデータ移行] 、および [増分データ移行] を選択する必要があります。
タスクの進行状況バーに「増分データ移行」と「移行タスクが遅延していません」、または遅延時間が5秒未満になるまで待ちます。
ソースRDSインスタンスとターゲットRDSインスタンスのデータベースBのデータが一致しているかどうかを確認します。
データに一貫性がある場合は、データ移行タスクを停止します。 詳細については、「データ移行タスクの停止」をご参照ください。
警告データ移行に使用されるデータベースアカウントには、読み取りおよび書き込み権限が付与されます。 データ移行タスクが完了したら、データのセキュリティを確保するために、アカウントを削除するか、アカウントの書き込み権限を取り消す必要があります。
ソースおよびターゲットRDSインスタンスのデータベースBにアプリケーションデータを書き込みます。
ソースおよびターゲットRDSインスタンスのデータベースBにログインし、ソースおよびターゲットRDSインスタンスのデータベースエンジンに基づいて必要なステートメントを実行して、セッション情報を表示します。 書き込み操作が新しいセッションで実行されていることを確認します。
MySQL
ショーprocesslist;
SQL Server
select * from sys.dm_exec_connections;
Oracle
select sid,serial#,username,program,machine,status from v$session;
PostgreSQL
pg_stat_activityから * を選択します。
Redis
クライアント一覧
MongoDB
管理者を使用するuse admin db.ru nCommand({currentOp: 1, $all:[{"active" : true}]})
説明必須のステートメントを実行した後、返される情報には、ソースRDSインスタンスとターゲットRDSインスタンスのデータベースBに接続するためのData Transmission Service (DTS) のプロセスまたはセッションが含まれます。
ソースおよびターゲットRDSインスタンスのデータベースBにアプリケーションデータを書き込みます。 ソースRDSインスタンスとターゲットRDSインスタンスが期待どおりまたは7日間実行されることを確認します。
サービスに関連するすべての機能をテストし、問題が検出されていないことを確認したら、ソースRDSインスタンスのデータベースBをシャットダウンします。
シンプルな分割ソリューション
単純分割ソリューションを使用する場合、アプリケーションを変更する必要はありません。 しかし、ロールバック障害が発生することがある。
ソースRDSインスタンスとターゲットRDSインスタンスのデータ移行タスクを設定します。 移行するオブジェクトとしてデータベースBを選択します。 詳細については、「データ移行シナリオの概要」をご参照ください。
タスクの進行状況バーに「増分データ移行」と「移行タスクが遅延していません」、または遅延時間が5秒未満になるまで待ちます。
説明データ移行タスクを設定するときに増分データ移行を選択しない場合、タスクの進行状況バーに「増分データ移行」が表示されません。 データ移行が完了すると、移行タスクは自動的に停止します。 データ移行タスクを実行する前に、サービスを一時停止し、ソースデータベースへのデータの書き込みを停止することを推奨します。 この場合、ステップ6に進みます。
ソースRDSインスタンスとターゲットRDSインスタンスのデータベースBのデータが一致しているかどうかを確認します。
データに一貫性がある場合は、データ移行タスクを停止します。 詳細については、「データ移行タスクの停止」をご参照ください。
警告データ移行に使用されるデータベースアカウントには、読み取りおよび書き込み権限が付与されます。 データ移行タスクが完了したら、データのセキュリティを確保するために、アカウントを削除するか、アカウントの書き込み権限を取り消す必要があります。
ソースRDSインスタンスのデータベースBからアプリケーションを切断します。
説明アプリケーションがソースRDSインスタンスのデータベースBから切断された後、ソースRDSインスタンスのデータベースAに関連するサービスと機能が影響を受ける場合、アプリケーションをソースRDSインスタンスから切断する必要があります。
ソースRDSインスタンスのデータベースBにログインし、ソースRDSインスタンスのデータベースエンジンに基づいて必要なステートメントを実行して、セッション情報を表示します。 書き込み操作が新しいセッションで実行されていることを確認します。
MySQL
ショーprocesslist;
SQL Server
select * from sys.dm_exec_connections;
Oracle
select sid,serial#,username,program,machine,status from v$session;
PostgreSQL
pg_stat_activityから * を選択します。
Redis
クライアント一覧
MongoDB
管理者を使用するuse admin db.ru nCommand({currentOp: 1, $all:[{"active" : true}]})
説明必須のステートメントを実行した後、返される情報には、DTSがソースRDSインスタンスのデータベースBに接続するためのプロセスまたはセッションが含まれます。
ターゲットRDSインスタンスのデータベースBで生成された増分データをソースRDSインスタンスのデータベースBに移行するために実行できるデータ移行タスクを作成して開始します。
この手順で作成された移行タスクは、データのロールバックに使用されます。 サービスの再開後、エラーが発生した場合は、ワークロードをソースデータベースに切り替えることができます。
警告上記のデータ移行タスクを設定する場合、「移行タイプとオブジェクトの設定」ステップで「増分データ移行」のみを選択できます。 次に、移行元データベースに移行するデータベースまたはテーブルを選択できます。
アプリケーションがソースRDSインスタンスのデータベースBから切断されていることを確認します。 ソースRDSインスタンスとターゲットRDSインスタンスのデータベースB間でデータが一致していることを確認します。 次に、アプリケーションのワークロードをターゲットRDSインスタンスのデータベースBに切り替え、サービスを再開します。
ターゲットRDSインスタンスのデータベースBにログインし、ターゲットRDSインスタンスのデータベースエンジンに基づいて必須のステートメントを実行して、セッション情報を表示します。 書き込み操作が新しいセッションで実行されていることを確認します。
MySQL
ショーprocesslist;
SQL Server
select * from sys.dm_exec_connections;
Oracle
select sid,serial#,username,program,machine,status from v$session;
PostgreSQL
pg_stat_activityから * を選択します。
Redis
クライアント一覧
MongoDB
管理者を使用するuse admin db.ru nCommand({currentOp: 1, $all:[{"active" : true}]})
説明必須のステートメントを実行した後、返される情報には、DTSがソースRDSインスタンスのデータベースBに接続するためのプロセスまたはセッションが含まれます。
ワークロードをターゲットデータベースに切り替えた後、ターゲットRDSインスタンスが期待どおりまたは7日間実行されることを確認します。
サービスに関連するすべての機能をテストし、問題が検出されないことを確認したら、ソースRDSインスタンスのデータベースBをシャットダウンし、データ移行タスクを停止します。 詳細については、「データ移行タスクの停止」をご参照ください。
警告データ移行に使用されるデータベースアカウントには、読み取りおよび書き込み権限が付与されます。 データ移行タスクが完了したら、データのセキュリティを確保するために、アカウントを削除するか、アカウントの書き込み権限を取り消す必要があります。