先日発見した、僕のプラグインの致命的バグの件で、
→C↓C←C↑Cの
嶽花さんとメールでやりとりしている中、自動バックアッププラグインの話題に。
ちょうど、getTableListのテーブル名をチェックする方法を考えていたのですが、これのためだけにプラグインを作ってもなぁと思っていたところでしたので、この自動バックアッププラグインの機能として盛り込んでみました。嶽花さん、アイデアありがとうございます。
データベースを使い込んでいる方なら、一度や二度は、データベースのデータを消してしまったり、クラッシュしたりなんてことがあるのではないでしょうか?(ないっすか?)
「プラグイン削除時、テーブルクリアする設定にしてたっけ?あれ?!消えてるぅ!」「サーバーがクラッシュしたぁ!」「MySQL逝ったぁ!」なんて時、勝手にバックアップされている

ってのは便利なんじゃないかと思います。
設定した周期で、設定した場所に、gz圧縮したDBのバックアップファイルを作成し、添付ファイルとしてメールで送信します。(ちなみに、このブログの現時点での圧縮ファイルは、多くの無駄データも含んで220KBくらいです。)
この時、各プラグインのgetTableListに登録されたテーブル名をチェックし、(テーブルが存在しない)問題があれば、対象のテーブル名リストを、メールの本文に書き込みます。
また、保存ディレクトリの合計容量が指定量を超えた場合、古いファイルから削除します。
このプラグインで作成したバックアップファイルは、Nucleus Adminのバックアップで出力したsqlと同じものになるようにしましたので、そのままリストアに使用できます。
NP_znBackup解説ページから、旧版・最新版のダウンロードができます。(この記事で紹介しているver0.01alphaは、2008-08-29現在、旧バージョンです。)
まだまだ実験段階ですので、alpha版として公開したいと思います。
Nucleus Adminのバックアップファイルと、比較検証していただけるとありがたいです。(比較の際には、上記の比較方法を参考にしてください。)
環境の違いによる不具合などがございましたら、ご連絡いただければと思います。
「動いたよ」だけでもコメントいただけるとうれしいです。
バックアップファイルのかなり後半に記録されている
INSERT INTO nucleus_plugin_option (ovalue, oid, ocontextid) VALUES( 'xxxxxxxxxx', '115', '0');
と言う行のxxxxxxxxxx(10桁の数字)部分が異なっていました。この数字は何を表しているのでしょか…
その次の115はアイテムIDのようです。
もう1点。先ほどのさらに下の方ですが、
INSERT INTO nucleus_tickets (ticket, ctime, member) VALUES( 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', '2005-11-18 11:06:19', '1');
xxxx…は32桁の暗号化されたような文字列です。
これが、管理画面からのバックアップが10行あったのに対してバックアップモジュールでとったバックアップには11行ありました。
この2つの違いは何を意味しているのでしょうか?