私の2セント:私はそれが良いアイデアだとは思わない。GITは、「異なる時点でファイルのセットのスナップショットを保存する」のような何かをするので、あなたができる完全にそのような何かのためにGITを使用していますが、それはあなたが意味するものではありませんはず。GITはソースコードを格納するように設計されているため、その機能のほとんどが失われ、わずかな利便性のために多くのパフォーマンスを犠牲にすることになります。
これについて考えている主な理由は、「データとコードのコピーを同期させる」ことであり、これは、コードのバージョン2.0がバージョン1.0とは異なるデータベーススキーマを必要とすることを心配していることを意味します。より簡単なソリューションはCREATE
、Gitリポジトリのソースコードに沿って、データベーススキーマをステートメント付きのSQLスクリプトのセットとして保存することです。次に、インストール手順の一部として、以前にインストールしたデータベースサーバーでこれらのスクリプトを実行します。
これらの単なる-dテーブルの実際の内容はCREATE
、ソースコードのバージョンとは関係ありません。サーバーAとサーバーBにバージョン1.0のソフトウェアをインストールするとします。これらは、さまざまなチームによってさまざまな企業で使用されています。スキーマがまったく同じであっても、数週間後、テーブルの内容は大きく異なります。
データベースの内容をバックアップしたいので、バックアップダンプが属するソフトウェアの現在のバージョンでバックアップダンプをタグ付けするバックアップスクリプトを使用することをお勧めします。スクリプトはGITリポジトリにある必要があります(そのため、ソースコードバージョン文字列にアクセスできます)が、ダンプ自体はバージョン管理システムに属していません。
編集:
質問の動機付けとなった元の投稿を読んだ後、これはさらに疑わしいアイデアだと思います。重要な点は、mysqldump
コマンドがDBの現在の状態を一連のSQL INSERT
ステートメントに変換し、GITがそれらを比較して更新されたテーブル行のみを取得できることです。
mysqldump
これがあるため、一部では、音でのバックアップの方法のいずれかのMySQLのマニュアルに記載されています。GITの部分は、データベースサーバーがMySQLを含むクラッシュから回復するためにトランザクションログを保持していることに気付かない場所です。され、このログを使用して、あなたのデータベースの増分バックアップを作成する必要があることを、GIT、ありません。これには、何よりもまず、GITリポジトリを無限に拡張するのではなく、リカバリ後にログをローテーションまたはフラッシュできるという利点があります...