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

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

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

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

以降のセクションでは、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. [Connection] ウィンドウで localhost を入力し、[Connect] をクリックします。
  4. Object Explorer で [Databases] を開きます。
  5. ターゲット データベースを右クリックし、[Tasks]、[Export Data-Tier Application...] の順にクリックします。[Export Data] ウィザードが開きます。

    データのエクスポート。

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

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

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

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

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

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

SQL データベースを Linux ベースの SQL Server にインポートするには、次の操作を行います。

  1. SSMS を開きます。
  2. [Connection] ウィンドウで、ターゲット サーバーの IP アドレスを入力し、[Connect] をクリックします。
  3. Object Explorer で [Databases] フォルダを右クリックし、[Import Data-tier Application...] を選択します。
  4. エクスポート手順で作成された .bacpac ファイルを指定します。

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

  6. AdventureWorks2022 を指定します。

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

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

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

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

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

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. [Connection] ウィンドウで「localhost」と入力します。
  3. Object Explorer で [Databases] を開きます。
  4. ターゲット データベースを右クリックし、[Tasks]、[Back Up...] の順にクリックします。

    バックアップの作成。

  5. [Backup Database] ウィンドウで、[Backup type] が [Full] に、[Back up to] が [Disk] に設定されていることを確認します。バックアップ ファイルの名前と場所をメモします。たとえば、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. [Connection] ウィンドウで、Linux マシンの IP アドレスまたはホスト名を入力します。
  3. ログイン情報とパスワードを指定します。
  4. [Connect] をクリックします。

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

  5. Object Explorer で [Databases] フォルダを右クリックし、[Restore Database...] を選択します。

  6. [Restore Database] ウィンドウで、[Source] を [Device] に設定し、[...] をクリックしてバックアップ選択ダイアログを開きます。

  7. [Select backup device] ダイアログで、[Add] をクリックします。

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

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

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

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

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

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

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

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