wordmoveで「push」と「pull」を間違って実行してしまった人は必見です。リカバリ方法をまとめています。
pushとpullを間違って実行してしまった!
大丈夫です! 元に戻せます!
本番環境とローカル環境を同期させるために便利なwordmove。
しかし、間違って逆方向にデータをデプロイしてしまうと、悲惨なコトに。
実は、wordmoveはデプロイするときに、自動でバックアップを取ってくれています。
本記事では、誤って逆方向にwordmoveでデータベースをデプロイしてしまった場合の復元方法をまとめました。
この記事を書いた人
ゆめ ただ
グログ歴 5年目。
普通のビジネスマンとして働きながらFIREを目指す。
独学でゼロからブログを立ち上げる。
Dockerのローカル仮想環境を作りLinux環境も触るように。
4年目でSEO検定1級に合格し地道にスキルアップ。
次はWordPress以外のCMSに手を出そうか悩み中。
誤ってデータベースをデプロイしてしまうケース
例えば、ローカルから本番へデータベースをコピ―する場合。
ローカル側が親になるので、「push」(押し出す)コマンドを使います。
ここで誤って、「pull」(引っ張る)をしてしまうと、
本番環境のデータベースを引っ張ってきてしまいます。
「push」と「pull」を間違ってしまうため、
古いデータを持ってきてしまう間違いが起こります。
実はwordmoveはバックアップを取っている
wordmoveは、データベースをデプロイする前に、
まず、前のデータベースをバックアップしてから、実際のデプロイを行う仕様になっています。
ゆめただはこれを、失敗して初めて知りました。
wordmoveでローカルから本番へpushする場合
wordmoveでローカルから本番へpushする場合は、
ローカルのデータベースを本番へpushする前に、
本番のデータベースがローカルに自動でバックアップされます。
ローカル→本番(push)
$ wordmove push -e production -d
wordmoveで本番からローカルへpullする場合
wordmoveで本番からローカルへpullする場合は、
本番のデータベースをローカルへpullする前に、
ローカルのデータベースがローカルに自動でバックアップされます。
本番→ローカル(pull)
$ wordmove pull -e production -d
もとのデータベースに戻す方法
もとのデータベースに戻す方法です。
誤ってローカルに本番のデータベースをpullしてしまった場合の方法をまとめました。
バックアップされたデータベースを見つける
誤って本番のデータベースpullしてしまっても、ローカルのデータベースは残っています。
wp-contentフォルダに、「local-backup-xxxxxxxxxx.sql.gz」というファイルがあるはずです。(xxxxxxxxxxxは数字)
このファイルの日付を確認して、誤ってpullした日時に近いものを探します。
一番新しいファイルを探せば間違いないでしょう。
\新しいローカルバックアップファイルを探す/
コマンドウインドウ
$ ls -ltr local-backup*
-rw-r--r-- 1 members 217225 Jan 16 2021 local-backup-1609650020.sql.gz
-rw-r--r-- 1 members 217162 Jan 16 2021 local-backup-1609649930.sql.gz
-rw-r--r-- 1 members 209502 Jan 16 2021 local-backup-1609649520.sql.gz
-rw-r--r-- 1 members 192382 Jan 16 2021 local-backup-1609649254.sql.gz
-rw-r--r-- 1 members 171290 Jan 16 2021 local-backup-1609647904.sql.gz
-rw-r--r-- 1 members 171256 Jan 16 2021 local-backup-1604155029.sql.gz
-rw-r--r-- 1 members 158203 Jan 16 2021 local-backup-1601641487.sql.gz
-rw-r--r-- 1 members 179446 Jan 16 2021 local-backup-1599399270.sql.gz
データべースファイルを復元する
バックアップされたデータベースが見つかったら、
データベースを復元します。
バックアップデータベースは、gzipという圧縮形式でファイルに圧縮されています。
この圧縮ファイルを、gunzipコマンドを使って解凍します。
コマンドウインドウ
$ gunzip local-backup-xxxxxxxxxx.sql.gz
ファイルが解凍できているか確認します。
先ほど解凍したファイルが、.sqlファイルに解凍されていれば成功です。
コマンドウインドウ
$ ls local-backup*
local-backup-xxxxxxxxxx.sql
WP-CLIをインストールする
データベースをインポートする際に、WP-CPIのコマンドを使用します。
WP-CLIとは、コマンドベースでWordpress関連の機能を実行できるツールです。
コマンドベースで「wp」を実行して、使用方法が表示されればインストールされています。
インストールされている場合は、読み飛ばしてください。
ファイルをダウンロード
$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
pharファイル動作を確認
$ php wp-cli.phar --info
pharファイルに実行権付与
$ chmod +x wp-cli.phar
コマンドファイルの移動
$ mv wp-cli.phar /usr/local/bin/wp
wpコマンド実行確認
$ wp --info
wp --info コマンドを実行して、応答が戻ってくれば成功です。
$ mv wp-cli.phar /usr/local/bin/wp
wpコマンド実行例
$ wp --info
OS: Linux 5.10.16.3-microsoft-standard-WSL2 #1 SMP Fri Apr 2 22:23:49 UTC 2021 x86_64
Shell:
PHP binary: /usr/local/bin/php
PHP version: 7.4.27
php.ini used:
MySQL binary: /usr/bin/mysql
MySQL version: mysql Ver 15.1 Distrib 10.5.12-MariaDB, for debian-linux-gnu (x86_64) using EditLine wrapper
SQL modes:
WP-CLI root dir: phar://wp-cli.phar/vendor/wp-cli/wp-cli
WP-CLI vendor dir: phar://wp-cli.phar/vendor
WP_CLI phar path: /var/www/html
WP-CLI packages dir:
WP-CLI cache dir: /root/.wp-cli/cache
WP-CLI global config:
WP-CLI project config:
WP-CLI version: 2.7.1
データベースファイルをインポートする
wordpressがインストールされているフォルダに移動します。(wp-contentがあるフォルダ)
先ほど解凍したデータベースファイルを「wp db import」コマンドでインポートします。
「Success」と表示されれば成功です。
コマンドウインドウ
$ cd WordPressインストールフォルダ
$ wp db import /Wordpressインストールフォルダ/wp-content/local-backup-xxxxxxxxxx.sql
Success: Importef from '/Wordpressインストールフォルダ/wp-content/local-backup-xxxxxxxxxx.sql' .
wordmoveのデプロイ方向を間違わないようにする方法
wordmoveのデプロイの方向を間違わないように設定する方法をまとめました。
Movefile.ymlファイルの設定を追加して、
push、pullする方向と種類を限定しておきます。
Movefile.yml設定例
push:
プラグイン、テーマ、mu-pluginのデータ転送禁止。
それ以外はOK。
pull:
全て転送禁止。
forbid:
push:
db: false
plugins: true
themes: true
uploads: false
mu-plugins: true
pull:
db: true
plugins: true
themes: true
uploads: true
mu-plugins: true
これで、間違って上書きしてしまったデータベースをもとに戻せます。
お困りのあなたは、是非試してください。