Help us understand the problem. What is going on with this article?

Pleskで管理されたCentOS7のMariaDBを5.5から10.3にアップグレード

はじめに

VPSにCentOS7を選択肢、Pleskで管理を行っています。
デフォルトのDBがMariaDB5.5でしたので、MariaDB10.3にアップグレードしました。
その手順になります。

Pleskがなければ、yumでサクッとアップグレードしちゃいますが、Pleskでシステム管理をする関係上、Pleskに寄り添ったアップグレードをする必要があります。

実際のアップグレードの手順は、PleskのサイトでHow to upgrade MySQL 5.5 to 5.6/5.7 or MariaDB 5.5 to 10.0/10.1/10.2 on Linux?に掲載がされていますので、この手順どおりになります。

また、補足として、MariaDB10.2からSQLモードのデフォルト値が変更になりましたので、その補正設定も最後に追記しています。古いWebアプリを利用する場合はご確認ください。

初心者の方にも理解できるようにスクショ多めにしてみました。

CentOS6のMySQL5.1から5.6にアップグレードする場合は、以下を御覧ください。
https://qiita.com/idani/items/2775d48955cd5f78aaf4

注意

2019/11/27 現在、 MariaDB10.3が利用可能なのは、Plesk Obsidianのみです。
Onyxとそれ以前はサポートしていませんのでご注意ください。

Pleskにログインをして、右側のサイドバーの「システム概要」にPleskのバージョンは記載があります。

2019-11-27_23h11_21.png

アップグレード手順

OSとMariaDBのバージョン確認

この記事でCentOS7と銘打っているのですが、この記事を見た方のOSがCentOS7ではないかもしれません。
きちんと確認をしましょう。

# plesk version | grep "OS version"
 OS Version: CentOS 7.7.1908 x86_64

# rpm -qa | grep -i maria
mariadb-5.5.64-1.el7.x86_64
mariadb-server-5.5.64-1.el7.x86_64
mariadb-libs-5.5.64-1.el7.x86_64
mariadb-devel-5.5.64-1.el7.x86_64
plesk-libmariadbclient-1.0-1.0.0-1centos.7.190329.1026.x86_64
sw-mariadb-client-1.0.0-centos7.16102516.x86_64
plesk-libmariadbclient-3.0-3.0.9-1centos.7.190417.1743.x86_64

image.png

既存のDBのバックアップ

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

MariaDBの停止

# service mariadb stop

2019-11-27_10h54_49.png

mariadb-benchのような追加パッケージの削除

デフォルト状態ではインストールされていませんでした。

# rpm -e --nodeps mariadb-bench
error: package mariadb-bench is not installed

DBデータの実態をバックアップします。

# cp -v -a /var/lib/mysql/ /var/lib/mysql_backup

2019-11-27_10h55_32.png

mysql-severがインストールされていないか確認する

念には念を入れてということですね。

# rpm -q --whatprovides mysql-server
インストールされていない場合
 no package provides mysql-server

インストールされている場合は、以下で削除する

# rpm -e --nodeps `rpm -q --whatprovides mysql-server`

2019-11-27_10h56_17.png

MariaDBのサイトで、リポジトリ情報を取得する

Setting MariaDB 10.3 repositoriesで、MariaDB10.3のリポジトリ設定情報を取得する。

10.3以外も選択ができます。

2019-11-27_10h59_47.png

リポジトリ情報を書き込みます。

vi /etc/yum.repos.d/MariaDB.repo

viで開くと新規ファイルなので、空の状態です。
先のサイトで取得した設定を書き込ます。以下は10.3の情報です。

# MariaDB 10.3 CentOS repository list - created 2019-11-27 14:30 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

MariaDBのアップデートを行います。

途中、選択肢がでた場合は、「y」キーで問題ないです。
最後に、「Complete!」と表示されたら、インストールは完了です。

# yum install MariaDB-client MariaDB-server

2019-11-27_11h02_58.png

2019-11-27_11h03_57.png

2019-11-27_11h04_41.png

2019-11-27_11h05_30.png

MariaDBを起動します。

# service mariadb start

2019-11-27_11h06_21.png

MySQL5.5のデータベースをアップグレードします。

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

2019-11-27_11h07_11.png

2019-11-27_11h07_33.png

MariaDBを再起動します。

# service mariadb restart

Pleskの内部パッケージのバージョンを更新する。

# plesk sbin packagemng -sdf

起動スクリプトの修正

mysqlを止めます。
# systemctl stop mysql; killall mysqld
mysqlの起動スクリプトを削除します。
# rm /etc/init.d/mysql && systemctl daemon-reload 
mariadbを登録します。
# systemctl start mariadb
OSの起動時にMariaDBも起動するように指定します。
# systemctl enable mariadb

Plesk上でバージョン確認

2019-11-27_11h14_18.png

【補足】SQL_modeの変更

MariaDB 10.2以降は、デフォルトでsql_modeが変更されて、SQLを厳格にチェックするようになりました。
このためMySQLを利用する古いWebアプリが動かない場合がありますので、修正をします。

server.cnfの[mariadb]の欄に「sql_mode=''」を追記し、サーバを再起動します。

# vi /etc/my.cnf.d/server.cnf

[mariadb] 
sql_mode='' <=追加

# service mariadb restart

2019-11-27_11h20_58.png

その後、コマンドラインでも、PHPMYADMINでも、sql_modeを確認して空欄になっていればOKです。

2019-11-27_11h23_57.png

参考文献

idani
井谷(いだに)と申します。 前職では、cakePHPとjQueryとVue.jsを使って、メール配信、SMS配信、セミナー募集システム、かんたんな決済処理、アフィリエイトシステムなどを開発していました。 使える言語は、C、C++、Perl、C#、PHP、JSになります。 昔々、Gentoo Linuxの翻訳作業をしていました。
https://hirotae.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away