LoginSignup
1

More than 3 years have passed since last update.

MySQL移行メモ(1)

Last updated at Posted at 2019-10-06

自宅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」をダブルクリック
winservice.png

→「全般」タブのファイルの真ん中やや上にある、"実行ファイルのパス"を確認。
property.png

参照するiniファイルのパスは、
--defaults-file="C:\ProgramData\MySQL\MySQL Server 5.6\my.ini"
と設定されていました。
このまま全く問題はないのですが、個人的な好みや作業の効率から、別の場所に変更しました。

2.2 サービス構成変更

やりたいこと: Windowsのサービスとして起動するMySQLについて、起動時に参照するiniファイルのパスを変更する。

やり方としては少なくとも、
1. scコマンドでサービス構成を編集
2. レジストリを編集
の2通りがありそうでしたが、scコマンドを使ったことがないこともあり、「2. レジストリ編集」で実施することしました。

2.2.1 手順

mysqlを停止した上で、

Windowsアイコンを右クリック
→ファイル名を指定して実行
→"regedit"と入力して、リターンキーを押下
→以下の順に選択
 HKEY_LOCAL_MACHINE-SYSTEM-CurrentControlSet-Services-MySQL56
→"ImagePath"選択し、をダブルクリックregedit.png

→「値のデータ」を編集し、defaults-fileで指定するiniファイル名を、自分が利用するファイルに変更
→「OK」ボタンを押下

regedit2.png

→レジストリエディタの右上の「×」ボタンを押下して、レジストリエディタを終了
→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起動エラーに失敗した場合

・WindowsサービスのGUIから起動しようとした場合
serviceErr.png

・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)
に掲載します。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1