SQL Server 2017 データベースをインクリメンタル バックアップを使用してクラウドに移行するためのベストプラクティス

> 本記事は[こちらのブログ](https://www.alibabacloud.com/blog/best-practices-for-migrating-sql-server-2017-databases-to-the-cloud-using-incremental-backups_601830?spm=a2c65.11461433.0.0.2d0e5355AEES1Z)を参考にしています。
> 翻訳にはアリババクラウドの[ModelStudio](https://www.alibabacloud.com/en/product/modelstudio)([Qwen](https://www.alibabacloud.com/en/solutions/generative-ai/qwen))を使用しております。

増分バックアップ移行方法は、様々なバージョンのSQL Serverに対応しています。この記事では、SQL Server 2017を例に取り、全体的な移行プロセスの設定手順を説明します。詳細な機能の説明については、[公式ドキュメント](https://www.alibabacloud.com/help/rds/apsaradb-rds-for-sql-server/migrate-the-incremental-backup-data-of-a-self-managed-sql-server-database-to-an-apsaradb-rds-instance-that-runs-sql-server-2012-2016-2017-or-2019)をご覧ください。

**適用シーン**

このトピックで説明する移行方法は、以下のシナリオに適しています：

- RDSインスタンス上の宛先データベースへの移行を物理的に、論理的ではなく行う場合。
- 停止時間が重要な場合、分単位の停止時間を伴ってデータを移行する場合。

**注意：**

増分バックアップ移行方法は、様々なバージョンのSQL Serverに対応しており、この記事ではSQL Server 2017を例に、移行プロセス全体の設定手順を説明しています。詳細な機能説明については、[公式ドキュメント](https://www.alibabacloud.com/help/en/rds/apsaradb-rds-for-sql-server/)をご確認ください。

このソリューションは、クラウドに一度に1つのデータベースのみを移行できるため、インスタンス内で単一のデータベースをクラウドに移行する場合にのみ適用されます。インスタンス内のすべてのデータベースを同時にクラウドに移行する必要がある場合は、インスタンスレベルの移行ソリューションをご利用ください：

1. [公式ドキュメンテーション](https://www.alibabacloud.com/help/rds/apsaradb-rds-for-sql-server/migrate-data-from-a-self-managed-sql-server-instance-to-an-apsaradb-rds-for-sql-server-instance)
2. 詳細設定については、202行目から始まるベストプラクティスを参照ください。

**前提条件**

- RDSインスタンスには十分なストレージ容量が必要です。
- RDSインスタンスに対して高い権限を持つアカウントを作成します。
- ローカルのSQL Serverデータベースの回復モードはFULLモードに設定されている必要があります。
```sql
SELECT name, recovery_model_desc 
FROM sys.databases 
WHERE name = 'model';
```
GO
![](https://yqintl.alicdn.com/9e709de22fcf791a0f8f92ea1382409501be090c.png)

- ローカルデータベース環境で`DBCC CHECKDB`ステートメントを実行し、データベース内に割り当てエラーや整合性エラーがないことを確認します。割り当てエラーや整合性エラーがない場合、以下のような実行結果が返されます：
![](https://yqintl.alicdn.com/a5e4a600071fb6cf75f4bad7b5c8fe7bdfd2bf7f.png)

- OSSサービスが有効化されています。

**注：**

本トピックで説明する移行方法はデータベースレベルであり、一度に1つのデータベースのみを移行できます。バックアップファイル名には、`.bak`, `.diff`, `.trn`, `.log`のいずれかの拡張子をつける必要があります。各拡張子の意味は以下の通りです：

- `.bak`: 完全バックアップファイルを示します。
- `.diff`: 差分バックアップファイルを示します。
- `.trn`または`.log`: トランザクションのログバックアップファイルを示します。

**手順1：ローカルデータベースのバックアップ**

SSMSを使用してデータベースをバックアップします。
![](https://yqintl.alicdn.com/80d7bff3aebe895396f44c826f5850181064a931.png)
![](https://yqintl.alicdn.com/957ee7ced1732e01ae005f1b6c7d670e4a01a070.png)
![](https://yqintl.alicdn.com/0d0653f3f024bbaaba28dfb35e66218b87336c9f.png)
![](https://yqintl.alicdn.com/8f44c9cf4971e1a66c3496b34c70e2367b7f801c.png)

**注：** スクリプトを使用してバックアップすることもできます。スクリプトは[こちら](https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20220815/dcwq/1660544793749RDSBackupSpecifiedDatabasesToLocal.sql.)から参照できます。
![](https://yqintl.alicdn.com/6cae23e4ba7fda2de97f0212374e878148784327.png)

**手順2：バックアップファイルをOSSバケットにアップロード**

1. OSSコンソールにログインし、左側のナビゲーションパネルで「バケット」を選択。
2. 表示されたページで「バケットの作成」をクリック。
3. ECSインスタンスから内部ネットワーク経由でデータをアップロードし、RDSインスタンスへの復元も内部ネットワークで行われる場合は、バケットの地域とECSインスタンス、RDSインスタンスの地域が一致している必要があります。
![](https://yqintl.alicdn.com/3a03d470585caaf4c99419ea90f3b5dbdda596dc.png)

**手順3：データ移行タスクの作成**

1. RDSインスタンスページにアクセスし、上部のナビゲーションバーからRDSインスタンスの地域を選択し、対象のインスタンスIDをクリック。
2. 左側のナビゲーションパネルで「バックアップと復元」を選択。
3. ページ上部で「OSSバックアップデータをRDSに移行」をクリック。
![](https://yqintl.alicdn.com/9df8bafacb5f001f67ace47f2d1789d4a8ad5c35.png)
4. データインポートウィザードページで、2回「次へ」をクリックしてデータインポートステップに入ります。
5. 次のパラメーターを構成し、「OK」をクリック。

| 設定項目 | 説明 |
| --- | --- |
| クラウド移行プラン | `アクセス保留中`.即時アクセス（フルバックアップファイルが1つだけの場合）：完全バックアップデータの移行、フルバックアップファイルのみを移行する場合に適しています。このとき、CreateMigrateTask操作で BackupMode = FULL と IsOnlineDB = True の設定が有効になります。アクセス保留中（差分バックアップやログファイルも存在する場合）：増分データ移行、フルバックアップファイルに加えてログバックアップ（または差分バックアップファイル）を移行する場合に適しています。このとき、CreateMigrateTask操作で BackupMode = UPDF と IsOnlineDB = False の設定が有効になります。移行タスクが完了するまでお待ちください。最新の移行タスク状況は「更新」ボタンをクリックして確認できます。 |
![](https://yqintl.alicdn.com/75247521b4c32d508abbe007f78dee2e98bc735b.png)

**手順4：差分またはログバックアップファイルのインポート**

SQL Serverインスタンス上のローカルデータベースの完全バックアップがRDSインスタンス上の宛先データベースにインポートされた後、次に差分またはログバックアップファイルをインポートする必要があります。
1. RDSインスタンスページにアクセスし、上部のナビゲーションバーからRDSインスタンスの地域を選択し、対象のインスタンスIDをクリック。
2. 左側のナビゲ
**出力テキスト：**

タスクリストで、インポートするバックアップファイルのレコードを見つけて、右側の[データベースを開く]をクリックします。データベースを開く方法を選択し、OKをクリックしてください。 ! [16](https://yqintl.alicdn.com/5d2593701ad5a58f4c84e1246a0746e05410abb7.png)

ステップ6: マイグレーションタスクのバックアップファイルの詳細を表示する
インポートされたデータベース内のデータを確認するには、DMSコンソールにログインできます：
! [17](https://yqintl.alicdn.com/fd2bb2c70ec96aa120fe04292958776aa7d2fb87.png)

元データベースのデータを表示する：
! [18](https://yqintl.alicdn.com/fd5f45ac439436b1510c8defaf71f0b877d75094.png)

複数の増分ファイルがある場合、それを複数回追加してください。増分バックアップ操作のテストを通じて、ユーザーは非常に短時間だけアプリケーションを一時停止する必要があります。最終的なLOG Backup直前にのみ書き込みを停止する必要があります。