Como aumentar o backup e a restauração rápidos do banco de dados de 500 GB usando o mysqldump?

10

Há um banco de dados com tamanho de 500 GB. As tabelas no banco de dados A contêm as tabelas MyISAM e INNODB. As tabelas MyISAM são tabelas mestras e as tabelas Innodb são as principais tabelas de transação.

Faça backup e restaure usando o despejo mysql, demorando muito tempo ou dias.

  • max_allowed_packet = 1G
  • Foreign_key_checks = 0
  • auto_commit = desativado
Martin
fonte
11
Eu só quero ter certeza de que você está usando --opt com o utilitário mysqldump. Isso economiza muito tempo ao recarregar. sem ele, o mysqldump cria o arquivo sql linha por linha. --opt does: Adiciona bloqueios, descarta e recria com todas as opções de criação ativadas, desativa temporariamente as chaves para uma recarga rápida e ativa novamente as chaves no final para reconstruir os índices após a gravação. Concatena várias linhas juntas em inserções para reduzir o tamanho do arquivo E o tempo de análise de cada instrução (em até 70%) e permite ao --quick reduzir a carga no banco de dados de dumping durante a execução. reduz o tempo de carga em 80%
ppostma1

Respostas:

5

Mas o link também recomenda o XtraBackup da Percona, que é mais rápido, sem bloqueios em tabelas que já estão em uso e não ganha tempo para restauração. Para 500 GB de dados, prefiro o Percona XtraBackup a ser rápido e eficiente, a menos que você queira convertê-los para o modelo innodb_file_per_table, se não for do servidor de banco de dados existente. O link abaixo explica como proceder.

http://www.percona.com/doc/percona-xtrabackup/innobackupex/creating_a_backup_ibk.html

Mannoj
fonte
11
O problema com o Percona Xtrabackup é que o mysqld precisa ser interrompido para restaurar um banco de dados.
Dr_
2

Confira o mydumper. É muito mais rápido que o mysqldump: A nova versão do mydumper 0.6.1 oferece recursos de desempenho e usabilidade

Você pode fazer o download aqui: https://github.com/maxbube/mydumper

O que é o mydumper? Por quê?

  • Paralelismo (consequentemente, velocidade) e desempenho (evita rotinas caras de conversão de conjuntos de caracteres, código eficiente em geral)
  • Saída de gerenciamento mais fácil (arquivos separados para tabelas, metadados de despejo, etc., fácil de visualizar / analisar dados)
  • Consistência - mantém instantâneo em todos os threads, fornece posições precisas de log mestre e escravo, etc.
  • Gerenciamento - suporta PCRE para especificar inclusões e exclusões de bancos de dados e tabelas
Silas Palmer
fonte
1

Eu acho que a pergunta é sobre como restaurar mais rapidamente os arquivos de despejo repetido do mysqldump e não uma solução de backup diferente.

Uma das maneiras de fazer isso é criar grupos de tabelas em seu esquema e criar um usuário de banco de dados separado para cada grupo e usar permissões do MySQL para não permitir que tabelas sejam inseridas usando apenas um usuário de banco de dados.

Essa é uma técnica comprovada, rápida e quase paralela, mas sem 100% de certeza de quanto tempo levará para restaurar a partir de 500G. Mas imho, você precisa de algo paralelo. Veja o link abaixo para um exemplo.

Restauração rápida e paralela de dumps SQL (mysqldump) para MySQL

syed
fonte
1

Tente o seguinte com innobackupex:

innobackupex --parallel=7 --rsync  /var/mysql/backup

Você pode alterar o número do processo paralelo como desejar. Como você mencionou que possui tabelas myisam, o parâmetro "rsync" ajudará a acelerar o backup delas.

Haluk
fonte