ここでは、オンプレミス SQL Server から AparaDB RDS for SQL Server へのデータ移行タスクを設定する方法を紹介します。
移行タイプ
オンプレミス SQL Server から ApsaraDB RDS for SQL Server へのデータ移行の場合、DTS は、オブジェクト構造移行、既存データ移行および変更データレプリケーションという、3 種類の移行タイプをサポートしています。これらの移行タイプの機能と制限は次のとおりです。
オブジェクト構造移行
これにより、ソースインスタンスのオブジェクト構造定義がターゲットインスタンスに移行されます。現在、DTS はテーブル、ビュー、トリガー、シノニム、ストアドプロシージャ、関数、PlanGUID、ユーザー定義データ型、ルール、およびデフォルトのオブジェクトをサポートしています。
既存データ移行
これにより、ソースインスタンス内のすべての既存データがターゲットインスタンスに移行されます。変更データレプリケーションを選択せずに既存データを移行する場合、移行中にソースインスタンスに加えられたデータ変更は、ターゲットインスタンスに同期されません。
変更データレプリケーション
データ変更をレプリケートすることも選択した場合、移行中にソースインスタンスに加えられたデータ変更は、ターゲットインスタンスに同期されます。
移行の制限
- 現在、次の SQL Server のバージョンでは、オブジェクト構造および既存データの移行がサポートされています。SQL Server 2005、2008、2008 R2、2012 および 2016。次の SQL Server のバージョンでは、データ変更の移行がサポートされています。SQL Server 2008、2008 R2、2012 および 2014。
- 移行対象オブジェクトがオブジェクト名マッピング機能を使用する場合、これらのオブジェクトに依存するオブジェクトが移行されないことがあります。
- sql_variant データ型はサポートされていません。
- オブジェクト構造移行では、アセンブリ、データベースレベルのストアドプロシージャ、Service Broker、フルテキストインデックス、フルテキストカタログ、分散関数、CLR スカラー値関数、CLR テーブル値関数、内部テーブル、集計関数、およびシステムの移行をサポートしません。
- 3 つの移行タイプのすべてを選択した場合は、オブジェクト構造移行した後、変更データレプリケーションを行う前に、DDL 操作を実行しないでください。移行が失敗することがあります。
- 変更データレプリケーションの制限:
- すべての DDL 文の移行はサポートされていません。詳細は、変更データレプリケーションによって移行可能な DDL 操作の項を参照してください。
- ラージオブジェクトデータ型のみを更新する Update 文はサポートしていません。
- 計算カラムを含むテーブルはサポートしていません。
- 主キーとしてクラスター化インデックスを使用するテーブルのみをサポートします。
- 変更データレプリケーションを使用する各移行タスクは、1 つのデータベースの移行のみをサポートします。複数のデータベースのデータ変更を複製するには、複数の移行タスクを作成します。
変更データレプリケーションによって移行可能な DDL 操作
- CREATE TABLE (関数、パーティション、およびデフォルト値はサポートされていません)
- ALTER TABLE … ADD COLUMN (デフォルト値はサポートされていません)
- ALTER TABLE … DROP COLUMN
- ALTER TABLE … ALTER COLUMN (デフォルト値はサポートされていません)
- CREATE INDEX (インデックスプロパティはサポートされていません)
- SP_RENAME table_name
- SP_RENAME column_name
移行権限
オンプレミス SQL Server から ApsaraDB RDS for SQL Server へのデータ移行に DTS を使用する場合、ソースインスタンスとターゲットインスタンスの移行アカウントには、次の権限が必要です。
インスタンス | オブジェクト構造移行 | 既存データ移行 | 変更データレプリケーション |
---|---|---|---|
オンプレミス SQL Server | Select | Select | sysadmin |
ターゲット ApsaraDB RDS for SQL Server インスタンス | 読み書きアクセス権限 | 読み書きアクセス権限 | 読み書きアクセス権限 |
移行プロセス
オンプレミス SQL Server から ApsaraDB RDS for SQL Server への移行の成功率を向上させるために、DTS は次の移行プロセスを使用します。
- テーブル、ビュー、シノニム、ユーザー定義データ型、ルール、デフォルト、および PlanGuid の構造オブジェクトを移行します。
- 既存データを移行します。
- 構造オブジェクト (ストアドプロシージャ、関数、トリガー、および外部キー) を移行します。
- データの変更をレプリケートします。
変更データレプリケーションを含まない移行タスクのとき、移行の進行状況が [オブジェクト構造移行 100%]、[既存データ移行 100%]、かつ移行ステータスが [移行中] の場合、タスクを手動で終了しないでください。直前の手順 3 を実行している最中であり、移行データが失われる可能性があります。
移行手順
次に、オンプレミス SQL Server から ApsaraDB RDS for SQL Server への移行タスクを設定する手順について説明します。
RDS インスタンスのデータベース作成
データ移行中に、移行対象のデータベースがターゲット RDS インスタンスに存在しない場合、DTS は対応するデータベースを、ターゲット RDS インスタンス内に自動的に作成します。ただし、次のいずれかの場合、移行タスクを設定する前に、手動でデータベースを作成する必要があります。
- データベース名が RDS で定義された仕様に準拠していない (名前は最大 64 文字で、英小文字・数字・下線・ハイフンで構成され、英小文字で始まり、英小文字または数字で終わります)。
- ソースインスタンスのデータベース名がターゲットインスタンスのデータベース名と異なる。
移行アカウントの作成
移行タスクを設定するときは、ソースインスタンスとターゲットインスタンスに、移行アカウントを登録する必要があります。アカウントには、上記の移行権限で示した権限が必要です。
オンプレミス SQL Server インスタンスに必要な権限を持つ移行アカウントがない場合は、データベースユーザーの作成を参照して作成します。
ターゲット RDS for SQL Server インスタンスに必要な権限を持つ移行アカウントがない場合は、アカウントの作成を参照してアカウントを作成します。
その他の準備
サービスを停止せずに移行を実行するには、ソースデータベースで次の 2 つのコマンドを実行して、ソースデータベースのログ形式を full に設定する必要があります。
- alter database database_name set recovery_model_desc=’full’
ここで database_name は、移行するデータベースの名前です。 - BACKUP LOG database_name to DISK= backup_place WITH init
ここで database_name は移行するデータベースの名前で、backup_place はバックアップファイルを格納する場所です。
移行タスクの設定
データベースと移行アカウントを作成したら、次のように移行タスクを設定します。
DTS コンソール にログインし、右上の [移行タスクの作成] をクリックします。オンプレミス SQL Server とターゲット RDS インスタンスの接続情報を設定します。
タスク名
デフォルトでは、DTS は自動的にタスク名を生成します。タスク名は一意である必要はありません。必要に応じて変更することができます。
ソースデータベース
- インスタンスタイプ: [オンプレミスデータベース] を選択します。
- インスタンスリージョン: ソースインスタンスに最も近いリージョンを選択します。
- データベースエンジン: [SQL Server] を選択します。
- ホスト名または IP アドレス: オンプレミス SQL Server インスタンスのパブリックネットワーク IP アドレスを入力します。
- ポート: オンプレミス SQL Server インスタンスのリスニングポート番号を入力します。
- データベースアカウント: オンプレミス SQL Server インスタンスの移行アカウントのユーザー名を入力します。
- データベースのパスワード: オンプレミス SQL Server インスタンスの移行アカウントのパスワードを入力します。
ターゲットデータベース
- インスタンスタイプ: [RDS インスタンス] を選択します。
- インスタンスリージョン: ターゲットインスタンスが置かれているリージョンを選択します。
- RDS インスタンス ID: ターゲット RDS インスタンスの ID を入力します。ターゲット RDS インスタンスは、クラシックネットワークまたは VPC ネットワーク内に存在することができます。
- データベースアカウント: ターゲット RDS インスタンスの移行アカウントのユーザー名を入力します。
- データベースのパスワード: ターゲット RDS インスタンスの移行アカウントのパスワードを入力します。
移行タイプと移行対象オブジェクトを設定します。
移行タイプ
サービスを停止せずに移行を実行するには、3 つの移行タイプすべてを選択します。
既存データのみを移行するには、[オブジェクト構造移行] および [既存データ移行] を選択します。
移行対象オブジェクト
オブジェクトは、データベース、テーブル、およびカラムです。デフォルトでは、オブジェクトの移行後、ターゲットインスタンスのオブジェクト名はソースインスタンスのオブジェクト名と同じになります。それらが異なるようにするには、オブジェクト名マッピング機能を使用します。
事前チェック
移行が開始される前に事前チェックが実行されます。
事前チェックが失敗した場合は、エラー項目の横にある [失敗] をクリックして問題を解決し、再度事前チェックを実行してください。
移行タスクの開始
事前チェックが成功したら、移行タスクを開始します。タスクのリストで、移行のステータスと進行状況を表示できます。
変更データレプリケーションは、動的同期のプロセスです。変更データレプリケーションの遅延がない場合は、ターゲットデータベースのデータを確認します。データが正しい場合は、移行タスクを無効にして、サービスをターゲットデータベースに切り替えます。