エックスサーバ「MySQL移行ツール」でMySQL5.0からMySQL5.7へバージョン移行してみた


WordPressの新機能「サイトヘルスチェック」でデータベースが古いことを指摘されてしまったので、MySQLのバージョンアップをしてみました。
※「サイトヘルスチェック」記事は下記を参照ください。
WordPressの新機能「サイトヘルスチェック」でトラブルを未然に防ごう

環境はエックスサーバで、当サイト自体が古い(8年程度)こともあり、データベースのバージョンも最新の物では無いことに気が付きつつ、移行が面倒そうで放置していました。
PHPのバージョンアップは簡単ですが、データベースの場合はホスト間を移動するので、後回しになっていたのです。

今回、「サイトヘルスチェック」でアラート(レコメンド、なので軽い方ですが)が表示されたのを機に、エックスサーバの「MySQL移行ツール」を使い、現在のMySQL5.0から最新バージョンMySQL5.7へバージョンを移行したので、手順を紹介致します。

エックスサーバ「MySQL移行ツール」の概要

公式マニュアルはこちら

『MySQL移行ツール』は、旧バージョンのMySQLデータベースについて、最新バージョンのMySQLへの移行を補助するツールです。

本ツールでは、旧バージョンのMySQLと同じ内容のデータベースとMySQLユーザを、最新バージョンに作成します。
ご利用のプログラムにて設定のMySQLホスト名を移行先MySQLのホスト名に変更するのみで、最新バージョンのMySQLデータベースを利用することが可能になります。
エックスサーバ「MySQL移行ツール」

MySQL5.0や5.5を利用している古いユーザー向けで、現行のMySQL5.7データベースを利用しているユーザーには無関係の機能です。
4年くらい前にエックスサーバで他に新規アカウントを作成した時は最初からMySQL5.7が利用できたので、少なくともそれ以前のユーザーはMySQLのバージョンを確認してみましょう。

移行とは言っても、新規データベース用の別のホスト(サーバ)に旧データベースのデータベース名、ユーザー名、パスワードをそのままコピーするので、移行を実行しても現行サイトがいきなり閲覧できなくなるようなことはありません
※完全に移行を確認した後は旧DBの削除が必要です。

バージョン移行できないケース

いくつか注意点がある様子です。
1・MariaDB5.5(旧MySQL5.0)、MariaDB5.5(旧MySQL5.5)、MySQL5.7のいずれか2つ以上に同名のユーザ・データベースが存在する場合
2・移行するデータベースの容量が、1GBを超えている場合
3・MySQLユーザのパスワード保存形式が移行できない形式の場合

どれも大きな問題では無いか、もし当てはまるケースがあっても修正できそうです。
1は古いデータベース情報(MySQL5.0/5.5)を現行データベース(MySQL5.7)にコピーするので、上書き防止の為でしょう。

2については、WordPressサイトの場合、ファイルを含めたサイト全体で1GBを超えることはあってもデータベースが1GBを超えることはほぼ無いでしょう。
また、エックスサーバ自体のデータベース容量が(1データベース毎に)1GBなので、サイトが運用できている状態なら問題ありません。

3が額面どおりに保存形式(エックスサーバ側のパスワードハッシュ化/暗号化方法の変更含めた内部仕様)の事か、パスワードに許可された文字列が旧DBと新DBで異なる、という意味なのか(この時点では)分かりません。
前者の場合は、今までと同じパスワードを保存し直せば良いだけ、というケースが多いです。
※移行作業にて、前者であることを確認しました。

「MySQL移行ツール」利用中の注意点

ツール利用中は、データベースとMySQLユーザの作成が行えなくなります。
DBのテーブル操作等は問題無く行えるので、既存のワードプレスの運用に影響はありませんが、可能な限り一気に作業する方が良いでしょう。
例えば、MySQL5.0(旧バージョン)に10個データベースがある場合、1日一個ずつ作業、というよりは、2時間程度の時間を作り、全部片付ける感じです。

移行完了時に必要な作業

エックスサーバのサーバパネルにログイン後、「MySQL移行ツール」をクリックします。

「MySQL移行ツール」初期画面

下部に、「移行時に必要な作業について」の記述があります。

MariaDB5.5(旧MySQL5.0)から移行した場合
MariaDB5.5(旧MySQL5.0)ホスト名 【mysql○○.xserver.jp】から、MySQL5.7ホスト名 【mysql△△.xserver.jp】に変更

