La mejor forma de configurar espejo para Gerrit y todos sus repositorys Git

Tengo un server Gerrit (llamado A), y quiero configurar un espejo para un nuevo server (llamado B). Quiero sacar de B en lugar de usar la potencia de procesamiento de A porque A es el server principal de Gerrit y no quiero poner más carga de trabajo cuando puedo duplicarlo utilizando SSH desde B.

Estoy utilizando la database H2 y quiero reflejar todo el Gerrit + todos sus repositorys Git, no solo los repositorys Git porque también quiero conservar los permissions / historial de la database Gerrit.

Logré networkingucir dos forms posibles de hacerlo:

  1. Uso de 'gerrit replicate' http://gerrit.googlecode.com/svn/documentation/2.1.6/cmd-replicate.html No estoy seguro de lo que significa "[–url <PATTERN>]". ¿Dónde debería poner ejecutar este command? ¿Está en el server A o B?

  2. Use 'rsync', que está bien, pero no puedo sincronizar review_site / etc / gerrit.config porque contiene la IP del server A y no quiero tenerla en el server B.

Algunos comentarios sobre los diferentes problemas aquí:

  1. No hay una buena manera de realizar una copy de security en caliente de la database y los repositorys, especialmente si está utilizando H2. La única opción para cerrar Gerrit y usar una herramienta de transferencia de files como rsync. Si usa una database más robusta, como postgres, hay otra opción de respaldo. Sin embargo, todavía tiene posibles condiciones de carrera: si realiza una copy de security de los repositorys antes de que se envíe un cambio y realice una copy de security de la database, es posible que tenga problemas. Esta es la razón por la que a largo ploop estamos trabajando para deshacernos de la database y almacenar todo en los repositorys.

  2. Push vs Pull no es muy diferente en lo que respecta a la carga de la CPU en el server (hasta donde yo sé). Simplemente use las funciones de replicación incorporadas en Gerrit, están diseñadas para este tipo de cosas.

  3. Si el Servidor B es solo una copy de security en caso de que el Servidor A caiga, simplemente escribiría un script que detenga a Gerrit en el Servidor A en medio de la noche, rsyncs al Servidor B y comience la copy de security de Gerrit. Es lo mejor que puedes hacer en este momento, especialmente con H2.

  4. Si el server B está destinado a ser un esclavo de su maestro (para que algunos usuarios puedan golpearlo en lugar de que todos accedan al server A), use la replicación de Gerrit y el modo esclavo: http://gerrit.googlecode.com/svn/documentation/2.1. 6 / config-gerrit.html # contenedor . Tenga en count que esto no respalda su database o cambios en la revisión.

  5. Gerrit 2.1.6 es realmente viejo. Utilice al less 2.1.8, 2.2.2 se lanzará pronto y es su mejor apuesta

  6. El command 'gerrit replicate' está destinado a iniciar la replicación en caso de que el server estuviera inactivo la última vez que Gerrit intentó replicar. Las instrucciones para configurar la replicación con 2.1.6 están en http://gerrit.googlecode.com/svn/documentation/2.1.6/config-replication.html