Loading...

We've detected that your browser language is Chinese. Would you like to visit our Chinese website? [ Dismiss ]
By: Dylan

SQL ServerからMySQLへ移行する理由

Microsoft SQL ServerとMySQLは、企業がデータ管理や業務システムを支えるために広く活用するデータベースです。しかし、様々な要因によりSQL ServerからMySQLへデータベースを移行するケースがあります。主な理由は下記の通りです。

  • コスト削減:企業向けMySQLはMicrosoft SQL Serverより費用対効果に優れます。小規模・大規模環境を問わず、SQL Serverと比較して運用コストを抑えられます。
  • オープンソースのエコシステム:MySQLはLAMP(Linux、Apache、MySQL、PHP/Python)といったオープンソース環境と親和性が高いです。開発者はソースコードを自由に参照し、データベースのカスタマイズやチューニングを実施可能です。
  • 高い互換性:SQL ServerはWindows、Linux、Dockerコンテナに対応する一方、MySQLはWindows、macOS、Linux上でシームレスに動作します。加えてAWS RDS、Google Cloud SQLなど多くのクラウドサービスがMySQLのネイティブホスティングに対応しています。
  • 運用管理の簡素化:MySQLは軽量な管理ツールを備え、バックアップ・リストア手順も簡潔で、小規模環境や共有ホスティング環境で良好なパフォーマンスを発揮します。

目的を問わず、続きをご覧ください。ここではSQL ServerデータベースをMySQLへ移行する4つの手法を紹介します。

手法1 MySQL Workbenchを利用しSQL ServerからMySQLへ変換

MySQL WorkbenchはMySQLデータベース管理向けGUIツールです。移行ウィザードが標準搭載されており、SQL ServerのデータベースをMySQLへ変換し、スキーマとデータの転送を支援します。

作業を開始する前に事前確認事項✎…
MySQL Workbench 6.3以降のバージョンをダウンロード・インストールしてください。Workbenchダウンロードページより入手可能です。
対象SQL Serverデータベースに、全テーブル参照可能な権限を持つアカウントで接続できること
SQL Server ODBCドライバーまたはSQL Server Native Clientがインストールされていること(MySQL WorkbenchがSQL Serverに接続するために必要)

手順1. MySQL Workbenchを起動し、「データベース」→「移行ウィザード」を選択します。

手順2. 画面の案内に従い、移行元RDBMSとしてMicrosoft SQL Serverを選択します。

手順3.「新規…」をクリックし移行元接続情報を作成します。

手順4.「ホスト名」「ポート番号」「ユーザー名」「パスワード」を入力し接続テストを実施。適切なODBCドライバーを選択する必要がある場合があります。

手順5. 移行先RDBMSとしてMySQLを選択します。

手順6. 新規で移行先接続を作成するか、既存の接続を選択します。

手順7.「ホスト名」「ポート番号」「ユーザー名」「パスワード」を入力し「接続テスト」を実行します。

手順8. ウィザードに利用可能なSQL Serverデータベースが表示されるので、必要に応じて1つまたは複数のスキーマを選択し「次へ」をクリックします。

手順9. MySQL Workbenchがテーブル、ビュー、ストアドプロシージャなどのオブジェクトを読み取りSQL Serverスキーマを解析後、MySQL構文へ自動変換します。

手順10. 生成されたスクリプトを確認し、必要に応じてマッピングを手動編集してから「次へ」をクリックします。

手順11. Workbenchにスキーマを自動作成させるか、スクリプトを出力し事前に手動確認するかを選択します。

migrate with workbench

その後ウィザードによりSQL ServerからMySQLへ直接データがコピーされます。データ量によって所要時間は変動します。

移行完了後、MySQL Workbenchを開き新規スキーマを参照し、データの整合性確認や主要クエリ・アプリケーションの動作検証を実施します。

補足:MySQL Workbenchはストアドルーチンの移行を試行しますが、SQL ServerはT-SQL、MySQLは類似のPL/SQL系構文を採用しているため、多くの場合手動での書き換えが必要です。

手法2 SQLyogを使用しMS SQL ServerからMySQLへ変換

SQLyogを利用しSQL ServerからMySQLへ移行することも可能ですが、スキーマの自動変換機能は標準搭載されていないため、スキーマのエクスポートと調整作業が必要です。詳細手順は下記の通りです。

手順1. まずSQL Serverからスキーマ(定義のみ)を出力します。SQL Server Management Studio(SSMS)にて「データベース」を右クリック→「タスク」→「スクリプトの生成」→「スキーマのみ」を選択します。

手順2. 出力した.sqlファイルを開き、MySQLの構文に適合するよう手動編集します。

削除または置換が必要な項目:

  • GO文
  • IDENTITY(1,1) → AUTO_INCREMENT
  • [列名] → `列名`
  • NVARCHAR(MAX) → TEXT
  • BIT → TINYINT(1)
  • DATETIME2 → DATETIME
  • UNIQUEIDENTIFIER → CHAR(36)

編集後、mysql_schema.sqlとして保存します。

手順3. SQLyogでMySQLサーバーに接続し、当該.sqlファイルを実行します:「ファイル」→「SQLスクリプトを開く」→「実行

