Pleskで管理されたCentOS6のMySQLを5.1から5.6にアップグレードする

# はじめに

Pleskで管理されたCentOS6.10のMySQL5.1を5.6までアップグレードしたので、その記録になります。

Pleskのサポートでは、以下の2記事がありますので、これを見ながら5.1から5.6へアップグレードしました。

* [Linuxで Plesk MySQL を 5.1 から 5.5 にアップグレードするには](https://support.plesk.com/hc/ja/articles/213367429)
* [MySQL をバージョン 5.5 から 5.6 にアップグレードするにはどうすればよいですか？](https://support.plesk.com/hc/ja/articles/213403429)

CentOS7の方がMariaDB5.5を更新する場合は、以下を御覧ください。
https://qiita.com/idani/items/fc16cf52d487cacd6fcb

# アップグレード手順

## OSのバージョン確認

```bash
plesk version | grep "OS version"
```

![2019-11-22_09h08_39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133291/d2b089e1-8e2a-8e92-6e64-760d2d619b9a.png)

## MySQLのデータをバックアップ

```bash
MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysqldump -u admin --all-databases --routines --triggers > /tmp/all-databases-5.1.sql
```

## MySQLを停止

```bash
service mysqld stop
```

## DBデータ自体をバックアップ

```bash
mkdir /var/lib/mysqlcopy-5.1
cp -aR /var/lib/mysql/* /var/lib/mysqlcopy-5.1/
```

## yumにMySQL5.5を提供しているAtomicリポジトリを追加

```bash
wget -q -O - http://www.atomicorp.com/installers/atomic | sh
```

![2019-11-22_09h09_32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133291/ef6c5655-b26b-7cac-79d6-bd6aa2179daf.png)

![2019-11-22_09h09_45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133291/901c69fe-1f62-ffd4-65f9-a41291c92b8f.png)


## mysqlをアップグレードする

途中、何度か確認事項がありますが、全て「y」で進み、最後に「Complete！」表示で完了です。

```bash
yum upgrade mysql
```

![2019-11-22_09h10_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133291/d9490602-4640-c5c5-c130-69d9debe0ec0.png)

![2019-11-22_09h10_15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133291/889ae0bc-bd89-da7a-2285-5646811e7ee3.png)

![2019-11-22_09h10_20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133291/13729f74-a6d0-4abc-65fc-202a84619f70.png)
![2019-11-22_09h10_55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133291/90764bfc-d65d-255a-87f5-8e46aeb2be6e.png)

![2019-11-22_09h11_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133291/957fe379-1b6c-84e5-7f7f-33a1b5a151d5.png)

![2019-11-22_09h11_12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133291/2ac9e272-7f54-1528-e5dd-01d6d8612e27.png)

![2019-11-22_09h11_53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133291/42f14583-f271-957d-a6c7-d135a99239aa.png)


## MySQL5.5を起動

```bash
service mysqld start
```

## DBデータをアップグレード

```bash
mysql_upgrade -uadmin -p`cat /etc/psa/.psa.shadow`
```

![2019-11-22_09h12_34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133291/3deed528-b143-4eb6-953e-06135e097f36.png)
![2019-11-22_09h12_42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133291/d437f3b6-f16e-5e48-3bff-3151e4c4fa20.png)

## MySQL5.5で動作確認

すでにMySQLで稼働中のWebアプリがある場合は、この時点で一旦、動作確認を行ってください。
問題ないようでしたら、MySQL5.6にアップグレードするために、次へ進みます。

## MySQL5.5から5.6にアップグレードするのでバックアップを再度、取得します。

```bash
MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysqldump -u admin --all-databases --routines --triggers > /tmp/all-databases-5.5.sql
```
## MySQL5.5を停止

```bash
service mysqld stop
```

## DBデータを再度、バックアップします。

```bash
mkdir /var/lib/mysqlcopy-5.5
cp -aR /var/lib/mysql/* /var/lib/mysqlcopy-5.5/
```

## Atomicリポジトリを無効化

「/etc/yum.repos.d/atomic.repo」の「enabled = 1」を「enabled = 0」に変更します。

```bash
vi /etc/yum.repos.d/atomic.repo

# Name: Atomic Rocket Turtle RPM Repository for CentOS / Red Hat Enterprise Linux 6 -
# URL: http://www.atomicrocketturtle.com/
[atomic]
name = CentOS / Red Hat Enterprise Linux $releasever - atomic
mirrorlist = http://updates.atomicorp.com/channels/mirrorlist/atomic/centos-$releasever-$basearch
enabled = 0 <= ここを1から0に変更
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY.art.txt
        file:///etc/pki/rpm-gpg/RPM-GPG-KEY.atomicorp.txt
gpgcheck = 1

# Almost Stable, release candidates for [atomic]
[atomic-testing]
name = CentOS / Red Hat Enterprise Linux $releasever - atomic - (Testing)
mirrorlist = http://updates.atomicorp.com/channels/mirrorlist/atomic-testing/centos-$releasever-$basearch
enabled = 0
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY.art.txt
        file:///etc/pki/rpm-gpg/RPM-GPG-KEY.atomicorp.txt
gpgcheck = 1
~
```

![2019-11-22_09h13_54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133291/3a107701-5c3e-41f5-5828-b068870c4069.png)


## MySQLのリポジトリを追加

```bash
yum install http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm
```

![2019-11-22_09h14_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133291/615ec32d-6c3f-e5b6-81f9-52ab0b28c558.png)

![2019-11-22_09h14_19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133291/1ddde826-c5d1-61b1-3110-1143edc38546.png)

![2019-11-22_09h14_29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133291/2be890e8-4794-f824-b276-dbf1b120cf30.png)


## MySQL5.7を無効化

「/etc/yum.repos.d/mysql-community.repo」を開いて、[mysql56-community]の「enabled=0」を「enabled=1」に変更し、 [mysql57-community]の「enabled=1」を0に変更します。

![2019-11-22_09h15_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133291/d2bc6f12-35d5-259e-3bb6-efe25f016026.png)

## MySQLパッケージを更新します。

途中の選択肢は、全て「y」で問題ないです。

```bash
yum install mysql
```
![2019-11-22_09h15_35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133291/b601f62c-b97e-87ca-0254-e318a0abbeab.png)

![2019-11-22_09h15_42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133291/75c0bd1f-67c8-01e8-8913-47b7f136b839.png)

![2019-11-22_09h16_15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133291/0cf26859-02e0-972e-e820-20536b5704c5.png)

![2019-11-22_09h17_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133291/a417bfe1-25ff-0fee-9352-07613269ffde.png)


## MySQLを再起動

```bash
service mysqld start
```

## MySQLのデータをアップグレードします。

```bash
MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql_upgrade -uadmin psa
```

![2019-11-22_09h17_35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133291/f0668835-74c7-8523-ed90-4d1c5b916e9f.png)

![2019-11-22_09h18_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133291/ff1b8e5b-a43e-cef5-3dbe-5fee078e7fad.png)


以上でMySQLの更新が完了です。
Plesk上でも確認ができます。


![2019-11-22_09h20_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133291/d2cb78ca-f8d6-d3ea-aed3-526d1f10f853.png)



# 【補足】/var/lib/php/sessionのパーミション確認

MySQLの更新にともなって、HttpdとPHPが再インストールされる場合があります。
この時に、「/var/lib/php/session」のパーミションが変更となってしまい、PHPをFastCGIで動かしている場合は、セッションが保存ができなくなる障害に直面しました。

このため以下の確認を行ってください。

以下の状態なら変更不要です。

```bash
ls -al /var/lib/php/
total 44
drwxr-xr-x  3 root root  4096 Aug 24  2016 .
drwxr-xr-x 39 root root  4096 Nov 27 03:50 ..
drwx-wx-wt  4 root root 36864 Nov 28 01:32 session
```

この状態だと修正が必要です。

```bash
ls -al /var/lib/php/
total 44
drwxr-xr-x  3 root root  4096 Aug 24  2016 .
drwxr-xr-x 39 root root  4096 Nov 27 03:50 ..
drwxrwx---  5 root apache 36864 Nov 20 10:50 session
```

修正する

```bash
cd /var/lib/php
chown root:root session
chmod 733 session/
chmod +t session
```

この設定だとsessionに書き込んだ情報がRoot以外は削除できなくなります。
Cronで定期的に掃除する必要があるそうです。
https://support.plesk.com/hc/en-us/articles/115004023093


# 【補足】perfonmance_schemaとtable_definition_cacheの調整

MySQL5.6にアップグレード後、メモリが急増しました。
アップグレード前が60MBぐらいだったのに、570MBまで増加しました（汗）

![2019-11-22_09h40_58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133291/1227a1df-7afe-61ed-fa28-9f0f0325f0f0.png)

調査をしてみると、MySQL5.6から「table_definition_cache」の初期値が変更になったことが原因のようです。

「/etc/my.cnf」に以下を追加し、mysqlを再起動しました。

```bash
vi /etc/my.cnf

[mysqld]
performance_schema=0
table_definition_cache=400
```

![2019-11-22_10h00_47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133291/8f2f36cd-1760-3d90-3712-2531082b2f23.png)


メモリが激減しました。

![2019-11-22_10h40_29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133291/1dcd2e75-92ed-f2ec-cfdb-a7644ddff4b1.png)


# 参考文献

* [Linuxで Plesk MySQL を 5.1 から 5.5 にアップグレードするには](https://support.plesk.com/hc/ja/articles/213367429)
* [﻿MySQL をバージョン 5.5 から 5.6 にアップグレードするにはどうすればよいですか？](https://support.plesk.com/hc/ja/articles/213403429)
* [How to upgrade MySQL 5.5 to 5.6/5.7 or MariaDB 5.5 to 10.0/10.1/10.2 on Linux?](https://support.plesk.com/hc/en-us/articles/213403429)
* [MySQL5.6 performance_schemaとtable_definition_cacheの調整](https://www.riscascape.net/archives/7348)