このトピックでは、data Transmission Service (DTS) を使用して、自己管理型SQL ServerデータベースからApsaraDB RDS for SQL Serverインスタンスに増分データを移行する方法について説明します。 DTS はフルデータ移行と増分データ移行に対応しています。 自己管理型SQL Serverデータベースからデータを移行する場合、サービスの継続性を確保するために、サポートされているすべての移行タイプを選択できます。
フルデータ移行のみを実行する方法の詳細については、「セルフマネージドSQL ServerデータベースからApsaraDB RDS For SQL Serverインスタンスへのフルデータの移行」をご参照ください。
前提条件
自己管理型SQL Serverデータベースのバージョンは、2008、2008 R2、2012、2014、2016、または2017です。
プライマリ /セカンダリの切り替えがSQL ServerクラスターまたはAlwaysOn可用性グループ (AOAG) で実行されると、プライマリデータベースとセカンダリデータベースのログシリアル番号が不整合になります。 この場合、DTSはソースデータベースのログが不連続であると見なし、移行タスクは失敗します。 したがって、SQL ServerクラスターまたはSQL Server AOAGをソースデータベースとして使用することはできません。
異なるバージョンのデータベース間でデータを移行する場合は、データベースのバージョンに互換性があることを確認してください。
自己管理型SQL Serverデータベースから移行するテーブルには、主キーまたはUNIQUE NOT NULLインデックスがあります。
ApsaraDB RDS for SQL Serverインスタンスの使用可能なストレージ容量が、自己管理型SQL Serverデータベースのデータの合計サイズよりも大きいこと。
使用上の注意
DTSは、完全データ移行中にソースデータベースとターゲットデータベースの読み取りおよび書き込みリソースを使用します。 これは、データベースサーバの負荷を増加させる可能性がある。 データベースのパフォーマンスが悪い場合、仕様が低い場合、またはデータ量が多い場合、データベースサービスが利用できなくなる可能性があります。 たとえば、ソースデータベースで多数の低速SQLクエリが実行されている場合、テーブルにプライマリキーがない場合、またはターゲットデータベースでデッドロックが発生する場合、DTSは大量の読み取りおよび書き込みリソースを占有します。 データを移行する前に、移行元データベースと移行先データベースのパフォーマンスに対するデータ移行の影響を評価します。 オフピーク時にデータを移行することを推奨します。 たとえば、ソースデータベースとターゲットデータベースのCPU使用率が30% 未満の場合にデータを移行できます。
増分データ移行タスクが期待どおりに実行されるようにするには、ソースデータベースを頻繁にバックアップしないでください。 ログファイルを3日以上保持することを推奨します。 そうしないと、切り捨てられた後にログファイルを取得できません。
増分データ移行のレイテンシを正確にするために、DTSはハートビートテーブルを自己管理型SQL Serverデータベースに追加します。 ハートビートテーブルの名前は、
ソーステーブルname_dts_mysql_heartbeat
形式です。DTSは、ApsaraDB RDS for SQL Serverインスタンスにターゲットデータベースを自動的に作成します。 ただし、ソースデータベースの名前がApsaraDB RDSの命名規則に準拠していない場合は、データ移行タスクを設定する前に、ApsaraDB RDS for SQL Serverインスタンスにデータベースを作成する必要があります。
データベースの命名規則とApsaraDB RDS For SQL Serverでのデータベースの作成方法の詳細については、「ApsaraDB RDS for SQL Serverインスタンスでのデータベースの作成」をご参照ください。
ターゲットデータベースに有効なトリガーまたは外部キーが含まれている場合、移行タスクは失敗します。
データ移行タスクが失敗して停止すると、DTSは自動的にタスクを再開します。 ワークロードをターゲットインスタンスに切り替える前に、データ移行タスクを停止またはリリースします。 それ以外の場合、タスクの再開後、ソースデータベースのデータがターゲットインスタンスのデータを上書きします。
制限事項
DTSは、アセンブリ、サービスブローカー、フルテキストインデックス、フルテキストカタログ、分散スキーマ、分散関数、CLRストアドプロシージャ、CLRスカラー値関数、CLRテーブル値関数、内部テーブル、システム、または集計関数のスキーマを移行しません。
DTSはSQL_VARIANTタイプのデータを移行しません。
DTSは、計算列を含むテーブルを移行しません。
単一のデータ移行タスクでは、1つのデータベースから増分データを移行できます。 複数のデータベースから増分データを移行するには、データベースごとにデータ移行タスクを作成する必要があります。
移行タイプ
スキーマの移行
DTSは、オブジェクトのスキーマをターゲットデータベースに移行します。 DTSは、テーブル、ビュー、トリガー、シノニム、SQLストアドプロシージャ、SQL関数、プランガイド、ユーザー定義型、ルール、デフォルト、シーケンスのオブジェクトのスキーマ移行をサポートしています。
フルデータ移行
DTSは、オブジェクトの履歴データを自己管理型SQL Serverデータベースから移行先データベースに移行します。
増分データ移行
完全データ移行が完了すると、DTSは自己管理型SQL Serverデータベースから移行先データベースに増分データを移行します。
増分移行可能なSQL操作
挿入、更新、および削除
UPDATE操作が大きなフィールドのみを更新する場合、DTSは操作を移行しません。
CREATE TABLE
CREATE TABLEステートメントにパーティショニング句、サブパーティショニング句、または関数が含まれている場合、DTSは操作を移行しません。
ALTER TABLE (ADD COLUMN、DROP COLUMN、RENAME COLUMNのみを含む)
DROP TABLE
RENAME TABLE、TRUNCATE TABLE、CREATE INDEX
課金ルール
データベースアカウントに必要な権限
データベース | スキーマ移行 | 完全なデータ移行 | 増分データ移行 |
データベース | スキーマ移行 | 完全なデータ移行 | 増分データ移行 |
自己管理型SQL Serverデータベース | SELECT権限 | SELECT権限 | sysadminロールの権限 |
ApsaraDB RDS for SQL Server インスタンス | 読み書き権限 | 読み書き権限 | 読み書き権限 |
データベースアカウントを作成し、データベースアカウントに権限を付与する方法の詳細については、以下のトピックを参照してください。
自己管理型SQL Serverデータベース: CREATE USER
ApsaraDB RDS for SQL Serverインスタンス: ApsaraDB RDS for SQL Serverインスタンスのアカウントの作成
増分データ移行のプロセス
オブジェクト間の依存関係によるデータ移行の失敗を防ぐために、DTSは次の順序でソースSQL Serverデータベースからスキーマとデータを移行します。
テーブル、ビュー、シノニム、ユーザー定義型、ルール、デフォルト、プランガイドのスキーマを移行します。
フルデータ移行を実行します。
SQLストアドプロシージャ、SQL関数、トリガー、および外部キーのスキーマを移行します。
増分データ移行を実行します。
増分データ移行中は、ソースオブジェクトに対してデータ定義言語 (DDL) 操作を実行しないことを推奨します。 そうしないと、オブジェクトの移行に失敗する可能性があります。
始める前に
データ移行タスクを構成する前に、自己管理型SQL Serverデータベースでログ設定を構成し、クラスター化インデックスを作成します。
自己管理型SQL Serverデータベースで次のコマンドを実行して、復旧モデルをフルに変更します
use master; GO ALTER DATABASE <database_name> SET RECOVERY FULL WITH ROLLBACK IMMEDIATE; GO
パラメーター :
<database_name>: ソースデータベースの名前。
例:
use master; GO ALTER DATABASE mytestdata SET RECOVERY FULL WITH ROLLBACK IMMEDIATE; GO
次のコマンドを実行して、ソースデータベースの論理バックアップを作成します。 すでに論理バックアップを作成している場合は、この手順をスキップします。 バックアップデータベース <database_name>
BACKUP DATABASE <database_name> TO DISK='<physical_backup_device_name>'; GO
パラメーター:
<database_name>: ソースデータベースの名前。
<physical_backup_device_name>: バックアップファイルのストレージパスとファイル名。
例:
BACKUP DATABASE mytestdata TO DISK='D:\backup\dbdata.bak'; GO
次のコマンドを実行して、ソースデータベースのログエントリをバックアップします。
BACKUP LOG <database_name> to DISK='<physical_backup_device_name>' WITH init; GO
パラメーター:
<database_name>: ソースデータベースの名前。
<physical_backup_device_name>: バックアップファイルのストレージパスとファイル名。
例:
BACKUP LOG mytestdata TO DISK='D:\backup\dblog.bak' WITH init; GO
ソーステーブルごとにクラスタ化インデックスを作成します。 詳細については、「クラスター化インデックスの作成」をご参照ください。
手順
最初に DTSコンソールにログインします。
Data Management (DMS) コンソールにリダイレクトされている場合は、
の
アイコンをクリックして、以前のバージョンのDTSコンソールに移動します。
左側のナビゲーションウィンドウで、データ移行 をクリックします。
[移行タスク] ページの上部で、RDSインスタンスが存在するリージョンを選択します。
ページの右上隅にある [移行タスクの作成] をクリックします。
ソースデータベースとターゲットデータベースを設定します。
セクション
パラメーター
説明
セクション
パラメーター
説明
N/A
タスク名
DTSが自動的に生成するタスク名。 タスクを簡単に識別できるように、わかりやすい名前を指定することをお勧めします。 一意のタスク名を指定する必要はありません。
移行元データベース
インスタンスタイプ
ソースデータベースのアクセス方法。 この例では、パブリックIPアドレスを持つユーザー作成データベースが選択されています。
他のインスタンスタイプを選択した場合、自己管理データベースのネットワーク環境をデプロイする必要があります。 詳細については、「準備の概要」をご参照ください。
インスタンスリージョン
ソースデータベースが存在するリージョン。 インスタンスタイプとして [パブリックIPアドレスを持つユーザー作成データベース] を選択した場合、[インスタンスリージョン] パラメーターを設定する必要はありません。
自己管理型SQL Serverデータベースにホワイトリストが構成されている場合は、DTSサーバーのCIDRブロックをデータベースのホワイトリストに追加する必要があります。 [インスタンスリージョン] フィールドの横にある [DTSのIPアドレスセグメントの取得] をクリックして、DTSサーバーのCIDRブロックを取得できます。
データベースエンジン
移行元ディスクのタイプを設定します。 [SQL Server] を選択します。
Hostname or IP Address
自己管理型SQL Serverデータベースへの接続に使用されるエンドポイント。 この例では、パブリックIPアドレスが指定されています。
ポート番号
自己管理型SQL Serverデータベースのサービスポート番号。 デフォルト値: 1433
この例では、自己管理型SQL Serverデータベースのサービスポートにインターネット経由でアクセスできる必要があります。
データベースアカウント
自己管理型SQL Serverデータベースのアカウント。 アカウントに必要な権限の詳細については、「データベースアカウントに必要な権限」をご参照ください。
データベースパスワード
データベースアカウントのパスワードを設定します。
ソースデータベースに関する情報を指定した後、[データベースパスワード] の横にある [接続のテスト] をクリックして、情報が有効かどうかを確認できます。 情報が有効な場合は、[合格] メッセージが表示されます。 [失敗] メッセージが表示されたら、[失敗] の横にある [チェック] をクリックします。 次に、チェック結果に基づいて情報を変更します。
ターゲットデータベース
インスタンスタイプ
ターゲットデータベースのタイプ。 RDS インスタンスを選択します。
インスタンスリージョン
ターゲットApsaraDB RDS for SQL Serverインスタンスが存在するリージョン。
RDS インスタンス ID
ApsaraDB RDS for SQL ServerインスタンスのID。
データベースアカウント
ターゲットApsaraDB RDS for SQL Serverインスタンスのデータベースアカウント。 アカウントに必要な権限の詳細については、「データベースアカウントに必要な権限」をご参照ください。
データベースパスワード
データベースアカウントのパスワードを設定します。
RDSインスタンスに関する情報を指定した後、[データベースパスワード] の横にある [接続のテスト] をクリックして、情報が有効かどうかを確認できます。 情報が有効な場合は、[合格] メッセージが表示されます。 [失敗] メッセージが表示されたら、[失敗] の横にある [チェック] をクリックします。 次に、チェック結果に基づいて情報を変更します。
ページの右下隅にある [ホワイトリストの設定] および [次へ] をクリックします。
DTSサーバーのCIDRブロックがデータベースまたはインスタンスのホワイトリスト、またはECSセキュリティグループルールに自動的または手動で追加されると、セキュリティリスクが発生する可能性があります。 したがって、DTSを使用してデータを移行する前に、潜在的なリスクを理解して認識し、次の対策を含む予防策を講じる必要があります。VPNゲートウェイ、またはSmart Access Gateway。
移行するオブジェクトと移行タイプを選択します。
設定
説明
設定
説明
移行タイプの選択
フルデータ移行のみを実行するには、[スキーマ移行] と [フルデータ移行] を選択します。
データ移行中のサービスの継続性を確保するには、[スキーマ移行] 、[フルデータ移行] 、および [増分データ移行] を選択します。 この例では、3つの移行タイプが選択されています。
増分データ移行が選択されていない場合は、フルデータ移行中に自己管理型SQL Serverデータベースにデータを書き込まないでください。 これにより、ソースデータベースとターゲットデータベース間のデータの整合性が確保されます。
移行するオブジェクトの選択
[使用可能] セクションから1つ以上のオブジェクトを選択し、
アイコンをクリックして、オブジェクトを [選択済み] セクションに追加します。
単一のデータ移行タスクでは、1つのデータベースから増分データを移行できます。 複数のデータベースから増分データを移行するには、データベースごとにデータ移行タスクを作成する必要があります。
移行するオブジェクトとして、列、テーブル、またはデータベースを選択できます。
既定では、オブジェクトがターゲットデータベースに移行された後、オブジェクトの名前は変更されません。 オブジェクト名マッピング機能を使用して、移行先データベースに移行するオブジェクトの名前を変更できます。 詳細は、オブジェクト名のマッピングをご参照ください。
オブジェクト名マッピング機能を使用してオブジェクトの名前を変更すると、そのオブジェクトに依存する他のオブジェクトの移行に失敗する可能性があります。
オブジェクトの名前を変更するかどうかを指定する
オブジェクト名マッピング機能を使用して、移行先インスタンスに移行されるオブジェクトの名前を変更できます。 詳細は、オブジェクト名のマッピングをご参照ください。
自己管理型SQL ServerデータベースまたはApsaraDB RDS for SQL Serverインスタンスへの接続が失敗した場合の再試行時間範囲の指定
デフォルトでは、DTSがソースデータベースとターゲットデータベースへの接続に失敗した場合、DTSは次の12時間以内に再試行します。 業務要件に基づいて再試行時間範囲を指定できます。 指定された時間範囲内にDTSがソースデータベースとターゲットデータベースに再接続された場合、DTSはデータ移行タスクを再開します。 それ以外の場合、データ移行タスクは失敗します。
DTSがソースデータベースとターゲットデータベースへの再接続を試みる時間範囲内で、DTSインスタンスに対して課金されます。 業務要件に基づいて再試行時間範囲を指定することを推奨します。 ソースデータベースとターゲットデータベースがリリースされた後、できるだけ早くDTSインスタンスをリリースすることもできます。
[事前チェック] をクリックします。
移行タスクが開始される前にプリチェックが実行されます。 移行タスクは、事前チェックが成功した後にのみ開始されます。
事前チェックが失敗した場合は、失敗した各チェック項目の横にある
アイコンをクリックして、関連する詳細を表示します。 指示に従って問題を修正し、事前チェックを再度実行します。
[次へ] をクリックします。
[設定の確認] ダイアログボックスで、[チャネル仕様] パラメーターを設定します。 次に、[データ送信サービス (従量課金) サービス規約] を読み、選択します。
[今すぐ購入してスタート] をクリックして、移行タスクを開始します。
フルデータ移行
フルデータ移行タスクを手動で停止しないでください。 フルデータ移行タスクを手動で停止すると、RDSインスタンスに移行されたデータが不完全になる可能性があります。 データ移行タスクが自動的に停止するまで待つことができます。
増分データ移行
増分データ移行タスクは自動的に停止しません。 タスクを手動で停止する必要があります。
増分データ移行タスクを適切な時点で手動で停止することを推奨します。 たとえば、オフピーク時やワークロードをApsaraDB RDS For MySQLインスタンスに切り替える前にタスクを停止できます。
増分データ移行とデータ移行タスクが遅延しませんがデータ移行タスクのプログレスバーに表示されるまで待ちます。 その後、ソースデータベースへのデータの書き込みを数分間停止します。 増分データ移行のレイテンシは、プログレスバーに表示され得る。
増分データ移行のステータスが [データ移行タスクは遅延なし] に変わるまで待ちます。 次に、移行タスクを手動で停止します。
ワークロードをApsaraDB RDS for SQL Serverインスタンスに切り替えます。
次のステップ
データ移行に使用されるデータベースアカウントには、読み取りおよび書き込み権限があります。 データ移行が完了したら、セキュリティを確保するために、自己管理型SQL ServerデータベースとApsaraDB RDS for SQL Serverインスタンスの両方のアカウントを削除する必要があります。