まだこのブログが小さいうちにバックアップのことを考えようと思うんだ。
バックアップ?
(めったにないけど)レンタルサーバー側の障害で万が一サーバが壊れたりデータがなくなってしまったり、自分の作業ミスでブログの大事な設定を変更してしまって元に戻せなくなったり。この世に「絶対大丈夫」はないんだ。だから定期的に正常な状態を複製して保存しておくのが基本なんだ。
特にwordpressはデータベースを利用しているので、単なるファイルコピーだけじゃバックアップできないのでしっかりデータベースのバックアップを考えないといけないよ。
備えあれば憂いなしにゃ。
DBバックアップのやり方は大きく3つ
ネットの情報を見ると、大きく3つのバックアップのやり方が紹介されています。
wordpressのプラグインを使うのが一番簡単なんだけど、結局「他人に運命をゆだねる」ことになるリスクはつきもの。プラグインがバグを抱えていたり、思ったようにリストア(データを元に戻すこと)ができなかったり。
今回はプラグイン以外の方法として上記の2と3を紹介します。
これができればwordpressがどういう構造になっているかも理解できて一石二鳥!
わくわくにゃ。
xserver管理画面からMySQLユーザーを確認
まずデータベース(MySQL/MariaDB)にアクセスするための情報を集めましょう。
xserverを例に説明します。
サーバー管理画面から「MySQL設定」に行き、アクセス権所有ユーザーがいることを確認しましょう。デフォルトで1ユーザーはいると思います。今回はそのユーザーを使います。
最初パスワードは実は別のファイルに記載されているので探してもいいですが、思い切って変えちゃいましょう。ここで入れたパスワードを使いますので覚えておきましょう。
phpMyadminからのバックアップ
phpMyadminとは、MySQLにwebブラウザからアクセスできるツールです。アクセス方法はxserverではサーバ管理画面からアクセスできます。ユーザー名とパスワードを聞かれるので先ほど確認したものを使ってください。
ログインすると、下記のようなが面が出てきます。初めて見る方は落ち着いてください。wordpressで使われているデータベースを選んで(xserverの場合は、xxx_wp1でした)、すべてのテーブルにチェックをいれてエクスポートを実行します。※まだこの段階では何も起こらないので安心してください。
すべてのテーブルが含まれていることを確認します。
オプションを選択します。リストアで使いやすいように、「リストア先のテーブルを空にしてかInsertする」ためのオプションをいくつかチェックしておきます。
詳しい説明は省くけど、データベースのバックアップの考え方として、「そのデータを作るためのコマンドを羅列する」ということなんだ。例えば、すでに100行のデータがあれば、バックアップデータは「100行のデータ」ではなく、「100行のデータを生み出すコマンド」が並んでいると考えるとわかりやすいよ。だから、リストアするときに「まずすでに存在している100行のデータは全部消してから新たに100行書き込むコマンドを流す」という感じだよ。
最後に実行をクリックすると、ブラウザからダウンロードされます。
ダウンロードしたファイルを日付毎にしっかり管理しましょう。
以上でphpMyadminを使ったバックアップは終わりです。
思ったより簡単にゃ。
mysqldumpでバックアップ
この方法は、直接サーバにログインしてデータベースであるmysqlを操作するやり方だよ。
まず、レンタルサーバへsshでログインしmysqlへアクセスできるか確認します。
初めてsshでのログインする方は、こちらを参考にしてください。
[xserverhost public_html]$ mysql -uYOUR_USERNAME_wp1 -hlocalhost -p
Enter password: ←mysqlのパスワード≠サーバーのパスワード
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 115004
Server version: 10.5.11-MariaDB-log MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| YOUR_USERNAME_wp1 |
+--------------------+
2 rows in set (0.001 sec)
バージョンの確認もついでに。
MariaDB [(none)]> use YOUR_USERNAME_wp1;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [YOUR_USERNAME_wp1]> select version();
+---------------------+
| version() |
+---------------------+
| 10.5.11-MariaDB-log |
+---------------------+
1 row in set (0.000 sec)
確認が終わったらいったんmysqlから出ましょう
MariaDB [(none)]>exit
さて、この後実際のバックアップコマンドであるmysqlumpを実行していきますが余談です。
本来であれば、mariabackupというイケてるコマンドが使えます。残念ながらxserverではmariabackupをインストールするためのyumコマンドが使えないので今のところあきらめます。
[xserverhost ~]$ yum search MariaDB-backup
読み込んだプラグイン:fastestmirror
Determining fastest mirrors
base | 3.6 kB 00:00
epel | 4.7 kB 00:00
extras | 2.9 kB 00:00
mariadb | 3.4 kB 00:00
mod-pagespeed | 951 B 00:00
updates | 2.9 kB 00:00
(1/4): extras/7/x86_64/primary_db | 243 kB 00:00
(2/4): epel/x86_64/updateinfo | 1.0 MB 00:00
(3/4): epel/x86_64/primary_db | 7.0 MB 00:00
(4/4): updates/7/x86_64/primary_db | 11 MB 00:00
mod-pagespeed 10/10
========================= N/S matched: MariaDB-backup ==========================
MariaDB-backup-debuginfo.x86_64 : Debug information for package MariaDB-backup
MariaDB-backup.x86_64 : MariaDB: a very fast and robust SQL database server
Name and summary matches only, use "search all" for everything.
[xserverhost ~]$ yum install MariaDB-backup
読み込んだプラグイン:fastestmirror
このコマンドを実行するには root である必要があります。
[xserverhost ~]$
昔ながらのmysqldump方式でバックアップを実施します。
最終的には、cronに設定して定期的に実行する形をとるのでバックアップ用のshell scriptファイルとして作っておきます。
#!/bin/sh
#backup.sh
DATE=`date +%Y%m%d`
BkupDir="/home/<user>/<サイトドメイン.com>/backup"
User="<mysqlユーザー>"
Pw="<mysqpパスワード>"
DB="<wordpressのDB名>"
mysqldump -u ${User} -p${Pw} -h localhost -q --single-transaction --add-drop-da
tabase ${DB} > ${BkupDir}/${DATE}_${DB}.sql
変数{}は環境に合わせて変更してください。
また、バックアップファイルの増大や過去ファイルの自動削除はここでは考慮されていませんのであしからず。ディスクフル(容量超過)にならないように定期的に削除が必要です。
そして、、、
何度か必ずテストしましょう。
例えば、-xオプションで
・変数{}が正しく展開されているかどうか
・mysqlに正常にログインできているのか
・バックアップ先のディレクトリが正しいのか、存在しているのか
などは確認しましょう。
sh -x backup.sh
[番外編]画像ファイルの場所
アイキャッチ画像などのファイルはDBにあるのでしょうか?
いえ、画像ファイルはDBの外にあります。
/home/<YOUR_USERNAME>/<サイトドメイン>.com/public_html/wp-content/uploads/
データベース上にはこのファイルのパス(場所)が格納されている構造です。
~抜粋~
./wp-content/uploads/2021/08/キャッチ_Xserver超簡単.png
./wp-content/uploads/2021/08/キャッチ_Xserver超簡単-300x223.png
./wp-content/uploads/2021/08/キャッチ_OCNモバイルワン.png
./wp-content/uploads/2021/08/キャッチ_OCNモバイルワン-300x141.png
次回はリストア方法について解説します。
コメント