手順4. ODBCデータソース管理を開き、「システムDSN」または「ユーザーDSN」→「追加」をクリックし「SQL Server用ODBCドライバー」を選択します。

手順5. 移行対象データベースを選択し、「データソース名」「サーバー名」「認証情報」を入力し保存します。

手順6. SQLyogを起動し「ツール」→「外部データのインポート」→「ODBCデータソースからインポート」を選択。作成したODBCソース、移行元SQL Serverデータベース、移行先MySQLデータベースを指定します。

mysqlyog-import from odbc data source

手順7. テーブルを自動作成するか、既存テーブルへデータのみインポートするか選択し、インポートを開始します。

移行完了まで待機します。

補足:SQLyogはT-SQLロジックを自動変換できません。ストアドプロシージャ、ビュー、トリガーを移行する場合はSSMSから出力後、MySQLのSQL構文に合わせて書き換える必要があります(構文・関数に差異が存在するため)。

手法3 手動でSQL ServerからMySQLへデータ転送

手順1. SQL Server Management Studioを開きスキーマを出力:「スクリプトの生成」→「データベース選択」→「スキーマおよびデータ」を選択し、.sqlファイルとして保存します。

手順2. SQL構文を変換し、データ型を置換します。例:

  • BIT → BOOLEAN または TINYINT(1)
  • DATETIME2 → DATETIME
  • NVARCHAR(MAX) → TEXT
  • UNIQUEIDENTIFIER → CHAR(36)
  • MONEY → DECIMAL(19,4)

識別子の置換:

  • SQL Serverの[列名] を MySQLのバッククォート `列名` に変更
  • GO文を削除(MySQLでは使用しません)
  • IDENTITY(1,1) → AUTO_INCREMENT に調整

手順3. 変換済み.sqlスクリプトをMySQLにインポート可能です。

mysql -u root -p 対象データベース < converted_schema.sql

手順4. bcpまたはSQL Serverインポート/エクスポートウィザードによりCSVファイルを出力後、下記構文で読み込みます。

  • LOAD DATA INFILE ‘table.csv’
  • INTO TABLE テーブル名
  • FIELDS TERMINATED BY ‘,’
  • ENCLOSED BY ‘”‘
  • LINES TERMINATED BY ‘\n’
  • IGNORE 1 ROWS;

手法4 専用移行ソリューションを活用しSQL ServerからMySQLへ変換(推奨)

代替手段として、i2Streamといった専用のデータベース移行ソリューションを利用できます。MySQL Workbench、SQLyog、コマンドによる手作業と比較し、大規模で複雑な環境において大きなメリットがあります。

i2Streamの主な特長:

  • 停止時間の短縮:Microsoft SQL ServerからMySQLへのオンライン移行に対応、業務中断を発生させません。
  • 操作性に優れる:手動による構文変換や複雑なコマンド操作なしでデータベース移行を実行可能
  • トランザクション整合性:チェックポイントやロールバック検証による同期確認でデータの完全性を検証
  • 自動化による人為的ミス低減:スキーママッピング、オブジェクト分析、切り替え作業を自動化し、手間とミスを削減
  • 高速かつ安全なデータ移行:データ圧縮、AES/SM4暗号化、帯域制御、並列転送に対応し、長距離環境でも高速かつ安全にデータ転送を実施

ダウンロードボタンより60日間無料トライアル版を入手可能です。

60日間無料トライアル
安全なダウンロード

まとめ

本記事ではMySQL Workbench、SQLyog、コマンド操作、専用データ移行ツールを利用したSQL ServerからMySQLへの移行手法を解説しました。用途に合わせて適切な方法を選択してください。

比較すると、専用のデータ移行ソリューションi2Streamが最適です。プロセスを効率化し、大半の大規模データベース環境に適しています。

 

SQL Server→MySQL移行に関するよくある質問

Q:停止時間ゼロでSQL ServerデータベースをMySQLへ移行できますか?
A:可能です。i2Streamのような専用移行ツールはリアルタイムレプリケーションに対応し、停止時間を最小限またはゼロにした移行を実現します。

Q:SQL ServerからMySQLへの移行にはどれくらい時間がかかりますか?
A:データベース容量、スキーマの複雑さ、選択するツールにより変動します。小規模DBは数分程度、企業規模の大きなデータベースの場合は数時間~数日を要する場合があります。

Q:SQL Serverの.bakファイルをオンラインでMySQLへ変換できますか?
A:直接変換することはできません。.bakファイルはSQL Server独自のバックアップ形式であり、標準的なSQLスクリプトやデータダンプではないためです。

概要は準備中です
目次:
最新情報を購読
最新のインサイト、ニュース、限定コンテンツをお届けします。いつでも配信解除が可能です。
購読する
ビジネスデータのセキュリティ強化を始めませんか?
60日間の無料トライアルまたはデモで、Info2softが企業データをどのように保護するかをご確認ください。
フォームにご記入の上、送信してください。担当者より追ってご連絡いたします。
このフォームを送信することにより、 プライバシー通知を読み、同意したことを確認します。
{{ isSubmitting ? '送信中...' : '送信する' }}