SQL データベースを Windows から Linux に移行する


このチュートリアルでは、SQL Server データベースを Windows Server から Linux Server に移行する 2 つの方法について説明します。

このページでは、次の方法について説明します。

理想的な移行方法は、特定のデータベースで許容できるダウンタイムとそのサイズによって異なります。最も頻繁に使用される手法は、バックアップと復元の方法です。

料金

このドキュメントでは、課金対象である次の Google Cloudコンポーネントを使用します。

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。 新規の Google Cloud ユーザーは無料トライアルをご利用いただける場合があります。

このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。

始める前に

以下があることを確認してください。

  • Active Directory ドメイン コントローラに接続しているプロジェクトと Virtual Private Cloud(VPC)。 Google Cloud
  • Windows Server フェイルオーバー クラスタ(WSFC)仮想マシン(VM)インスタンスに使用するサブネット。

このガイドを完了するには、次の Google Cloud プロジェクトも必要です。

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

このチュートリアルを終了した後、作成したリソースを削除すると、それ以上の請求は発生しません。詳しくは、クリーンアップをご覧ください。

以降のセクションでは、SQL Server データベースを Windows ベースのサーバーから Linux ベースのサーバーに移行する方法について説明します。

SQL データベースを Linux にインポートする

このセクションでは、SQL Server Management Studio(SSMS)を使用して、Windows ベースの SQL Server から SQL データベースをエクスポートし、Linux ベースの SQL Server にインポートする方法について説明します。

前提条件

SQL データベースを Linux にインポートするには、次の要件を満たす必要があります。

  • 次のものがインストールされている Windows マシン:

    • SQL Server がインストールされている。
    • SSMS がインストールされている。
    • 移行する SQL データベースがこのマシンにあります。このチュートリアルでは、サンプルの AdventureWorks2022 データベースを使用します。
  • SQL Server がインストールされた Linux マシン。

Windows ベースの SQL Server から SQL データベースをエクスポートする

Windows ベースの SQL Server から SQL データベースをエクスポートするには、次の操作を行います。

  1. Windows マシンで、C: ドライブに新しいフォルダを作成し、exportc:\export)という名前を付けます。
  2. SSMS を開きます。
  3. [接続] ウィンドウで localhost を入力し、[接続] をクリックします。
  4. オブジェクト エクスプローラーで [データベース] を開きます。
  5. ターゲット データベースを右クリックし、[タスク]、[データレイヤ アプリケーションのエクスポート...] の順にクリックします。[データのエクスポート] ウィザードが開きます。

    データのエクスポート

  6. データ エクスポート ウィザードで、[次へ] を選択します。

  7. [設定] タブで、バックアップ パッケージ(BACPAC)ファイル(.bacpac)をローカルディスクに保存するようにデータ エクスポート ウィザードを構成します。

  8. 次のようにフォルダとファイル名を指定します。

    c:\export\MigrationFile.bacpac
    
  9. [次へ] をクリックします。

  10. 指定した設定を確認し、[完了] をクリックしてエクスポート プロセスを開始します。選択した場所に .bacpac ファイルが正常に作成されます。これで、ターゲット SQL Server にインポートできます。

データベースを Linux にインポートする

SQL データベースを Linux ベースの SQL Server にインポートする手順は次のとおりです。

  1. SSMS を開きます。
  2. [接続] ウィンドウで、ターゲット サーバーの IP アドレスを入力し、[接続] をクリックします。
  3. オブジェクト エクスプローラーで [データベース] フォルダを右クリックし、[データレイヤ アプリケーションをインポート...] を選択します。
  4. エクスポート手順で作成された .bacpac ファイルを指定します。

    c:\export\MigrationFile.bacpac
    
  5. [次へ] をクリックします。

  6. AdventureWorks2022 を指定します。

    AdventureWorks2022
    
  7. データパスとログパスに Linux インスタンスのデフォルト設定が表示されていることを確認します。

  8. [次へ] をクリックします。

  9. インポート設定を確認し、[完了] をクリックしてインポートを開始します。

    bacpac ファイルの設定をインポートします。

  10. [閉じる] をクリックしてインポート ウィザードを閉じます。データベースが接続の準備が整いました。

SQL のバックアップと復元を使用して移行する

バックアップと復元機能を使用して、Windows 上の SQL Server から Linux 上の SQL Server にデータベースを移行できます。このセクションでは、この方法でデータベースを Linux 環境に転送する手順について説明します。

前提条件

バックアップと復元の方法でデータベースを移行するには、次のものが必要です。

  • 次のものがインストールされている Windows マシン:

    • SQL Server がインストールされている。
    • SQL Server Management Studio(SSMS)がインストールされている。
    • 移行するデータベース。このドキュメントでは、AdventureWorks2022 データベースを使用します。
  • SQL Server がインストールされている Linux マシン。

Windows マシンでデータベースをバックアップする

