MySQL移行メモ(1)

自宅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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143537/f0a71c89-74a3-7784-d7b6-fda72680f09f.png)

→「全般」タブのファイルの真ん中やや上にある、"実行ファイルのパス"を確認。
![property.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143537/a00b3088-9b9f-6718-ad5a-9830d4239ea0.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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143537/cf816a12-eacf-bb78-606d-b64a19028977.png)

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

![regedit2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143537/f4510a99-4ff9-5196-6b99-497e9b2b9bab.png)

→レジストリエディタの右上の「×」ボタンを押下して、レジストリエディタを終了
→Windows再起動

### 2.2.2 参考
scコマンドの方でやるとすれば、
sc config MySQL56 BINARY_PATH_NAME=...
で設定変更できたのかな、と思ってます。

```powershell
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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143537/638496a7-fda6-9d95-1cfc-4394735a8eda.png)

・DOSプロンプトからnet startコマンドで起動しようとした場合

```powershell
C:\windows\system32>net start mysql56

MySQL56 サービスを開始します...
MySQL56 サービスを開始できませんでした。

システム エラーが発生しました。

システム エラー 1067 が発生しました。

プロセスを途中で強制終了しました。
```

どちらにせよ、両方ともエラー内容がわかりません。

こういう場合は、Windowsサービスを利用するのではなく、mysqldコマンドで起動しようとすればエラー内容がわかります。

```powershell
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)](https://qiita.com/k-y-river/items/1d7ad77159f93c44879d)
に掲載します。