移行: Azure Arc で有効になっている SQL Server から 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 が使用されます。

前提条件

手順 1: Azure BLOB ストレージをプロビジョニングする

  1. Azure Blob Storage アカウントの作成に関するページで説明されている手順に従います。
  2. Azure Storage Explorer を起動する
  3. Azure にサインインして、前の手順で作成した Blob Storage にアクセスします。
  4. Blob Storage アカウントを右クリックし、[Blob コンテナーの作成] を選択して、バックアップ ファイルが格納される新しいコンテナーを作成します。

手順 2: ストレージ BLOB 資格情報を取得する

  1. Microsoft Azure Storage で、作成された Blob コンテナーを右クリックし、[共有アクセス署名の取得] を選択します。

  2. [読み取り][書き込み]、および [一覧表示] を選択します。

  3. [作成]

    この画面から URI とクエリ文字列をメモしておきます。 後の手順で必要になります。 [コピー] ボタンをクリックして、メモ帳や OneNote などに保存します。

  4. [共有アクセス署名] ウィンドウを閉じます。

手順 3: データベース ファイルを Azure Blob Storage にバックアップする

この手順では、ソース SQL Server に接続し、SQL Managed Instance - Azure Arc に移行するデータベースのバックアップ ファイルを作成します。

  1. Azure Data Studio を起動する

  2. SQL Managed Instance - Azure Arc に移行するデータベースが存在する SQL Server インスタンスに接続します。

  3. データベースを右クリックし、[新しいクエリ] を選択します。

  4. 次の形式でクエリを準備し、前の手順で共有したアクセス署名の情報を使用して <...> で指定されたプレースホルダーを置き換えます。 値を置き換えたら、クエリを実行します。

    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>';  
    
  5. 同様に、次のように BACKUP DATABASE コマンドを準備し、Blob コンテナーにバックアップ ファイルを作成します。 値を置き換えたら、クエリを実行します。

    BACKUP DATABASE <database name> TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/<file name>.bak'
    
  6. Azure Storage Explorer を開き、前の手順で作成したバックアップ ファイルが Blob コンテナーに表示されていることを確認します。

ここで、URL へのバックアップについて説明します。

手順 4: Azure BLOB ストレージから SQL Managed Instance - Azure Arc にデータベースを復元する

  1. Azure Data Studio からログインし、SQL Managed Instance - Azure Arc に接続します。

  2. [システム データベース] を展開し、マスター データベースを右クリックして、[新しいクエリ] を選択します。

  3. クエリ エディター ウィンドウで、前の手順と同じクエリを準備して実行し、資格情報を作成します。

    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>';  
    
  4. 次のコマンドを準備して実行し、バックアップ ファイルが読み取り可能であり、変更されていないことを確認します。

    RESTORE FILELISTONLY FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/<file name>.bak'
    
  5. 次のように 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

Azure Arc で有効な SQL Managed Instance の機能の詳細情報

データ コントローラーの作成から開始する

Azure Arc で有効な SQL Managed Instance を作成する