はじめに
Pleskで管理されたCentOS6.10のMySQL5.1を5.6までアップグレードしたので、その記録になります。
Pleskのサポートでは、以下の2記事がありますので、これを見ながら5.1から5.6へアップグレードしました。
CentOS7の方がMariaDB5.5を更新する場合は、以下を御覧ください。
https://qiita.com/idani/items/fc16cf52d487cacd6fcb
アップグレード手順
OSのバージョン確認
plesk version | grep "OS version"
MySQLのデータをバックアップ
MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysqldump -u admin --all-databases --routines --triggers > /tmp/all-databases-5.1.sql
MySQLを停止
service mysqld stop
DBデータ自体をバックアップ
mkdir /var/lib/mysqlcopy-5.1
cp -aR /var/lib/mysql/* /var/lib/mysqlcopy-5.1/
yumにMySQL5.5を提供しているAtomicリポジトリを追加
wget -q -O - http://www.atomicorp.com/installers/atomic | sh
mysqlをアップグレードする
途中、何度か確認事項がありますが、全て「y」で進み、最後に「Complete!」表示で完了です。
yum upgrade mysql
MySQL5.5を起動
service mysqld start
DBデータをアップグレード
mysql_upgrade -uadmin -p`cat /etc/psa/.psa.shadow`
MySQL5.5で動作確認
すでにMySQLで稼働中のWebアプリがある場合は、この時点で一旦、動作確認を行ってください。
問題ないようでしたら、MySQL5.6にアップグレードするために、次へ進みます。
MySQL5.5から5.6にアップグレードするのでバックアップを再度、取得します。
MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysqldump -u admin --all-databases --routines --triggers > /tmp/all-databases-5.5.sql
MySQL5.5を停止
service mysqld stop
DBデータを再度、バックアップします。
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」に変更します。
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
~
MySQLのリポジトリを追加
yum install http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm
MySQL5.7を無効化
「/etc/yum.repos.d/mysql-community.repo」を開いて、[mysql56-community]の「enabled=0」を「enabled=1」に変更し、 [mysql57-community]の「enabled=1」を0に変更します。
MySQLパッケージを更新します。
途中の選択肢は、全て「y」で問題ないです。
yum install mysql
MySQLを再起動
service mysqld start
MySQLのデータをアップグレードします。
MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql_upgrade -uadmin psa
以上でMySQLの更新が完了です。
Plesk上でも確認ができます。
【補足】/var/lib/php/sessionのパーミション確認
MySQLの更新にともなって、HttpdとPHPが再インストールされる場合があります。
この時に、「/var/lib/php/session」のパーミションが変更となってしまい、PHPをFastCGIで動かしている場合は、セッションが保存ができなくなる障害に直面しました。
このため以下の確認を行ってください。
以下の状態なら変更不要です。
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
この状態だと修正が必要です。
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
修正する
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まで増加しました(汗)
調査をしてみると、MySQL5.6から「table_definition_cache」の初期値が変更になったことが原因のようです。
「/etc/my.cnf」に以下を追加し、mysqlを再起動しました。
vi /etc/my.cnf
[mysqld]
performance_schema=0
table_definition_cache=400
メモリが激減しました。