タイトル通りの報告記事です。
- 概要
- 条件
- 作戦
- まとめ
1. 概要
はてなブログに来る前にはMicrosoft Azure
にWordPress
を立ててブログを書いてました。
しかし、うっかりバックアップ無しでWordPress
を更新して環境をブッ壊しました。
Azure Portal
上でWordPress
の再起動を試しても失敗し続けたため「これはもうダメかな…?」と思い、また以前からWordPress
の機能を持て余していた節もあったので、引っ越しを決意しました。
最終的には
- 元サーバーの復帰は完全に諦めた
- ブログの文面は頑張って持ってくる
- 画像の拾い上げは諦める
という落としどころを決めて、約4時間の作業で引っ越せました。
2. 条件
- バックアップを取ってない
- 死んだサーバーの再起動はできない
- データベースは生きていて、エクスポートしたファイル(
.sql
)が取れる
本記事の対象読者は既にやらかしてしまい、「いまさらバックアップとか言われても…」という方です。
「バックアップ取れよ!」は正論ですが、本記事内に限ってはタブーです。
また、本記事は普段DBとか触らない人が書いてる点にご注意下さい。
(「VSCode
でSQLを見たらシンタックスハイライトで何となく分かる」程度を想定)
3. 作戦
以下の手順でだいたいの投稿文が拾えます。
- 死んだ
WordPress
のデータベースを.sql
としてエクスポート - さくらインターネットに新しくサーバーを立て、新規に
WordPress
とDBを用意 - 1でエクスポートしたDBを整形して、2のDBにインポート
- WordPressが記事を読み込めてるかチェックし、標準機能でエクスポート
- はてなブログの標準機能を使い、4のエクスポートしたファイルを読み込む
- ドメインの再設定をしてhttps化
※さくらインターネットは登録とDBアクセスが簡単なので使いましたが他でも多分行けます。
基本的には各手順それぞれググれば実施できますが、3の「エクスポートしたDBを整形して…」の所を少しだけ細かく。
まず3の手順に入る前にWordPress
を立ち上げ、admin
ユーザーの登録まで済ませておきます。
そののち、エクスポートした.sql
ファイルを以下の観点で修正してインポートさせました。
必要なテーブルだけ残す
エクスポートした.sql
のうち、投稿文っぽい所だけ拾い上げます。
VSCodeなどでファイルを開いてDROP TABLE IF
とかで検索すると、十数個のテーブルを復元するためのSQL文が見つかります。
このうち、投稿文の引っ越しに必要なのは一部だけなので、そこだけを残します。
私の場合、本文とタグまで雰囲気残ってれば良いや、とザツに考えて以下のテーブルを拾い上げました。
postmeta
posts
term_relationships
term_taxonomy
termmeta
terms
コメント関係のテーブルも残したければ残していいと思います。
逆に、users
テーブルは下手に残すとさくらインターネット側で設定したログイン設定を上書きして少しだけ面倒なので、よく分からなければ消しておくのが無難です。
テーブル名が違ったら揃える
例えば私の手元環境だと、postmeta
テーブルが以下の名前でそれぞれ保存されていました。
.sql
ファイル中のテーブル名:wp_postmeta
- さくらインターネットのDBテーブル名:
wpdb123bpostmeta
.sql
ファイル側のテーブル名を修正し、さくらインターネット側のDBテーブル名に揃えておきます。
このとき、直接実行するSQL文以外でも下記のような間接命令で使われるテーブル名も直します。
/*!40000 ALTER TABLE `wp_terms` DISABLE KEYS */;
なお、テーブル名の指定が多少間違ってても書き直して再インポートするだけなので、エラーを見て直すのもアリです。
4. まとめ
古い記事の画像が無くなったのは痛いですが、結果的に維持コストが下がって気軽に記事投稿できる体制に移れたので良しとします。(あと表示速度はむしろ上がったような…。)
それと末筆ながらMicrosoft Azure
への礼も一言。
Azure
とWordPress
の環境は大学院時代に立ててみて4年ほど運用した環境です。
当時は「ブログ作るって難しい?」という好奇心で使い始め、実際勉強で使うには良い環境でした。
ただしhttps
化の圧が強まってきたころに使い勝手が若干悪かったりして億劫になり、最終的に今に至る感じです。
自力でのWordPress
は勉強とかスキルのアピールには良いんですが、「ちょこっと技術ネタ+ポエム書きたい」なら、やはりはてなブログに軍配が上がりますね…。