SQLServerからMySQLへデータベースを移行する

SQLServerからMySQLへデータベースを移行した際のNote。
MySQL Workbenchを使用する。

参考にしたページは、Database Migrationのウィザードに出てくる以下リンク。
https://dev.mysql.com/doc/workbench/en/wb-migration.html

今回やったこと
- SQL ServerからMySQL用にテーブル作成のスクリプトのみを生成。(つまりスキーマダンプ。)
- データの移行は、やってません。(後ほど、PHPでゴリゴリ書いてやりました。)

環境
- MySQLWorkbenchを起動しているのは、Windows10 Pro。
- 移行元のサーバは、Windows Server 2012上のSQL Server(2014?Azureの仮想マシンにインストールしたやつ。)
- 今回は、移行先のサーバを設定するところが出てくるが、サーバへ直接移行していないで、sqlファイルで出力した。

できなかった場合は以下の点を確認してみて
- MySQLWorkbenchを使っている環境に、ODBC Driver for SQL Serverはインストールされているか。
- もし、対象先サーバのMySQLへ接続して移行する場合は、MySQLへリモートから接続できるようになっているか。(アカウントのホスト名、ファイアウォール、ポート解放...)
- もし、対象先サーバのMySQLへ接続して移行する場合、コネクションタイムアウトの設定に注意。でかいデータを移行する場合は、途中で接続が切断されてしまうことも。
- SQL Serverがのっているサーバの、ファイアウォール、ポート解放、アカウントの設定。

作業手順

1. MySQLWorkbenchを起動して、TOPからDatabaseMigrationを選択する。
画像のバージョンは古いかも。新しいバージョンでも、流れは同じ感じでいけるんじゃないだろうか。

1.メニューからDatabaseMigrationを選択
1.メニューからDatabaseMigrationを選択

 
2. 作業前に確認。OPEN ODBC Administratorをクリック。

2.開始前にドライバの確認
2.開始前にドライバの確認

 
3. 移行開始前に、SQL Server用のドライバを確認。

ODBC Driver for SQL Serverが必要。自分の場合は、既にインストールされていた。SQL Server Management Studio (2014かな?)がインストールされているから、その時に一緒に入ったのかも。エディションはExpressです。

3.ドライバの確認
3.ドライバの確認

 
4. 移行元(SQL Server)の接続設定。

4.移行元の設定
4.移行元の設定

 
5. 移行先(MySQL)の接続設定。

MySQLWorkbenchを普段使っている人なら、既に登録されている接続先から選択できる。自分のやった環境は、秘密鍵でSSHで、DBへは、localhostのデフォルトの3306ポートのrootでパスワードなし、といった感じ。まあ、今回は接続しないから、たぶん設定しても意味ないと思うんだけれども。

5.移行先の設定
5.移行先の設定

 
6. で、処理が進むので見守る。


 
7. 移行したいスキーマの選択。

データベースを選択する。このとき、移行先での名前をどうするか選択できるので、Only one schemaを選択。正直、SQL Serverでスキーマ全然使ってない。全部dbo。

7.移行したいスキーマの選択
7.移行したいスキーマの選択

 
8. 処理が進むので見守る。


 
9. 移行したいオブジェクトの選択。
テーブルを選ぶ。全部選んだ。

9.移行したいオブジェクトの選択
9.移行したいオブジェクトの選択

 
10. 処理が進むので見守る。


 
11. 処理結果を見る。


 
12. スキーマ作成スクリプトファイルの作成。

今回は、データ移行はしないで、空のデータベース、テーブルを作るsqlファイルだけ出力した。

12.スクリプトファイルの作成
12.スクリプトファイルの作成

 
13. 中断。

データ移行もする場合は、この後も続けていく感じだと思います。今回はコレで終了。

13.今回はスクリプトだけ作って終了
13.今回はスクリプトだけ作って終了