この Topic では、ApsaraDB RDS for SQL Server インスタンスから自己管理 SQL Server データベースにデータを移行する方法について説明します。RDS コンソールから完全物理バックアップファイルと増分物理バックアップファイルをダウンロードし、自己管理 SQL Server データベースにアップロードし、それらを解凍してから復元する必要があります。
前提条件
ApsaraDB RDS for SQL Server インスタンス用に物理バックアップファイルが作成されていること。 詳細については、「物理バックアップ」をご参照ください。
また、Data Transmission Service (DTS) を使用して、物理バックアップファイルまたはスナップショットバックアップファイルをクラウドから自己管理 SQL Server インスタンス (ApsaraDB RDS for SQL Server をソース、自己管理 SQL Server をターゲットとする) に移行することもできます。
手順
ApsaraDB RDS for SQL Server インスタンスの完全および増分物理バックアップファイルをダウンロードする。
ターゲットサーバーがソースインスタンスにアクセスできる場合は、
wget "URL"を使用してバックアップファイルをダウンロードすることもできます。URL パラメーターは、バックアップファイルのダウンロード URL を指定します。ダウンロードしたバックアップファイルを自己管理 SQL Server があるサーバーにアップロードし、完全および増分物理バックアップファイルを解凍します。
説明完全物理バックアップファイルと増分物理バックアップファイルは、解凍後に同じ名前になります。次のフォーマットでファイル名を変更することをお勧めします: <データベース名>+<バックアップメソッド>+<日付>。 例:
testdb_datafull_201901071320.bak、ここでdatafullは完全バックアップを示します。testdb_datadiff_201901071330.bak、ここでdatadiffは増分バックアップを示します。
解凍された完全および増分物理バックアップファイルを取得します。ファイル保存パスの例:
完全バックアップファイルの保存パス:
/tmp/testdb_datafull_201901071320.bak増分バックアップファイルの保存パス:
/tmp/testdb_datadiff_201901071330.bak
ローカルの自己管理 SQL Server データベースにログオンし、次のコマンドを実行して、バックアップファイル内の論理ファイル名をクエリします。
RESTORE FILELISTONLY FROM DISK='/tmp/testdb_datafull_201901071320.bak'; GOこの例では、データファイルの論理名は testdb で、ログファイルの論理名は testdb_log です。

完全バックアップファイルからデータベースを復元し、データファイルとログファイルの保存パスを指定します。
重要完全物理バックアップファイルのデータのみを復元する場合は、このステップを完了した後、直接ステップ 7 に進みます。増分物理バックアップファイルのデータを復元する場合にのみ、ステップ 6 を実行します。
RESTORE DATABASE testdb FROM DISK = '/tmp/testdb_datafull_201901071320.bak' WITH REPLACE, NORECOVERY, STATS = 10, MOVE 'testdb' TO '/var/opt/mssql/data/testdb.mdf', MOVE 'testdb_log' TO '/var/opt/mssql/data/testdb_log.ldf'; GOコマンドが実行されると、testdb データベースのステータスは、データベースが 復元中 であることを示します。
説明/var/opt/mssql/data/testdb.mdfはデータファイルの保存パスで、testdb.mdfはデータファイルの論理名です。/var/opt/mssql/data/testdb_log.ldfはログファイルの保存パスで、testdb_log.ldfはログファイルの論理名です。
ターゲットデータベースの で、データファイルとログファイルの保存パスを表示できます。
(オプション) 増分バックアップファイルからデータベースを復元し、データファイルとログファイルの保存パスを指定します。
RESTORE DATABASE testdb FROM DISK = '/tmp/testdb_datadiff_201901071330.bak' WITH REPLACE, NORECOVERY, STATS = 10, MOVE 'testdb' TO '/var/opt/mssql/data/testdb.mdf', MOVE 'testdb_log' TO '/var/opt/mssql/data/testdb_log.ldf'; GOコマンドが実行されると、testdb データベースのステータスは、データベースが 復元中 であることを示します。
次の文を実行して、データベースを可用状態に復元します。
RESTORE DATABASE testdb WITH RECOVERY; GO