長年運用しているWordPressは…
当ブログはかなり長期間運用しています。WordPress自体はバージョンアップされますし、PHPも折りを見て新しいバージョンに変えています(と言っても、レンタルサーバの管理パネルで設定を変更するだけですが)。
データベースが古い
しかし、データベースのバージョンはそうも行かず、古いままになっています。今(2020年5月)現在のWordPressの動作要件を公式ページから抜き出します。。
WordPress を実行するには、以下のホスティング環境を推奨します
- PHP バージョン 7.3 以上。
- MySQL バージョン 5.6 以上、または MariaDB バージョン 10.1 以上。
- HTTPS 対応
<中略>
注意: 古いバージョンの PHP や MySQL しか使えない古い環境にいる場合でも、WordPress は PHP 5.6.20以上及び MySQL 5.0以上で動きます。しかしこれらの古いバージョンは既に公式でサポートが終了しており、サイトを脆弱性にさらす危険性があります。
このWordPressで使っているデータベースのバージョンを見てみると、5.1。
MySQL 5.0以上なら動作することにはなっていますが、推奨環境が5.6以上であることを考えると、いかにも古い。「サポートが終了」しているというトドメの文句もありますし。ということで、データベースのバージョンアップをやってみます。
データベースのバージョンアップ方法
データベースのバージョンアップには二つの方法が考えられます。
- 新しいデータベースを用意し、そこにデータを引っ越す(WordPress本体はそのまま)。
- WordPress自体を新しくインストールして丸ごと引っ越す。
今使っているレンタルサーバはさくらのレンタルサーバで、これにはデータベースアップグレード機能というのがあります。これを使えば簡単だろうと思ったのですけど、5.1だと古すぎてこの機能は対応していませんでした。
仕方がないので、WordPress丸ごと引越し作戦でいきます。
新しいWordPressに引越し → やっぱりやめる
新しくWordPressをインストールすれば、データベースも新しくなります。今どきは、クイックインストールがあるので、WordPressのインストールも簡単です。
別のレンタルサーバに引っ越すのなら、簡単です。以前書いた記事の通り。WordPressを引っ越して、DNSを書き換えたらおしまいです。
でも、今回は同じサーバ上で行うのですから、ちょっと別の工夫が必要。手順をまとめるとこんな感じ。
- All-in-One WP Migrationでエクスポート
- 現状のWordPressを削除
- 新しいWordPressをインストール
- 新しいWordPressでAll-in-One WP Migrationのインポート実行
これでいけるはずです。WordPressを消してしまうという動作が入りますが、これがちょっと怖いところ。そこで、まずは、テスト用に別のURLでWordPressを用意してそちらに引っ越してみます。これでちゃんと引っ越せる(エクスポートしたデータに問題がない)ことを確認した上で、本番の新サイトを作ることにします。
では、早速、All-in-One WP Migrationでエクスポートします。
あら、なんと、751MBもあります。これだとこのプラグインを使っての引越しはできません。最大でも512MBですので。もちろん、有料の拡張機能を導入するという手はありますが、無料でなんとかしたいところ。
でかいのは画像でしょうから、それを入れずにエクスポートすればいいかもしれません。
「高度なオプション」のメニューを開き、「メディアライブラリをエクスポートしない」にチェックを入れました。
これなら512MB以下に収まってくれました。WordPress自体の引越しはこれでできるはずです。その後に、メディアライブラリをFTPで転送すればいいはず。
これで進めようと思ったのですが、「メディアライブラリ」がどの範囲なのかが不明瞭。アップロードした画像だけでなく、EWWWで圧縮しているので、そのバックアップファイルなどがどうなるのだろうかとか。まぁ、それらしいものをすべて転送すれば大丈夫だろうとは思いますが。
などと考えていたら面倒になったので、データベースだけの引越しに変えます。
データベースの引越し
では、改めてWordPressのデータベースだけの引越しを考えます。
やるべきことは、上にも一度リンクを掲載した、さくらのヘルプページで説明されています。もう一度、載せておきます。
このヘルプページはデータベースのバージョンアップ機能の解説です。この中にデータベースをバージョンアップした際のWordPressの設定変更方法が説明さています。データベースのバージョンアップのサービスを使わずに、というか、使えないので、そこを手動で行います。
手順をまとめます。
- 現在のデータベースからエクスポート
- 新しいデータベースを作成
- エクスポートしたデータを新しいデータベースにインポート
- WordPressの設定ファイルを新しいデータベース用に編集
これでいけるはずです。これならデータベースが変るだけで、今のWordPressがそのまま使えます。
では、順にやっていきます。
エクスポート
まずは、今使っているデータベースからエクスポートします。そのために、サーバにFTPで接続して、今のWordPressの設定状況を調べます。
wp-config.phpを開きます。
DB_NAME、DB_USER、DB_PASSWORD、DB_HOSTの情報を控えておきます。
table_prefixも控えます。
サーバの管理画面を開きます。
データベースサーバがWordPressのDB_HOSTと一致していることを確認しす。データベース名もDB_NAMEと一致しているはずです。「phpMyAdmin」にログインします。ログインに必要なユーザ名とパスワードは、それぞれ、DB_USER、DB_PASSWORDです。
左のメニューからデータベースを選択します。DB_NAMEのものです。
「エクスポート」タブを開きます。
エクスポート対象は、table_prefixと一致するものだけです(table_prefixの文字列で始まっているものすべてです)。エクスポート形式はSQL、オプションはいじらず標準のまま。「ファイルに保存する」のところで「zip形式」を選びます。あとは「実行する」を押せばOKです。
zip形式を指定したので、その処理の少し時間が借ります。しばらくすると、ファイル保存のダイアログが出てきます。
このファイルを保存すればエクスポートは完了です。ちなみに、圧縮なしにすれればファイル保存のダイアログはすぐに出てきますが、ファイルがすごく大きいのでダウンロードに時間がかかります。
新データベース作成
サーバの管理画面で新しいデータベースを作ります。
必要事項を入力して「作成する」を押せばすぐにできあがります。
インポート
今作った新しいデータベスにphpMyAdminでログインします。
「インポート」タブを開きます
先程エクスポートしたファイルを指定します。説明にある通り、ドラッグ&ドロップでOKです。なお、最大のサイズが32MiBに制限されています(サーバによります)。zip形式でダウンロードしたものは6MB弱でしたので大丈夫です。
余談ながら、「MiB」は「メビバイト」と読みます。「1024×1024」のことです。「メガバイト」だと「1000×1000」なのか「1024×1024」なのか曖昧なので、それを避けるためのものです。ご想像どおり、1024は「KiB(キビバイト)」です。
ファイルをドラッグ&ドロップするとすぐに読み込まれます。
ここまではいいのですが、ここから一向に進みません。しばらく待ってもダメだったので「キャンセル」しました。「構造」を開いてみると、こんなふうに、一見インポートできたように見えます。
しかし、本当に成功しているのか不安なので、一旦、すべてのテーブルを削除しました。上のようにすべてにチェックして「削除」を選びます。
一旦、空に戻して、再度インポートを行います。
時間がかかるのか思って放置していたら、タイムアウトエラーが出ました。残念ながらそのエラー画面をキャプチャし損ねたので、再度テーブルを空にし、またインポート。そしたら、今度は成功しました。
エラーになった原因もわかりませんし、成功した要因もわかりません。「何度かインポートをやってみたら、そのうち成功した」としか言いようがありません。
やや不安ではありますが、一応は「成功」となっているので、これで進めてみます。元のデータベースはそのまま残っているので、その点は安心ですから。
サーバの管理画面上でもそれなりの使用量になっています。
WordPressのデータベース接続先変更
では、WordPressが接続するデータベースを新しいものにします。wp-config.phpを編集します。
DB_NAME、DB_USER、DB_PASSWORD、DB_HOSTを新しいものに変えます。
古いものは行頭に「//」を付けてコメント化して残しておきました。これなら、もし問題があったときに元に戻すのが容易ですので。
この修正が終ったものをFTPでアップロードすれば完了です。
WordPressが問題なく動けばOKです。いくつかの記事がちゃんと読めること、テスト記事が投稿できることくらいは確認しておくべきだと思います。この記事は新しいデータベースにしたあとで書いているものです。問題なく新規投稿できているので大丈夫でしょう。インポートでトラブルがあったので心配ではありましたが。
また、副次効果として、WordPressの記事の表示が若干速くなったように思います。本当は、劇的に速くなるんじゃないかと少し期待していたのですが、それほどではありませんでした。ホンの気持ち速くなった程度。それでも改善には違いないです。
しばらく運用して問題がなければ、古いデータベースから当該WordPressのテーブルを削除しておくと良いと思います。テーブルの削除方法はこちらの記事を参考に。
そのデータベースを使っているアプリケーションが他にないのなら、データベース自体を消してOKです。自信がなければ、当面は、データベース自体はそのまま置いておくのが安全だろうと思います。