WordPressのデータをGit管理したいと考えています。
Windows上にローカル環境をbitnamiを使って構築しました。
サーバとの同期はWordMoveを使ってなんとかできそうです。
(WordMoveは強力ですね。データベース内のURLを適切に変換してくれました。)
後はGitで管理したいのてすが、データベースの内容を管理するために、mysqldumpでテキスト・ファイルへ落としたいと考えています。
Windowsのタスクを使って例えば5分毎に落とすことは可能と思いますが、無駄に重くなる上、ローカルで固定ページ生成などの後、最大5分経過しないとGit作業ファイルに反映されないのも嫌らしいです。
そこで、データベースに更新があったらダンプしたいのですが、何か方法はないでしょうか?
そのようなプラグインがあればベストなのですが。
テーブル・ファイルの更新時刻の監視ではダメっぽいです。
PhpMyAdminでみてテーブルのサイズが大きくなっているのにファイルの方は元のサイズのままでした。
MySQLサービスを停止して初めて更新されました。メモリからファイルへ保存する頻度はそこそこ低そうです。
この辺の情報をネットで見つけることができなかったのですが、WordMoveの設定ファイルを見るとGitのファイル群を同期から外すようデフォルトで設定されているので、WordMoveとGitでWordpressのデータを管理している人はそこそこ居るはずなのです。なので、きっと同じ問題を既に解決している人が居るはずなのですが、見つけることができません。
ヒントだけでもぜひ教えて下さい。
【解決】
下記プラグインで動作しました。
php
1<?php 2/* 3Plugin Name: save data-base 4Plugin URI: 5Description: 投稿されたらデータベースを保存する 6Version: 1.0.0 7License: GPL2 8*/ 9function save_db($post_id, $post, $update) 10{ 11 if (wp_is_post_revision($post_id)) 12 { 13return; 14 } 15 16 $url=home_url('/'); 17 $token=strtok($url, ":"); 18 $token=strtok(":"); 19 if ($token != "//localhost/") 20 { 21return; 22 } 23 24 $dbHost = "ホスト名"; 25 $dbUser = "ユーザ名"; 26 $dbPass = "バスワード"; 27 $dbName = "データベース名"; 28 29 $filePath = ABSPATH."wp-content/"; 30 $fileName = 'database.sql'; 31 $mysqldump = ABSPATH."../../../mysql/bin/mysqldump "; 32 $command = $mysqldump.$dbName." --host=".$dbHost." --user=".$dbUser." --password=".$dbPass." > ".$filePath.$fileName; 33 system($command); 34} 35add_action('save_post', 'save_db', 10, 3); 36 37?>
mysqldumpのパスはBitNamiがインストールする場所を前提としています。
phpもワードプレスのプラグインも初めてなので、色々可笑しいかも。
【追記】
結局、mysqldumpされるものではGit管理できませんでした。
まず、リストアが異常に遅いです。これはWordMoveのオプションを参考にして数秒程度でリストアできるようになりました。
次にテーブルが全て1行になってしまう問題が発生しました。Gitでマージする際に直ぐにコンフリクトしてしまいます。
mysqldump時に-c --order-by-primary --skip-extended-insert
オプションを付けて投稿ごとに改行されるようになりました。
しかし、投稿にPRIMARY keyが記録され、別ブランチで生成した投稿に同じPRIMARY keyが割り当てられてしまいます。これがGitでコンフリクトします。
手動で解決も不可能ではないですが、あまり現実的な気がしません。
再度、プラグインを探してみたところ、VersionPressが見つかりました。(前回、結構探したのですが、ノイズが多すぎて見つからなかったようです。)
データベースの中身は、wordpress/wp-content/vpdb/の下に投稿毎にファイルを分けて保存され、しかも、投稿の改行も再現されてました。なのでGitのバージョン管理で期待通りにマージできそうです。
VersionPressが知らないPluginがデータベースへ保存しているデータ等はちゃんと管理できないかもしれませんが、そのような設定のマージが必要になるケースは稀でしょう。新しい方の上書きでコンフリクトを解決すれば概ねOKの筈です。
しかも、有り難いことにGPLv3での配布でした。GitHubからダウンロードできました。
バージョン3.02をWindows+BitNami環境で使ってみました。UnDoやRollBackはうまく動きませんでしたが、Gitで直接resetすれば戻りました。また、Gitでのブランチ切り替えやマージも動作しました。別のブランチで行った2つの投稿がちゃんとマージされました。(びっくりです。)
まだ若いソフトのようなので問題はそれなりにありそうですが、大事な部分はきちんと使えそうです。
【追記】
VersionPressを運用してみましたが、結局使えないと判断しました。
①データベース内にバイナリなテーブルを作る。
これが原因でWordMoveでpushできなくなります。
mysqldumpで保存後削除してpush→回復すれば行けるとは思います。
②ちょっと修正する度にcommitする。
そこで、一旦無効化して使った場合、無効化以前へ戻すことができませんでした。
これでは意味がないです。
以上により、私には使えないと判断しました。(使えそうと報告していたので訂正まで。)
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/20 00:54
2016/08/22 05:42