ti-enxame.com

Melhor maneira de arquivar o banco de dados do Live MySQL

Temos um banco de dados ao vivo mysql que é de 99% de inserções, em torno de 100 por segundo. Queremos arquivar os dados todos os dias para que possamos executar consultas sobre ele sem afetar o principal banco de dados ao vivo. Além disso, uma vez concluída o arquivo, queremos limpar o banco de dados ao vivo.

Qual é a melhor maneira de fazer isso sem (se possível) inserções de bloqueio? Usamos inserir atrasados ​​para as consultas.

26
DavidM

http://www.maatkit.org/ tem mk-arquivador

arquivos ou limpa linhas de uma tabela para outra tabela e/ou um arquivo. Ele é projetado para eficazmente "nibble" dados em pedaços muito pequenos sem interferir com as consultas críticas de processamento de transações on-line (OLTP). Ele realiza isso com um plano de consulta não-backtracking que mantém seu lugar na tabela da consulta para consultar, então cada consulta subseqüente faz muito pouco trabalho para encontrar linhas mais arquiváveis.

Outra alternativa é simplesmente criar uma nova tabela de banco de dados todos os dias. Myisam tem algumas vantagens para isso, já que as inserções no final da tabela não geralmente bloqueiam de qualquer maneira, e há um tipo de mesa de mesclagem para estar todos juntos. Um número de sites registrou o tráfego httpd para tabelas como essa.

Com o MySQL 5.1, também há tabelas de partição que podem fazer o mesmo.

15
Alister Bulman

Eu uso mesas de partição mysql e eu consegui resultados maravilhosos em todos os aspectos.

2
Eduardo Xavier

Parece que a replicação é a melhor solução para isso. Após a sincronização inicial, o escravo obtém atualizações através do log binário , não afetando o db mestre.

mais na replicação.

2
Jacob

A replicação do MySQL funcionaria perfeitamente para isso.
[.____] Master -> O servidor ao vivo.
Escravo -> Um servidor diferente na mesma rede.

1
Seun Osewa

O MK-Archiver é uma ferramenta elegante para arquivar dados mysql.

http://www.maatkit.org/doc/mk-archiver.html

1
Vinayak Saokar

Você poderia manter dois bancos de dados espelhados por aí? Escreva para um, mantenha o segundo como um arquivo. Alterne todos, digamos, 24 horas (ou por mais tempo você considere apropriado). No banco de dados que foi o arquivo, insira toda a atividade de hoje. Em seguida, os dois bancos de dados devem corresponder. Use isso como o novo db ao vivo. Pegue o banco de dados arquivado e faça o que quiser. Você pode fazer backup/extrair/ler tudo o que você quer agora que não esteja sendo escrito ativamente.

Seu tipo de vontade de ter RAID espelhado, onde você pode fazer uma unidade offline para backup, resync, então tire a outra saída para o backup.

0
Doug T.