自宅PCの買い替えの影響でPCに入れているMySQL(主に自習用等に利用)をMySQLをマシン間で移行することに。
せっかくなので、やったことをメモとして残していきます。
0. 前提
・Windows10+MySQL5.6 → Windows10+MySQL5.6という単純移行。
(ついでにバージョンアップしてみれば良かったと思わなくもないが、それはまたの機会に。)
・Javaプログラミングで利用できるようにする。
・MySQLで参照するデータのフォルダ構成等を一部変更する。
1. インストール
1.1 事前準備
1.1.1 MySQL5.6インストーラダウンロード
https://dev.mysql.com/downloads/windows/installer/5.6.html
からインストーラをダウンロードする。
以下の2種類のインストーラーが用意されているが、できることは同じっぽい。
・mysql-installer-web-community-5.6.45.0.msi
・mysql-installer-community-5.6.45.0.msi
ちょっと調べた感じでは、両者の違いは、
・必要最低限のものだけがパッケージングされており、インストール実行時に必要なものをダウンロードしに行く(web-communityの方)
・All in One(communityの方)
※私はweb-communityの方を利用してインストールを進めました。
1.1.2 Microsoft Visual C++ 2010 再頒布可能パッケージ (x64)のインストール
Server機能を導入する際に必要になったので、
https://www.microsoft.com/ja-jp/download/details.aspx?id=14632
からインストーラをダウンロードしてインストール。
1.2 MySQLインストール
ダウンロードしたインストーラをダブルクリックして起動。以下、ウィザードに従ってインストールを実施。
1: Server機能を選択し、MySQL5.6をウィザードに従ってインストール。
2: MySQL Connectors→Connector/Jを選択し、Connector/J 5.1の最新版をウィザードに従ってインストール。
1.3 PATH設定
PATHに
"C:\Program Files\MySQL\MySQL Server 5.6\bin"
を追加する。
2. 起動設定変更
インストール時にWindowsのサービス(MySQL56)として登録されますが、この内容を一部変更。
2.1 サービス構成確認
Windowsアイコンを右クリック
→ 「コンピューターの管理(G)」を選択
→ 表示される左ペインの「サービスとアプリケーション」を選択
→ 「サービス」を選択
→ 「MySQL56」をダブルクリック
→「全般」タブのファイルの真ん中やや上にある、"実行ファイルのパス"を確認。
参照するiniファイルのパスは、
--defaults-file="C:\ProgramData\MySQL\MySQL Server 5.6\my.ini"
と設定されていました。
このまま全く問題はないのですが、個人的な好みや作業の効率から、別の場所に変更しました。
2.2 サービス構成変更
やりたいこと: Windowsのサービスとして起動するMySQLについて、起動時に参照するiniファイルのパスを変更する。
やり方としては少なくとも、
- scコマンドでサービス構成を編集
- レジストリを編集
の2通りがありそうでしたが、scコマンドを使ったことがないこともあり、「2. レジストリ編集」で実施することしました。
2.2.1 手順
mysqlを停止した上で、
Windowsアイコンを右クリック
→ファイル名を指定して実行
→"regedit"と入力して、リターンキーを押下
→以下の順に選択
HKEY_LOCAL_MACHINE-SYSTEM-CurrentControlSet-Services-MySQL56
→"ImagePath"選択し、をダブルクリック
→「値のデータ」を編集し、defaults-fileで指定するiniファイル名を、自分が利用するファイルに変更
→「OK」ボタンを押下
→レジストリエディタの右上の「×」ボタンを押下して、レジストリエディタを終了
→Windows再起動
2.2.2 参考
scコマンドの方でやるとすれば、
sc config MySQL56 BINARY_PATH_NAME=...
で設定変更できたのかな、と思ってます。
C:\windows\system32>sc qc MySQL56
[SC] QueryServiceConfig SUCCESS
SERVICE_NAME: MySQL56
TYPE : 10 WIN32_OWN_PROCESS
START_TYPE : 2 AUTO_START
ERROR_CONTROL : 1 NORMAL
BINARY_PATH_NAME : "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.6\my.ini" MySQL56
LOAD_ORDER_GROUP :
TAG : 0
DISPLAY_NAME : MySQL56
DEPENDENCIES :
SERVICE_START_NAME : NT AUTHORITY\NetworkService
3. Java向け環境設定
3.1 Connector/J 5.x系の最新版をインストール
インストーラを利用して、Connector/J 5.x系の最新版をインストール。
C:\Program Files (x86)\MySQL\Connector J 5.1\に
mysql-connector-java-5.1.48.jar
mysql-connector-java-5.1.48-bin.jar
などが作成される。
3.2 CLASSPATH設定
CLASSPATHに
"C:\Program Files (x86)\MySQL\Connector J 5.1\mysql-connector-java-5.1.48-bin.jar"
を追加する。
X. おまけ
MySQL起動エラーに失敗した場合
・DOSプロンプトからnet startコマンドで起動しようとした場合
C:\windows\system32>net start mysql56
MySQL56 サービスを開始します...
MySQL56 サービスを開始できませんでした。
システム エラーが発生しました。
システム エラー 1067 が発生しました。
プロセスを途中で強制終了しました。
どちらにせよ、両方ともエラー内容がわかりません。
こういう場合は、Windowsサービスを利用するのではなく、mysqldコマンドで起動しようとすればエラー内容がわかります。
C:\>mysqld
2019-10-12 13:35:37 0 [Note] mysqld (mysqld 5.6.45) starting as process 10532 ...
2019-10-12 13:35:37 10532 [Warning] Can't create test file D:\mysql\dat\DESKTOP-OHGJD7Q.lower-test
2019-10-12 13:35:37 10532 [Warning] Can't create test file D:\mysql\dat\DESKTOP-OHGJD7Q.lower-test
mysqld: Can't change dir to 'D:\mysql\dat\' (Errcode: 2 - No such file or directory)
2019-10-12 13:35:37 10532 [ERROR] Aborting
2019-10-12 13:35:37 10532 [Note] Binlog end
2019-10-12 13:35:37 10532 [Note] mysqld: Shutdown complete
移行作業としてはまだ途中ですが、記事としては切りがいいところまで書けたと思ってますので、いったんここで公開。
続きは
MySQL移行メモ(2)
に掲載します。