web-dev-qa-db-ja.com

MySQLデータベースでバージョン管理(Git)を使用する

私はWordPress Designer/Developerであり、バージョン管理、特にGitの使用にますます関与しています。ただし、一部のプロジェクトではSVNを使用しています。現在、リモートではBeanstalkを使用しています。レポ。

すべてのWordPress=ファイルをレポジトリに追加しても問題ありません。wp-configファイルを.gitignoreできるかどうかを知りたいのですが、現在、私が唯一の開発者であり、これらのプロジェクトはクローズドソースであるため、ほとんど意味がありません。

WordPressは、CMSと同様にデータベースに大きく依存しており、テキストコンテンツ、および使用している特定のプラグイン/テーマの構成に応じた多くの設定を保持しています。可能であれば、データベースでバージョン管理を使用する最善の方法は何だろうと思っています。私のMySQLサーバーはWindows上で実行されていてもSQLダンプを実行できたと思います(読み方:私はそれを行う方法がわかりません)、そしてSQLダンプをリポジトリに追加します。しかし、何かをライブでプッシュすると、セキュリティ上の大きな脅威になります。

これを行うための受け入れられた実践はありますか?

60
Zach Russell

Gitリポジトリ内でデータベースをバックアップできます。もちろん、バイナリ形式でデータをgitに配置すると、差分(変更)を使用してデータを効率的に保存するgitの機能がすべて失われます。したがって、一番のベストプラクティスはこれです。データをテキストシリアル化形式で保存します。

mysqldumpは、これを支援するのに適したプログラムです。しかし、それは完璧ではありません。アイテムのシリアル化の順序を妨げるもの(たとえば、新しいテーブルの作成など)があると、差分に人為的な中断が入ります。これにより、ストレージの効率が低下します。変更のみをシリアル化するカスタムシリアライザーを作成することもできますが、その場合は、gitが既に得意とするハードワークを行っています。 SQLダンプを使用してください。

そうは言っても、あなたがしたいことは、開発者がデータベースをgitに入れることについて話すときに通常意味することではありません。たとえば、@ eggyalが投稿したリンク( codinghorrorへのリンク )を読むと、実際にgitに配置されているのは初期データベースの生成に必要なスクリプトであることがわかります。データベースデータにクリーンな状態を設定したり、テストデータを設定したりするスクリプトなど、追加のスクリプトが存在する場合があります。このようなsqlスクリプトはすべてテキストファイルであり、mysqldumpから取得するsqlダンプとほぼ同じ形式です。したがって、日々のデータでも同じようにできない理由はありません。

21
Kevin A. Naudé

MySQLやMongoDBなどのバージョン管理データベースで利用できるソフトウェアは多くありません。

しかし、1つは開発中であり、ベータ版がまもなく発売されます。チェックアウト Klonio-データベースのバージョン管理

9
Kevin

記事 バージョン管理を使用してローカルとリモートのWordPressブログを同期する方法 は、WordPressの2つのインスタンス(開発、本番)間の同期を自動化する方法に関するアドバイスを提供します。 _ Mercurialを使用したブログ。このシナリオでは、GitとMercurialは非常によく似ていると言われています。

ここでは、ステップ4(データベースの同期)が重要です。

データベースの内容は、リビジョン管理によって追跡されるファイルにエクスポートされます。変更を取得するたびに、データベースの内容はこのファイルに置き換えられ、データベースが最新の状態になります。

次に、競合とジョブのスクリプト部分について詳しく説明します。

Mercurialのバージョン管理チュートリアル があります(詳しくない場合)。

5
abanmitra

Wordpress=はすべてのニュースフィードコンテンツをデータベースに保存するため、変更を加えなくても、多くの変更コンテンツが存在することに注意してください。

0
Anonymous