移行: SQL Server から Azure Arc で有効な SQL Managed Instance へ
このシナリオでは、2 つの異なるバックアップ方法と復元方法を使用して、Azure Arc で SQL Server インスタンスから Azure SQL Managed Instance にデータベースを移行する手順について説明します。
Azure Blob Storage を使用する
Azure Arc で有効な SQL Managed Instance に移行する場合は、Azure Blob Storage を使用します。
この方法では、バックアップしてから復元できる一時的な保存場所として Azure Blob Storage が使用されます。
前提条件
-
今回は、Azure Data Studio の Insider ビルドを使用します。
Azure サブスクリプション
手順 1: Azure BLOB ストレージをプロビジョニングする
- Azure Blob Storage アカウントの作成に関するページで説明されている手順に従います。
- Azure Storage Explorer を起動する
- Azure にサインインして、前の手順で作成した Blob Storage にアクセスします。
- Blob Storage アカウントを右クリックし、[Blob コンテナーの作成] を選択して、バックアップ ファイルが格納される新しいコンテナーを作成します。
手順 2: ストレージ BLOB 資格情報を取得する
Microsoft Azure Storage で、作成された Blob コンテナーを右クリックし、[共有アクセス署名の取得] を選択します。
[読み取り]、[書き込み]、および [一覧表示] を選択します。
[作成]
この画面から URI とクエリ文字列をメモしておきます。 後の手順で必要になります。 [コピー] ボタンをクリックして、メモ帳や OneNote などに保存します。
[共有アクセス署名] ウィンドウを閉じます。
手順 3: データベース ファイルを Azure Blob Storage にバックアップする
この手順では、ソース SQL Server に接続し、SQL Managed Instance - Azure Arc に移行するデータベースのバックアップ ファイルを作成します。
Azure Data Studio を起動する
SQL Managed Instance - Azure Arc に移行するデータベースが存在する SQL Server インスタンスに接続します。
データベースを右クリックし、[新しいクエリ] を選択します。
次の形式でクエリを準備し、前の手順で共有したアクセス署名の情報を使用して
<...>
で指定されたプレースホルダーを置き換えます。 値を置き換えたら、クエリを実行します。IF NOT EXISTS (SELECT * FROM sys.credentials WHERE name = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>') CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>] WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '<SAS_TOKEN>';
同様に、次のように BACKUP DATABASE コマンドを準備し、Blob コンテナーにバックアップ ファイルを作成します。 値を置き換えたら、クエリを実行します。
BACKUP DATABASE <database name> TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/<file name>.bak'
Azure Storage Explorer を開き、前の手順で作成したバックアップ ファイルが Blob コンテナーに表示されていることを確認します。
ここで、URL へのバックアップについて説明します。
手順 4: Azure BLOB ストレージから SQL Managed Instance - Azure Arc にデータベースを復元する
Azure Data Studio からログインし、SQL Managed Instance - Azure Arc に接続します。
[システム データベース] を展開し、マスター データベースを右クリックして、[新しいクエリ] を選択します。
クエリ エディター ウィンドウで、前の手順と同じクエリを準備して実行し、資格情報を作成します。
IF NOT EXISTS (SELECT * FROM sys.credentials WHERE name = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>') CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>] WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '<SAS_TOKEN>';
次のコマンドを準備して実行し、バックアップ ファイルが読み取り可能であり、変更されていないことを確認します。
RESTORE FILELISTONLY FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/<file name>.bak'
次のように RESTORE DATABASE コマンドを準備して実行し、SQL Managed Instance - Azure Arc のデータベースにバックアップ ファイルを復元します。
RESTORE DATABASE <database name> FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/<file name>.bak' WITH MOVE 'Test' to '/var/opt/mssql/data/<file name>.mdf' ,MOVE 'Test_log' to '/var/opt/mssql/data/<file name>.ldf' ,RECOVERY; GO
方法 2: kubectl を使用して Azure SQL Managed Instance - Azure Arc ポッドにバックアップ ファイルをコピーする
この方法では、任意の方法を使用して作成したバックアップ ファイルを取得し、それを Azure SQL Managed Instance ポッドのローカル ストレージにコピーして、Windows または Linux の一般的なファイル システムと同様に、そこから復元できるようにする方法について説明します。 このシナリオでは、kubectl cp
コマンドを使用して、ファイルをある場所からポッドのファイル システムにコピーします。
前提条件
- Azure Arc データ サービスがデプロイされている Kubernetes クラスターを示すように kubectl をインストールして構成する
- Azure Data Studio または SQL Server Management Server などのツールがインストールされ、バックアップ ファイルを作成する SQL Server に接続されているか、ローカル ファイル システムに既存の .bak ファイルが既に作成されている。
手順 1: データベースをまだバックアップしていない場合はバックアップする
ディスクへの一般的な SQL Server バックアップと同様に、SQL Server データベースをローカル ファイル パスにバックアップします。
BACKUP DATABASE Test
TO DISK = 'C:\Backupfiles\test.bak'
WITH FORMAT, MEDIANAME = 'Test' ;
GO
手順 2: バックアップ ファイルをポッドのファイル システムにコピーする
SQL インスタンスがデプロイされているポッドの名前を検索します。 一般に、「pod/<sqlinstancename>-0
」のような名前です。
次のように実行して、すべてのポッドのリストを取得します。
kubectl get pods -n <namespace of data controller>
例:
ローカル ストレージからクラスター内の SQL ポッドにバックアップ ファイルをコピーします。
kubectl cp <source file location> <pod name>:var/opt/mssql/data/<file name> -n <namespace name> -c arc-sqlmi
#Example:
kubectl cp C:\Backupfiles\test.bak sqlinstance1-0:var/opt/mssql/data/test.bak -n arc -c arc-sqlmi
手順 3: データベースを復元する
RESTORE DATABASE コマンドを準備して実行し、Azure SQL Managed Instance - Azure Arc にバックアップ ファイルを復元します。
RESTORE DATABASE test FROM DISK = '/var/opt/mssql/data/<file name>.bak'
WITH MOVE '<database name>' to '/var/opt/mssql/data/<file name>.mdf'
,MOVE '<database name>' to '/var/opt/mssql/data/<file name>_log.ldf'
,RECOVERY;
GO
例:
RESTORE DATABASE test FROM DISK = '/var/opt/mssql/data/test.bak'
WITH MOVE 'test' to '/var/opt/mssql/data/test.mdf'
,MOVE 'test' to '/var/opt/mssql/data/test_log.ldf'
,RECOVERY;
GO