MySQL: Backups Incrementais Automatizados de Tabelas InnoDB - mysql, backup, innodb

Sei que houve perguntas semelhantes / relacionadas sobre SO e em outros lugares e, pelo menos, acho que entendo as várias opções.

Temos um amplo banco de dados MySQL (community community)com tabelas InnoDB. Gostaria de tirar fotos diárias do banco de dados para fazer backup fora do local. Atualmente, estou usando um script mysqldump que é executado pelo cron.daily. No entanto, leva 3 horas para escrever a cópia. Tão - incremental deve ser.

Como somos edição comunitária e não podemos pagarEmpresa, não temos a cópia digitalizada do InnoDB, que seria uma solução viável, pois não bloqueia. A outra opção é ativar o log binário e fazer atualizações incrementais. Mas isso parece uma dor colossal e propensa a erros: liberar e girar logs , registro de data e hora etc. O conselho parece evitar isso, se possível.

Portanto, a opção final é configurar a replicação com uma configuração Master-Slave. Examinei os documentos, mas não estou claro o que constitui um "Mestre" e o que constitui um "Escravo". Então, algumas perguntas:

  • Um escravo é um processo mysqld separado?
  • O escravo pode rodar na mesma máquina que o mestre?
  • Depois de configurada e em execução, é necessária alguma intervenção ou o Mestre enviará fielmente todas as atualizações?
  • Para fazer meus backups sem afetar o mestre, presumivelmente eu posso simplesmente executar o mysqldump no escravo?
  • E, finalmente, essa é uma solução razoável para manter um backup para copiar fora do local?

Obrigado Richard

Respostas:

2 para resposta № 1

Um escravo é um processo mysqld separado?

não é necessário usar o daemon mysql separado,
no mestre, você habilita o log binário
no slave, você configura o relay-bin e as informações relevantes no master
(Vejo http://dev.mysql.com/doc/refman/5.0/en/replication-howto.html)

O escravo pode rodar na mesma máquina que o mestre?

Sim mas não faça isso ,
porque uma vez que a máquina caiu,
seu mestre e escravo se foi
(DTP)

Depois de configurada e em execução, é necessária alguma intervenção ou o Mestre enviará fielmente todas as atualizações?

mestre empurrará fielmente todas as atualizações,
mestre registre os sqls de gravação no log binário,
e o slave deve obter o log binário (como @Johan explicou, ele puxa do master)

Contudo,

  1. O bloqueio da tabela pode levar ao atraso da replicação no escravo
  2. falha na consulta de gravação que não pode ser executada no escravo

você pode tratar a replicação é apenas um método que permite que TODOS os sqls sejam executados no mestre,
copiar para o escravo,
e execute novamente na ordem de recebimento
(é isso que o log binário faz)

Para fazer meus backups sem afetar o mestre, presumivelmente eu posso simplesmente executar o mysqldump no escravo?

Claro, esse é o objetivo de ter escravos
No entanto, haverá algum atraso ...
quando você está descartando os dados,
você pode bloquear a tabela para gravação (assumindo que o innodb tenha menor impacto),
enquanto o mestre poderia continuar escrevendo

E, finalmente, essa é uma solução razoável para manter um backup para copiar fora do local?

sim, isso é considerado como uma recuperação de desastre mysql


1 para resposta № 2

Um escravo é um processo mysqld separado?

Pode ser, mas geralmente é um servidor MySQL separado instalado em uma máquina diferente.

O escravo pode rodar na mesma máquina que o mestre?

Sim, se necessário, atribua a ele um número de porta diferente e um server_id diferente.
Observe que não é um backup muito grande se estiver na mesma máquina.

Depois de configurada e em execução, é necessária alguma intervenção ou o Mestre enviará fielmente todas as atualizações?

O mestre não push qualquer coisa o escravo pulls as atualizações.

Para fazer meus backups sem afetar o mestre, presumivelmente eu posso simplesmente executar o mysqldump no escravo?

Sim, mas se o mestre e o escravo estiverem executando na mesma máquina, executando o mysqldunmp vai abrandar esse servidor.

E, finalmente, essa é uma solução razoável para manter um backup para copiar fora do local?

Sim, fora do local é a palavra-chave aqui.
Eu colocaria o escravo fora do local, que faz muito mais sentido do que ter o escravo na mesma máquina.

Aqui está um tutorial
http://www.howtoforge.com/mysql_master_master_replication


Cardápio