Existe uma maneira de pular uma tabela específica nos logs binários?
Eu tenho logs binários configurados como minha estratégia de backup incremental entre backups noturnos. Mas temos uma enorme tabela de referência que vamos atualizar todas as noites a partir de um processo em lote (tabela de 70 GB). Esta tabela é lida apenas e é atualizada todas as noites usando mysqlimport
.
Durante o processo de atualização para esta tabela somente de referência, os logs binários estão causando um atraso bastante sério (especialmente quando faço uma atualização completa de 70 GB). Tem que fazer 70GB duas vezes basicamente. que nojo.
A tabela de referência está atualmente usando o MyISAM (eu calcei o InnoDB tentando carregá-lo, então experimente o MyISAM).
Respostas:
Não há opção mysql para ignorar uma tabela no log binário.
Se você pudesse mover a tabela para um banco de dados separado, poderá usar a opção binlog-ignore-db , mas isso tem suas vantagens . Você deve entender como o MySQL avalia as regras de replicação .
Se você pode escrever um script wrapper para carregar os dados em vez do mysqlimport (a página de manual diz que é uma interface de linha de comando para LOAD DATA INFILE), e o usuário com o qual você está importando os dados pode ter o privilégio SUPER, você pode usar a variável de sessão sql_log_bin gostar:
Isso desativará o log binário da sessão atual, carregará os dados e habilitará o log binário novamente.
fonte
você pode usar
--replicate-ignore-table=db_name.tbl_name
Consulte http://dev.mysql.com/doc/refman/5.1/en/replication-options-slave.html#option_mysqld_replicate-ignore-table para obter detalhes.
fonte