WordPress SQLデータベースクエリを記録する方法

phpMyAdminを手動で操作することなく、データベースの変更を持ち運びましょう。

WordPress SQLデータベースクエリ記録の仕組み

TL;DR

  1. WP Staging SQL Recorder をインストールします。
  2. Tools → SQL RecorderStart Recording をクリックします。
  3. コピーしたい変更を実行します。
  4. Stop Recording をクリックして .sql ファイルをダウンロードします。
  5. そのファイルを WP-CLI または phpMyAdmin 経由でコピー先サイトにインポートします。

目的:ステージングから本番への展開、デバッグ、コンテンツ編集を同期したままサイトを複製するのに最適です。


なぜSQLクエリを記録するのか?

  • きめ細かなマイグレーション – データベース全体のダンプではなく、たった今行った変更だけを移行できます。
  • 監査証跡 – プラグインやテーマがデータを保存するときに、どのSQLが実行されているのかを正確に把握できます。
  • デバッグ – クエリを再生することで、開発サイト上で厄介なバグを再現できます。

前提条件

  • WordPress 5.8 以降(6.8.2 までテスト済み)。
  • 移行元と移行先の両サイトで管理者アクセス権。
  • 無料の WP Staging SQL Recorder プラグイン(ダウンロードリンクは下記)。
  • 基本的なデータベースインポート権限(WP-CLI または phpMyAdmin)。

ステップ・バイ・ステップガイド

1. プラグインのインストール&有効化

  1. 🚀 GitHub から wp-sql-recorder.zipダウンロードします。
  2. Plugins → Add New → Upload Plugin に移動します。
  3. ZIPをアップロードし、Install Now をクリックして、続いて Activate をクリックします。

2. 記録の開始

  • Tools → SQL Recorder に移動します。
  • Start Recording をクリックします。
  • 緑色のバナーが記録中であることを示し、ファイル名(例:wp-sql-20250716-153045.sql)が表示されます。
記録を開始
SQL記録を停止

3. 変更を実行する

INSERTUPDATEDELETECREATEALTER ステートメントを引き起こすあらゆる操作が記録されます。例:

  • 新しい投稿やページの公開。
  • カスタムテーブルを作成するテーマのインストール。
  • プラグインのデータマイグレーションウィザードの実行。

⚠️ SELECTクエリはスキップされます。ダンプを安全かつコンパクトに保つためです。

4. 停止してファイルをダウンロード

  1. Tools → SQL Recorder に戻ります。
  2. Stop Recording をクリックします。
  3. Download SQL file ボタンが表示されます。

ファイルは一時的に /wp-content/uploads/sql-recordings/ に保存されます。スクリプト化に便利です。

5. SQLファイルを移行先サーバーへ転送する

# scp での例
scp wp-sql-20250716-153045.sql user@prod:/var/www/html/

6. 移行先サイトでインポートする

A. WP-CLIを使用(推奨)

wp db import wp-sql-20250716-153045.sql

WP-CLI は wp-config.php の認証情報を自動的に使用します。

B. phpMyAdmin / Adminer を使用

  1. phpMyAdmin でサイトのデータベースを開きます。
  2. Import をクリックし、ファイルを選択して開始します。

プレフィックスが違う? 移行先サイトが異なるテーブルプレフィックス(wp_wp7_)を使っている場合、インポート前に素早く検索・置換を実行してください:

sed -i 's/`wp_/`wp7_/g' wp-sql-*.sql

ワークフローの自動化

夜間にデプロイする必要がありますか?WP SQL Recorder を cron 駆動の WP-CLI スクリプトと組み合わせましょう:

wp option update wpsr_recording 1                 # 開始
sleep 3600                                        # ...1時間の編集
wp option update wpsr_recording 0                 # 停止
FILE=$(wp option get wpsr_current_file)
wp db export "$FILE"                              # 任意の安全コピー
rsync -avz "$FILE" prod:/var/www/html/sql/
ssh prod "wp --path=/var/www/html db import sql/$(basename $FILE)"

トラブルシューティング

症状 解決策
ファイルがダウンロードできない uploads/sql-recordings/書き込み可能であることを確認してください(権限 755)。
外部キーエラーでインポートが失敗する トラフィックの少ない時間帯にインポートするか、FKチェックを無効化します:ダンプの前に SET FOREIGN_KEY_CHECKS=0;
何も記録されない 記録がONになっており、DBへ書き込むアクションを実行したことを確認してください。

よくある質問

サイトが遅くなりますか?

ごくわずかです。各書き込みクエリは LOCK_EX でファイルに追記されます。書き込みの多いサイトでは、デプロイ期間中のみ有効にすることを検討してください。

特定のテーブルでフィルターできますか?

まだできませんが、ロードマップに入っています。リポジトリにスターを付けてアップデートをお見逃しなく!

ダンプはMariaDBと互換性がありますか?

はい — クエリはMySQL/MariaDBが受け取るのと全く同じ形でキャプチャされます。


次のステップとコール・トゥ・アクション

  • WP SQL Recorder をダウンロード → プラグインページ ›
  • WordPress開発のヒントをもっと知りたい方は、ニュースレターを購読してください。
  • この記事をシェアしてください!他の開発者の助けになり、コンテンツの届く範囲も広がります。

このガイドで時間を節約できましたか? #WP Staging SQLRecorder を付けて成功体験をツイートしてください。

関連記事

Rene Hermenau

著者: Rene Hermenau

著者について: René Hermenau は WP STAGING の創設者です。WordPress のバックアップ、ステージング、移行、データベース処理、安全なデプロイメントワークフローに取り組んでいます。