Windows で SSMS を使用してデータベースをファイルにバックアップする手順は次のとおりです。

  1. Windows マシンで SSMS を開きます。
  2. [接続] ウィンドウで「localhost」と入力します。
  3. オブジェクト エクスプローラーで [データベース] を開きます。
  4. ターゲット データベースを右クリックし、[タスク]、[バックアップ...] の順にクリックします。

    [バックアップの作成] をクリックします。

  5. [データベースのバックアップ] ウィンドウで、[バックアップの種類] が [完全] に、[バックアップ先] が [ディスク] に設定されていることを確認します。バックアップ ファイルの名前と場所をメモします。たとえば、SQL Server 2022 のデータベース バックアップのデフォルトの場所は C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup です。

    SQL データベースのバックアップ オプション。

  6. [OK] をクリックしてバックアップを開始します。

バックアップ ファイルを Linux マシンにコピーする

セキュア コピー プロトコル(SCP)クライアントを使用して、バックアップ ファイルを Linux マシンにアップロードできます。次の手順では、SCP コマンドライン クライアントを使用します。ただし、WinSCP または Git Bash Shell を使用してファイルをアップロードすることもできます。

  1. Windows マシンで新しいコマンド プロンプトを開き、Windows マシンでデータベースをバックアップするで作成したバックアップ ファイルを含むディレクトリに移動します。次に例を示します。

    cd 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\'
    
  2. scp コマンドを使用して、ファイルをターゲット Linux マシンにコピーします。次の例では、前に作成した MigrationBackup.bak ファイルを使用します。

    scp MigrationBackup.bak sysadmin@LINUX_INTERNAL_IP:./
    

    LINUX_INTERNAL_IP は、Linux マシンの IP に置き換えます。

    バックアップ ファイルをターゲット マシンにコピーします。

バックアップ ファイルを移動する

Linux マシン上の SQL Server にデータベースを復元するには、バックアップ ファイルが mssql ユーザーが所有するデフォルトの場所(/var/opt/mssql)にあることを確認する必要があります。

バックアップ ファイルを mssql ディレクトリに移動する手順は次のとおりです。

  1. Windows マシンから SSH を使用してターゲット Linux マシンに接続します。

    ssh sysadmin@LINUX_INTERNAL_IP
    

    LINUX_INTERNAL_IP は、Linux マシンの IP に置き換えます。

  2. 新しいバックアップ ディレクトリを作成します。

    sudo mkdir -p /var/opt/mssql/backup
    
  3. バックアップ ファイルを新しく作成したディレクトリに移動します。

    sudo mv ~/MigrationBackup.bak /var/opt/mssql/backup
    

データベースを復元する

SSMS を使用して Linux マシンにデータベースを復元する手順は次のとおりです。

  1. Windows マシンで SSMS を開きます。
  2. [接続] ウィンドウで、Linux マシンの IP アドレスまたはホスト名を入力します。
  3. ログイン情報とパスワードを指定します。
  4. [接続] をクリックします。

    復元するバックアップ ファイルを選択します。

  5. オブジェクト エクスプローラーで [データベース] フォルダを右クリックし、[データベースの復元...] を選択します。

  6. [データベースの復元] ウィンドウで、[ソース] を [デバイス] に設定し、[...] をクリックしてバックアップ選択ダイアログを開きます。

  7. [バックアップ デバイスの選択] ダイアログで、[追加] をクリックします。

  8. ファイル ブラウザで \var\opt\mssql\backup ディレクトリをクリックし、アップロードしたバックアップ ファイルを選択します。

  9. [OK] をクリックして選択内容を確定させ、ダイアログを閉じます。

  10. 入力されたバックアップ メディアを確認し、[OK] をクリックします。

    復元するバックアップ ファイルを選択します。

Linux マシンでデータベースの復元を開始する前に、Linux マシンで復元されたデータベース ファイルの場所を更新する必要があります。これは、Windows サーバーからのパスが Linux サーバーに存在しないためです。

  1. 左側のメニューで [ファイル] をクリックします。
  2. [すべてのファイルをフォルダーに移動する] を選択して、復元したファイルを SQL Server のデフォルトのデータ ディレクトリに移動します。
  3. [OK] をクリックして復元プロセスを開始します。
  4. サーバーのすべてのデータベースを一覧表示して、復元を確認します。復元されたデータベースが一覧表示されます。

    SELECT Name FROM sys.Databases
    GO
    
  5. 移行したデータベースに対して他のクエリを実行します。

    USE AdventureWorks2022
    SELECT top 100 * FROM [Person].[Person]
    GO
    

クリーンアップ

チュートリアルが終了したら、作成したリソースをクリーンアップして、割り当ての使用を停止し、課金されないようにできます。次のセクションで、リソースを削除または無効にする方法を説明します。

プロジェクトの削除

課金をなくす最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。

プロジェクトを削除するには:

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

次のステップ