1

プロジェクトのGITリポジトリを実装する場合、デプロイ時にコミット後のフックでダンプを生成することにより、DB構造を含めます。

私が欲しいのは、テーブル構造への最後の変更のタイムスタンプに基づくファイルの単純なバージョン管理システムです。

MySQLデータディレクトリ内の*.frmファイルの日付を確認する提案を含むこの投稿を見つけた後、解決策は、生成されたファイルの一部としてその最後の日付に基づいて実装することだと思いました。これは:

  1. lsコマンド(タイプls -la * .frm)を使用して、DBのファイル(つまり、/ var / lib / mysql / databaseX /)の最新の日時を確認します。

  2. その値(最後に変更されたファイル)を特定のファイル(つまり、/project/dump_2012102620001.sql)の値と比較します。ここで、番号は最後に生成されたダンプに対応します。

  3. ファイルのタイムスタンプがその日付より後の場合はmysqldumpコマンドを生成します。それ以外の場合は無視して、GITへの変更としてダンプが生成およびコミットされないようにします。

残念ながら、私のLinuxコンソール/ bashの概念は機能するにはほど遠いため、使用する同様のスクリプトは見つかりませんでした。

4

2 に答える 2

3

[[ file1 -ot file2 ]]file1がfile2より古いかどうかをテストするために使用できます。

last=$(ls -tr /path/to/db/files/*.frm | tail -n1)
if [[ dump -ot $last ]] ; then
    create_new_dump
fi
于 2012-10-26T17:30:29.993 に答える
1

mysqldumpテーブルの内容が含まれないため、比較的軽量であるため、適切なコマンドを使用して毎回テーブル構造をダンプするだけで、多くの苦痛を軽減できます。上部の可変タイムスタンプ情報を取り除き、前のファイルと比較します。異なる場合は保管してください。

于 2012-10-26T17:34:31.993 に答える