本投稿は 2018/4 時点の Public Preview の内容です。
一般提供開始時には変更されている可能性があります。
前回の投稿では、SQL Server のネイティブバックアップのリストアについて書きました。
SQL Database Managed Instance (MI) は、SQL Server のネイティブバックアップをリストアできるだけでなく、MI からネイティブバックアップを取得することができるようになっています。
今回は MI のネイティブバックアップの取得について見ていきます。
リストアを行う時と同じなのですが、ネイティブバックアップの取得についても、Azure BLOB ストレージへの取得がサポートされている取得先になります。
バックアップの取得についても、MI 側に BLOB ストレージの資格情報を登録する必要があります。
これについては、リストアを実施する際の登録方法と同じです。
CREATE CREDENTIAL [https://<ストレージアカウント名>.blob.core.windows.net/<コンテナー名>] WITH IDENTITY = 'SHARED ACCESS SIGNATURE' , SECRET = '<shared Access Signature>' GO
これにより、BLOB ストレージに対してバックアップの取得が可能となります。
MI から取得可能なバックアップについては バックアップ に記載されていますが「COPY_ONLY」オプションを指定する必要があり、現状、取得可能なのは、「COPY_ONLY を指定した完全バックアップ」のみとなっています。
バックアップの取得については、次のようなクエリで実行可能です。
BACKUP DATABASE [<db 名>] TO URL = 'https://<ストレージアカウント>.blob.core.windows.net/<コンテナー>/<バックアップファイル>' WITH COMPRESSION , STATS = 5, COPY_ONLY, INIT,FORMAT GO
バックアップファイルについては、複数のファイルに対してストライプすることができますので、データベースのサイズや、バックアップの処理時間の調整として、複数のファイルに分けることができるかと。
ユーザーデータベースだけでなく、システムデータベースのバックアップも取得できるようですが、システムデータベースについてはバックアップを取得する必要はないかなと。
ここで取得したバックアップですが、現時点では「リストア先は MI に限定される」というような動作になるようです。
RESTORE HEADERONLY を実行すると確認できますが、MI から取得したバックアップについては、DatabaseVersion が「886」に設定されています。
SQL Server 2017 では、DatabaseVersion は「869」となっており、MI より低いバージョンの DatabaseVersion で構成されていることになります。
そのため、MI のバックアップを SQL Server 2017 にリストアするということはできず、MI で取得したバックアップについては、現状、MI 専用になるかと。
(新しい SQL Server のバージョンが出てきたら状況は変わるかもしれませんが。)
MI からバックアップを取得することも可能ですが、そのバックアップは MI でしかリストアすることができないので、「クラウドにアップロードした DB をオンプレミスにバックアップで復元する」というシナリオは難しいかと。