7

Gerrit サーバー (A という名前) があり、新しいサーバー (B という名前) へのミラーをセットアップしたいと考えています。A がメインの Gerrit サーバーとして機能し、B から SSH を使用してミラーリングできる場合、A にこれ以上負荷をかけたくないため、A の処理能力を使用する代わりに B からプルしたいと考えています。

私はH2データベースを使用しており、Gerritデータベースからの権限/履歴も保持したいので、単にGitリポジトリだけでなく、Gerrit全体とそのすべてのGitリポジトリをミラーリングしたいと考えています。

私はそれを行うための2つの可能な方法を絞り込むことができました:

  1. 「gerrit レプリケート」の使用http://gerrit.googlecode.com/svn/documentation/2.1.6/cmd-replicate.html 「[--url < PATTERN >]」の意味がわからない。このコマンドを実行する場所をどこに置くべきですか? サーバーAまたはBにありますか?

  2. 「rsync」を使用しても問題ありませんが、review_site/etc/gerrit.config を同期できません。サーバー A の IP が含まれており、サーバー B にそれを持ちたくないからです。

4

1 に答える 1

9

ここでのさまざまな問題に関するいくつかのコメント:

  1. 特に H2 を使用している場合、データベースとリポジトリのホット バックアップを実行する良い方法はありません。Gerrit をシャットダウンし、rsync などのファイル転送ツールを使用する唯一のオプションです。postgres などのより堅牢なデータベースを使用する場合は、他のバックアップ オプションがあります。ただし、競合状態が発生する可能性はあります。変更が送信される前にリポジトリをバックアップし、変更が送信された後にデータベースをバックアップすると、問題が発生する可能性があります。これが、データベースを取り除き、すべてをリポジトリに保存するために長期的に取り組んでいる理由です。

  2. プッシュとプルは、サーバーの CPU 負荷に関する限り (私の知る限り)、それほど違いはありません。Gerrit に組み込まれているレプリケーション機能を使用するだけです。これらの機能は、このような目的のために設計されています。

  3. サーバーBがサーバーAがダウンした場合のバックアップとしてのみ使用される場合、サーバーAでGerritを真夜中に停止し、サーバーBにrsyncし、Gerritのバックアップを開始するスクリプトを書くだけです。これは、特に H2 を使用する場合、現在できる最善のことです。

  4. サーバー B がマスターのスレーブになることを意図している場合 (全員がサーバー A にアクセスするのではなく、一部のユーザーがアクセスできるようにするため)、Gerrit レプリケーションとスレーブ モード ( http://gerrit.googlecode.com/svn/documentation/2.1) を使用します。 6/config-gerrit.html#コンテナ. これはデータベースやレビュー中の変更をバックアップしないことに注意してください。

  5. Gerrit 2.1.6 は本当に古いです。少なくとも 2.1.8 を使用してください。2.2.2 はまもなくリリースされます。これが最善の策です。

  6. 「gerrit replicate」コマンドは、Gerrit が最後に複製を試みたときにサーバーがダウンした場合に複製を開始することを目的としています。2.1.6 でレプリケーションを設定する手順は、 http: //gerrit.googlecode.com/svn/documentation/2.1.6/config-replication.htmlにあります。

于 2012-01-12T02:15:49.283 に答える