2011-12-13 9 views
5

Tengo una base de datos MySql ~ 80GB.MySql - crear replicación con tiempo de inactividad mínimo

Quiero crear una réplica en ese DB mientras tengo el DB actual como maestro y configurar un esclavo para él.

Mi pregunta principal es ¿cómo puedo mover los datos (todos los 80GB) desde el maestro al nuevo esclavo con el mínimo tiempo de inactividad posible, preferiblemente ninguno?

mi idea inicial era detener el DB (después de tomar la posición de registro), y luego copiar los archivos de la lib mysqldata, y luego reiniciar el servidor pero solo copiar los archivos tomaría ~ 2 horas.

alguna idea?

+0

He aquí una guía que escribí sobre cómo realizar un esclavo perfecto con sólo unos segundos de tablas de bloqueo tiempo de inactividad ... especialmente si tiene muchos datos MyISAM ... http://www.marcpope.com/article.php?story=2013060316014742 –

Respuesta

6

On July 8, 2011 I addressed a similar question. I wrote scripts that would zap binary logs and starting performing an rsync.

On June 16, 2011, I wrote a post contrasting doing an rsync versus using XtraBackup.

On May 23, 2011, I discussed what considerations to make when doing this kind of backup.

En lugar de reinventar la rueda y volver a escribir en la información que ya escribí en esos puestos, simplemente siempre que los enlaces a mis propios mensajes que abordan esta pregunta.

Por favor, léalas cuidadosamente.

¡Pruébalo!

Claves clínicas

El único tiempo de inactividad en mi algoritmo rsync es cuando, después de haber realizado múltiples rsyncs como se especifica, que apagado MySQL, realice una rsync más, y luego inicie mysql.

me gustaría aclarar el motivo del apagado:

Cuando el apagado mysql:

  • Todo MyISAM abierta mesas están cerradas, hay una cabecera que marca el número de identificadores de archivos están abiertos a la tabla MyISAM. Debe estar en cero (0) para que la tabla esté bien. De lo contrario, una tabla MyISAM cerrada con un valor distinto de cero en este campo de encabezado marca la tabla como bloqueada y necesita una reparación de la tabla. Cerrar mysql limpia todo eso.

  • Todas las tablas de InnoDB que tienen páginas de datos o páginas de índice en el conjunto de almacenamientos intermedios que están marcadas como sucias deben lavarse en el disco. Realizar un apagado desencadena una descarga total del grupo de búfers. Naturalmente, cuanto mayor sea el grupo y cuanto mayor sea el número de páginas sucias, mayor será el tiempo de vaciado de la Reserva de almacenamiento intermedio. Para acortar esta fase del cierre de mysqld, ejecute SET GLOBALinnodb_max_dirty_pages_pct= 0; antes de realizar cualquiera de las rsyncs. Todas las transacciones se completan (ya sea confirmadas o retrotraídas).

0

Creo que tiene algún malentendido.

  1. antes de que comience, debe habilitar registro binario en el maestro
  2. reinicio de MySQL en maestro
  3. entrada para dominar
  4. bloquear todas las tablas de escritura
  5. registrar la posición binaria maestro
  6. copiar datos binarios del maestro (DIRECTAMENTE copiar * .MYI, * .MYD ... etc, puede copiar a otra ubicación en la base de datos maestra)
  7. después de que se complete la copia, eliminar wri bloquee te
  8. datos de SCP para esclavo (depende de la distancia de red)
  9. configuración de la información maestra relevante en esclavo (posición de registro binario, y recuerde desactivar registro binario)
  10. inicio esclavo

Después de eso , debe tener una gran demora en el esclavo,
y el esclavo intentará ponerse al día con el maestro automáticamente,
una vez que se pone al día, ¡su esclavo está listo!

Por lo tanto, el tiempo de inactividad es solo cuando bloquea la tabla y copia los datos binarios en otra ubicación en su base de datos maestra.

documentos: - http://dev.mysql.com/doc/refman/5.1/en/replication-howto.html

0

He encontrado la siguiente herramienta para ser de GRAN ayuda y eficacia. El autor actualmente trabaja para Facebook y solía trabajar para Dema en Japón. Es bastante fácil de configurar y llegará a 4 9's HA. ;-)

MHA tool for MySQL replication high availability

tengo que decir que, aunque MySQL Cluster es mejor, lol ;-)

Cuestiones relacionadas