Eu tenho um banco de dados instalado, que gostaria de fazer backup no mysql. O problema está com mysqldump
falha ao exportar a tabela 'maia_mail'
# mysqldump -u root -p maia > maia.sql
mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `maia_mail` at row: 15
Ele é executado por menos de 30 segundos e obtém erros como acima.
O tamanho total do banco de dados é de 1,3 GB, com a tabela maia_mail sendo de 1,0 GB
Em my.cnf
eu tenho estes conjunto:
[mysqld]
max_allowed_packet = 1300M
[mysqldump]
max_allowed_packet = 1300M
Por favor, informe ou dê algumas orientações sobre como despejar o banco de dados?
Respostas:
Eu poderia sugerir facilmente alterar as configurações do InnoDB, o que pode ser um pouco pesado apenas para fazer com que o mysqldump funcione. Você pode não gostar do que eu sou sobre a sugestão, mas acredito que é a sua melhor opção (apenas). Aqui vai:
SUGESTÃO # 1: Desativar inserções estendidas
A configuração padrão para o mysqldump incluiria agrupar centenas ou milhares de linhas em um único INSERT. Isso é conhecido como um INSERT estendido. Está causando alguma saturação além de apenas max_allowed_packet .
Eu respondi a uma postagem de volta
Sep 01, 2011
(o servidor MySQL desapareceu obstruindo a importação de grandes despejos ), onde discuti sobre fazer o mesmo para importar um grande mysqldump. Acredito que desabilitar o INSERT estendido ajudaria a criar um mysqldump problemático também.Más notícias: O que isso faz na criação de um comando INSERT para cada linha. Isso definitivamente aumentará o tempo necessário para executar o mysqldump. Consequentemente, também aumentará o tempo necessário para recarregar (provavelmente por um fator de 10 a 100).
Eu discuti
skip-extended-insert
antesAug 12, 2011
: Por que o arquivo mysqldump é tão grande?Aug 09, 2013
: Os dados de backup / exportação da tabela de anexos do MySQL 5.5 continuam falhando!Nov 16, 2014
: Como agrupar várias instruções de inserção para despejo de banco de dados com o MySQL?SUGESTÃO # 2: Despejar dados binários como hexadecimal (OPCIONAL)
Para tornar os dados binários do mysqldump mais portáveis, despeje esses dados em hexadecimal
Más notícias: Inchaçará um pouco mais o mysqldump
DE UMA CHANCE !!!
Nota lateral: O tamanho máximo de max_allowed_packet é 1G
fonte
Eu também estava recebendo o mesmo erro ao tentar despejar o banco de dados de 12 GB. Fiz as seguintes alterações para fazê-lo funcionar.
Nota: Eu sei que os valores de tempo limite são muito altos (7200 segundos, ou seja, 20 horas). Mas eu fiz isso intencionalmente apenas para descartar qualquer chance. Estou no processo de encontrar um valor de tempo limite ideal.
fonte
Basta incluir o seguinte no arquivo de configuração my.ini (Windows) ou my.cnf (Linux).
fonte
Verifique se você tem memória suficiente para despejar. Por favor, continue verificando a memória enquanto estiver despejando, por exemplo, usando um comando como este:
Se você esgotar a memória enquanto estiver despejando, receberá
fonte
Eu encontrei:
... faz com que funcione onde não funcionava (de forma confiável) anteriormente, apesar das alterações de tempo limite de leitura / gravação na rede, manutenção de TCP etc.
As
max_allowed_packet
configurações por si só não o fizeram funcionar, portanto, pode não ser necessário senet_buffer_length
for usado. - ralph-boltonModificar
max-allowed-packet
enet-buffer-length
parece muito melhor do que desativar inserções estendidas. - kristoferConsulte também Qual max_allowed_packet é grande o suficiente e por que preciso alterá-lo?
fonte