web-dev-qa-db-ja.com

Wordpressデータベースは開発者と製品の間で同期します

2つのWordpressインストール間でデータベースと同様にファイルを同期させる方法について以前に質問がありました。

データベースレベルでは、答えは通常、基本的に1つのデータベースをダンプし、それを別のサーバーに挿入することです。これの問題点は、prodサーバーに加えられた可能性のある変更を失うことになります。たとえば、利用状況の指標、コメントなど.

これを念頭に置いて、私はあなたがデルタを生成してからそれをprodサイトに注入することができるようにWordpress ORMを拡張することが可能であるかどうか疑問に思い始めていました。

誰かがこれを試したり、調べたり、何かアイデアやコメントを持っていますか?

18

現実は私たちが欲しいのはこれであるということです: http://www.liquibase.org/ /

Liquibaseは、オープンソース(Apache 2.0ライセンス)の、データベースの変更を追跡、管理、および適用するためのデータベースに依存しないライブラリです。それは単純な前提の上に構築されています:すべてのデータベースの変更は人間が読めるが追跡可能な形式で保存され、ソース管理にチェックインされます。

しかし、私たちの開発プロセスはそれをサポートしていません。私たちは通常、私たちが書いた個別のスクリプトを通してデータベースを修正するのではなく、私たちがアクティブにするプラグインを使います。検索データを変更するためのDMLスクリプトを作成してからソースコード管理にチェックインすることはしません。管理ページのUIを使用するため、後で移行中にその変更を複製するためのソースコードはありません。

ただし、このページにリストされているツールのいくつかを使用して、その一部をエミュレートすることができます。

https://stackoverflow.com/q/225772/149060

たとえば、リキッドベースには差分機能があり、オプションでデータの変更も含まれます。テストデータを含む可能性のある特定のテーブル(投稿など)を除外して(可能な限り)スキーマとデータの差分をスクリプトに出力してから、そのスクリプトを運用データベースに適用することもできます。

MySQLDiff(StackOverflowの質問で議論されています)はスキーマの差分を作成します。そして、テーブルごとのデータの差分には mysql_coldiff をお勧めします。両方のデータベースをローカルにして、PC上でツールを実行すると、その問題は解決します。

本当にやりたいのであれば、設定、オプション、その他の設定変更、スキーマ変更に関連するSQLをログに記録し、ログに記録されたコードを移行スクリプトに変換して本番サーバーと対戦する必要があります。サーバーに対して移行スクリプトを再生し、WordPressのサイトファイルをコピーします(該当する場合はアップロードを除く)。

データベースをマージする方法を構築するのではなく、必要なSQLをトラップして保存し、記録されたコードから移行スクリプトを生成する開発者のmigration-builder-pluginが最善の方法です。ステージングとプロダクションの間あまりにも解決する簡単な問題があるようです。

@bueltgeの計測フックのコードを見ると、インスピレーションを得るためにpluginが呼び出されます。 https://Gist.github.com/1000143 (SAVEQUERIESの方向に私を指し示してくれたG +によるRon Rennickのおかげでシャットダウンフック、それを見つけるために私を導いた)

  - 代わりにSAVEQUERIES出力を取得するように変更してください。
  -  adminの間だけ実行してください
  - すべての選択を除外します
  - 結果をテーブルに保存しますシャットダウンフック
で - 私たちは現在行っていたことに基づいて出力トラッピングを選択的に切り替えることができます。 

例えば:

キャプチャ名:プラグインXYZの有効化と設定

キャプチャ状態の切り替え - オン

...プラグインXYZをインストールして設定する

キャプチャ状態の切り替え - オフ

移行スクリプトのエクスポート:プラグインXYZの有効化と設定

エクスポートボタンを押して - フィルタリングされたトラップされたSQLを含むポップアップテキストフィールドを作成します - 理想的にはmysqlをコマンドラインで呼び出すシェルスクリプトとしてフォーマット済みです。それをコピーしてあなたの移行コードフォルダに貼り付け、あなたのソースコードリポジトリに追加してください。

作業中にキャプチャのオンとオフを切り替えることに細心の注意を払うと、本番データベースをステージングデータベースと同等の構成にするための完璧な移行スクリプトを生成できます。

さらに優れた点は、テストできるスクリプト(または一連のスクリプト)があることです。複製可能でテスト可能な移行スクリプトを持つイメージング

私はもう恋をしています。

他に誰でも?

11
marfarma

Database Sync WordPressプラグイン は、2つのサーバー間でデータを同期するというすばらしい仕事をします。

デフォルトではすべての宛先データを上書きしますが、特定のデータベーステーブルのみを同期できるようにプラグインにいくつかの機能強化を実装したばかりです。これは、コメント、ユーザー、その他の上書きしたくないデータを保持するのに役立ちます。それはあなたがあなたが必要とする粒度をあなたに与えますか?

私はまだ自分の変更を公開していませんが、もしあなたがコピーに興味があるなら、simon-at-yump.com.auに私に電子メールを送ってください。誰かがこれが役に立つと思うか、追加の機能要求を持っているならば、私に知らせてください、そして、私は私ができることを見るでしょう。


更新: 私はちょうど WP-Sync-DB プラグインを見つけました。これはコマーシャルのフォークです WP-Migrate-DB-Pro プラグインおそらく Database Sync より洗練されていますが、それは非常に似たことをします。

3
Simon East

このタスク専用の比較的新しい商用サービスがあります。これはRAMPと呼ばれます。

http://alexking.org/blog/2011/07/20/ramp-content-deploy-wordpress

0
scribu