MySQL: Copias de seguridad incrementales automatizadas de tablas InnoDB - mysql, backup, innodb

Sé que ha habido preguntas similares / relacionadas sobre SO y en otros lugares, y al menos creo que entiendo las diversas opciones.

Tenemos una gran base de datos MySQL (edición comunitaria)con tablas InnoDB. Me gustaría tomar instantáneas diarias de la base de datos para hacer una copia de seguridad fuera del sitio. Actualmente estoy usando un script mysqldump que cron.daily ejecuta. Sin embargo, lleva 3 horas escribir la copia. Entonces, incremental debe ser.

Como somos edición comunitaria y no podemos pagarEmpresa no tenemos InnoDB hotcopy, que sería una solución viable ya que no bloquea. La otra opción es activar el registro binario y realizar actualizaciones incrementales. Pero esto parece un dolor colosal y propenso a errores: enrojecimiento y rotación de registros , grabación de marcas de tiempo, etc. El consejo parece ser evitar esto si es posible.

Entonces, la opción final es configurar la replicación con una configuración Maestro-Esclavo. He escaneado los documentos pero no tengo claro qué constituye un "Maestro" y qué constituye un "Esclavo". Así que algunas preguntas:

  • ¿Es un esclavo un proceso mysqld separado?
  • ¿Puede el esclavo correr en la misma máquina que el maestro?
  • Una vez configurado y en funcionamiento, ¿se requiere alguna intervención o el Maestro empujará fielmente todas las actualizaciones?
  • Para hacer mis copias de seguridad sin afectar al Maestro, ¿presumiblemente puedo ejecutar mysqldump en el esclavo?
  • Y finalmente, ¿es esta una solución razonable para mantener una copia de seguridad para copiar fuera del sitio?

Gracias Richard

Respuestas

2 para la respuesta № 1

¿Es un esclavo un proceso mysqld separado?

no hay necesidad de usar un demonio mysql separado,
en master habilitas el registro binario
en esclavo configura el bin de retransmisión y la información relevante sobre el maestro
(ver http://dev.mysql.com/doc/refman/5.0/en/replication-howto.html)

¿Puede el esclavo correr en la misma máquina que el maestro?

Sí, pero no hagas esto ,
porque una vez que la máquina se estrelló,
tanto tu amo como tu esclavo se han ido
(DTP)

Una vez configurado y en funcionamiento, ¿se requiere alguna intervención o el Maestro empujará fielmente todas las actualizaciones?

el maestro empujará fielmente todas las actualizaciones,
master log the write sqls into binary log,
y el esclavo debe obtener el registro binario (como explicó @Johan, se extrae del maestro)

sin embargo,

  1. el bloqueo de la tabla podría provocar un retraso de replicación en el esclavo
  2. consulta de escritura fallida que no puede ejecutarse en esclavo

puede tratar la replicación es solo un método que permite que TODOS los sqls se ejecuten en el maestro,
copia al esclavo,
y ejecutar de nuevo en la orden de recepción
(esto es lo que hace el registro binario)

Para hacer mis copias de seguridad sin afectar al Maestro, ¿presumiblemente puedo ejecutar mysqldump en el esclavo?

Por supuesto, este es el propósito de tener esclavos
Sin embargo, habrá algún retraso ...
cuando estás volcando los datos,
podría bloquear la tabla para escribir (suponiendo que innodb tenga un impacto menor),
mientras que el maestro podría seguir escribiendo más

Y finalmente, ¿es esta una solución razonable para mantener una copia de seguridad para copiar fuera del sitio?

sí, esto se considera como una recuperación de desastres mysql


1 para la respuesta № 2

¿Es un esclavo un proceso mysqld separado?

Puede ser, pero es más comúnmente un servidor MySQL separado instalado en una máquina diferente.

¿Puede el esclavo correr en la misma máquina que el maestro?

Sí, si debe hacerlo, simplemente asígnele un número de puerto diferente y diferente server_id.
Tenga en cuenta que no es una gran copia de seguridad si está en la misma máquina.

Una vez configurado y en funcionamiento, ¿se requiere alguna intervención o el Maestro empujará fielmente todas las actualizaciones?

El maestro no push cualquier cosa, el esclavo pulls Las actualizaciones.

Para hacer mis copias de seguridad sin afectar al Maestro, ¿presumiblemente puedo ejecutar mysqldump en el esclavo?

Sí, pero si maestro y esclavo se están ejecutando en la misma máquina, ejecutando mysqldunmp será ralentizar ese servidor.

Y finalmente, ¿es esta una solución razonable para mantener una copia de seguridad para copiar fuera del sitio?

Sí, Fuera del sitio es la palabra clave aquí.
Colocaría al esclavo fuera del sitio, eso tiene mucho más sentido que tener al esclavo en la misma máquina.

Aquí hay un tutorial
http://www.howtoforge.com/mysql_master_master_replication


preguntas relacionadas
Menú