このトピックでは、ApsaraDB RDS for SQL Server インスタンスから自己管理型 SQL Server インスタンスにデータを移行する方法について説明します。ApsaraDB RDS コンソールから完全物理バックアップファイルと増分物理バックアップファイルをダウンロードし、自己管理型 SQL Server インスタンスをホストするサーバーにアップロードしてファイルを解凍し、データベースを復元する必要があります。
前提条件
ご利用の ApsaraDB RDS for SQL Server インスタンスの完全な物理バックアップファイルがあることを確認してください。
Data Transmission Service (DTS) を使用して、物理バックアップファイルまたはスナップショットを移行することもできます。DTS で、ソースとして 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' であることを示しています。
-
完全バックアップファイルからデータベースを復元し、データファイルとログファイルのストレージ場所を指定します。
重要増分バックアップを復元する必要がある場合は、手順 6 に進みます。完全バックアップのみを復元する場合は、手順 7 にスキップしてください。
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