MariaDB5.5(旧MySQL5.5)から移行した場合
MariaDB5.5(旧MySQL5.5)ホスト名 【mysql○○.xserver.jp】から、MySQL5.7ホスト名 【mysql△△.xserver.jp】に変更

○○、△△等のホスト名は環境により変わります。

WordPressサイトの場合は、「wp-config.php」を書き換えることになります。

「MySQL移行ツール」を使ってみる

とりあえず移行ツールボタンを押して、移行を開始します。

いきなりアラートです。
【下記のMySQLユーザのパスワード情報は、MySQL5.7に移行することができない形式で保存されており、MySQL移行ツールを開始することができません。】

利用中の多くのMySQLユーザのパスワードが、移行できない形式で保存されているとの事です。

ここで表示されているMySQLユーザのリストの中には、今回バージョン移行したいデータベースで利用しているユーザーは無かったので、構わず続けようとしますが、「続ける」的なボタンが見当たりません。
 
これ全部なおさんと進められないんか〜い!
 
というわけで、地道にパスワードの保存形式とやらを直すことにします。

SQL設定画面に移動。

まず、先程のアラートのリストにあったユーザーを適当に選び、パスワードの変更を押します。

ここで試しに、今までと同じパスワードを入力し、保存します。

もう一度、「MySQL移行ツールの利用を開始する」ボタンを押します。

先程パスワードを変更(以前と同じものを入力)したユーザーがアラートのリストから消えていました。
※例えば10個のリストが9個になっている、という事です。

つまり、「パスワード自体は変える必要は無く、もう一度同じものを使っても良い」という事です。

リストに上がっていたユーザーはかなり昔に作ったので、MD5やSHA1等のハッシュ化関連のセキュリティがより強固になった、ということでしょう。
パスワード自体は変えなくても良いので、その場合はwp-config.phpのデータベースユーザー部分は変える必要はありませんね。

使っていないユーザーもかなりあったので、地道に削除したり、パスワードを変更したりして進めます。

さくさくと削除し、アラートに表示された全てのユーザーを処理したところでもう一度
「MySQL移行ツールの利用を開始する」ボタンをクリックします。

やっとあるべき画面が表示されました。

該当のデータベースの「移行(確認)」をクリックします。

「MySQL5.7データベースを追加しますか?」の確認画面が表示されるので、
「MySQL5.7へデータベースの追加(確定)」ボタンをクリックします。

「データベースの移行を完了しました。」メッセージが表示されます。

「MySQL設定」から確認します。
無事、同名のデータベースとユーザーがMySQL5.7に追加されています。

データベース移行後の処理

後は参照するデータベースを変更したいタイミングでWordPressの「wp-config.php」のMySQLのホスト名部分を書き換えれば完了です。
wp-config.phpはWordPressをインストールしたルートフォルダにあります。

wp-config.phpを書き換え、FTPで上書き。

WordPressの「サイトヘルス」のRecommended improvementから「古いデータベースサーバー」の表記も消えました!

※「PHPの更新をおすすめします」については、WordPressのレコメンドがPHP7.3、エックスサーバが現時点で対応しているのがPHP7.2~なので対応待ちです。
詳しくは下の記事の「WordPressの新機能「サイトヘルスチェック」を使ってみる」を参照ください。
WordPressの新機能「サイトヘルスチェック」でトラブルを未然に防ごう

注意!旧データベースは自分で消さなくても大丈夫です

WordPressの表示を確認しても、旧データベースはそのままにしておきましょう。
※最終的な工程で削除されます。

私は「MySQL移行ツール」の、該当のデータベースの「DB削除(確認)」ボタンをクリックして旧データベースを削除しようとしましたが

移行したばかりの「MySQL5.7」を消すよ!!という意味であったことに気が付き思いとどまりました。

「MySQL移行ツール」の完了

「MySQL移行ツール」ページ内にある全てのデータベースの移行(使わないのであれば、削除した方が楽です)と、そのDBを利用したサービス(ワードプレス等)の表示の確認が完了したら、「移行完了手続き」の「バージョンをMySQL5.7に移行する(確認)」をクリックして、ツールを終了しましょう。

「MySQL移行ツール」の利用中は、データベースとMySQLユーザの作成が行えなくなるので、可能な限り完了させておく必要があります。




Blogカテゴリー一覧

WordPressウェブ制作・運用動画・クリエイティブ素材便利ツール便利ワザ子育てその他