MySQL テーブルのすべての変更を監査するように依頼されました。これを行うのに役立つツールを知っている人はいますか、それとも独自のソリューションを作成する必要がありますか?
独自の監査を作成する場合、最初は別のテーブルを作成し、PHP コードに一連の変更を作成することを考えていました。「fieldname1 -> oldvalue | fieldname2 -> oldvalue, ...」のようなものです。この方法に重大な問題がある場合は、お知らせください。
The only sure-fire way to capture all changes to a DB table is to use triggers on the Server. The risk of modifing your own code to audit the changes is that changes from another application/user etc will not be captured.
Having said that, I'm not sure that MySQL 4 had trigger support.
トリガーを使用して変更を検出し、前後の値をログ テーブルに書き込みます。
トリガーがサポートされていないために手動でソリューションを作成することになった場合は、変更を文字列 BLOB にダンプしないことを強くお勧めします。ある日、そのデータを照会するように求められ、データを取り戻すために一連の文字列解析を行う必要が生じるでしょう。(私はここで経験から話します。)
最も簡単な方法は、元のテーブルと同じ列すべてに加えて、変更日列と連続 ID を持つシャドー監査テーブルを作成することです。次に、履歴全体を手元に用意して、必要な形式で再構築し、自由にクエリを実行できます。
SoftTree DB Audit には MySQL のサポートがあり、次のことを行うことができます。