Erro de mysqldump 2013


18

Eu tenho um banco de dados instalado, que gostaria de fazer backup no mysql. O problema está com mysqldumpfalha 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.cnfeu 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?


170 GB de espaço livre. É também o mesmo se eu despejar a db máquina está ligada ou remoto
garfink

cópias de e-mail para que os dados varchar principalmente
garfink

o 1300M foi uma mudança recente, o problema existia quando também foi definido como o 16M padrão. O servidor também foi reiniciado após a alteração para 1300M.
garfink

Voltei ao padrão de 16 milhões. despejo resulta no mesmo erro 2013 na linha 15
garfink 14/04/2015

Respostas:


13

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.

mysqldump -u root --skip-extended-insert -p maia > maia.sql

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-insertantes

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

mysqldump -u root --skip-extended-insert --hex-blob -p maia > maia.sql

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


5

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.

  1. configurado max_allowed_packet para 1024M
  2. configurado net_read_timeout para 7200
  3. configurado net_write_timeout para 7200

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.


2
Para outros usuários: estes estão configurados no servidor, não no arquivo de configuração do mysqldump. Além disso, 7200 segundos é de 2 horas, e não 20.
Marcar

defina global net_read_timeout = 120; defina global net_write_timeout = 900; trabalhou para mim
kasi

2

Basta incluir o seguinte no arquivo de configuração my.ini (Windows) ou my.cnf (Linux).

[mysqld]
max_allowed_packet=1024M 

[mysqldump]
max_allowed_packet=1024M 
net_read_timeout=3600 
net_write_timeout=3600

2
As seções devem ser o contrário.
parar de prejudicar Monica

1

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:

free -mt

Se você esgotar a memória enquanto estiver despejando, receberá

mysqldump: Erro 2013: Conexão perdida


1

Eu encontrei:

--max-allowed-packet=1G --net-buffer-length=32704

... 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_packetconfigurações por si só não o fizeram funcionar, portanto, pode não ser necessário se net_buffer_lengthfor usado. - ralph-bolton

Modificar max-allowed-packete net-buffer-lengthparece muito melhor do que desativar inserções estendidas. - kristofer

Consulte também Qual max_allowed_packet é grande o suficiente e por que preciso alterá-lo?

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.