Mysql – Lost connection to MySQL server during query when dumping table

MySQL

I'm trying to dump all my databases but it's giving me the error "Lost connection to MySQL server during query when dumping table" and the file always reaches 781M.

I tried setting max_allowed_packet = 512M below [mysqld] and below [mysqldump] at /etc/mysql/my.cnf, but it didn't work.
I tried setting to 1024M too. Nothing.

I think this is happening because Apache using almost all my RAM, but I'm not so sure, since my dump is always stopping when the file is at 781M.

/etc/mysql/my.cnf:

#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

# This will be passed to all mysql clients
# It has been reported that passwords should be enclosed with ticks/quotes
# escpecially if they contain "#" chars...
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
[client]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket          = /var/run/mysqld/mysqld.sock
nice            = 0
log_error=/var/log/mysql/mysql_error.log

[mysqld]
#
# * Basic Settings
#
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
language        = /usr/share/mysql/english
skip-external-locking
log_error=/var/log/mysql/mysql_error.log
max_allowed_packet = 512M

# Replic    
server-id=2
master-host=hostip
master-user=slaveusr
master-password=slavepass
master-port=3306

#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 0.0.0.0
#
# * Fine Tuning
#
key_buffer              = 16M
thread_stack            = 192K
thread_cache_size       = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover         = BACKUP
#max_connections        = 100
#table_cache            = 64
#thread_concurrency     = 10
#
# * Query Cache Configuration
#
query_cache_limit       = 1M
query_cache_size        = 16M
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
#general_log_file        = /var/log/mysql/mysql.log
#general_log             = 1
#
# Error logging goes to syslog due to 
/etc/mysql/conf.d/mysqld_safe_syslog.cnf.
#
# Here you can see queries with especially long duration
#log_slow_queries       = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
#       other settings you may need to change.
#server-id              = 1
#log_bin                        = /var/log/mysql/mysql-bin.log
expire_logs_days        = 10
max_binlog_size         = 100M
#binlog_do_db           = include_database_name
#binlog_ignore_db       = include_database_name
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem

[mysqldump]
quick
quote-names
max_allowed_packet = 512M


[mysql]
#no-auto-rehash # faster start of mysql but no tab completition

[isamchk]
key_buffer              = 16M

#
# * IMPORTANT: Additional settings that can override those from this file!
#   The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/mysql/conf.d/

I tried mysqlcheck -A –auto-repair too, but I got dc after a while (more than when running mysqldump).

Any ideas?

EDIT:

It loses connection when trying to dump a certain table 'bandeira':

         2073 Query     SET SESSION character_set_results = 'binary'
         2073 Query     use `ct1222`
         2073 Query     select @@collation_database
         2073 Query     SHOW TRIGGERS LIKE 'baixa\_prod'
         2073 Query     SET SESSION character_set_results = 'utf8'
         2073 Query     show table status like 'bandeira'
         2073 Query     SET OPTION SQL_QUOTE_SHOW_CREATE=1
         2073 Query     SET SESSION character_set_results = 'binary'
         2073 Query     show create table `bandeira`
         2073 Query     SET SESSION character_set_results = 'utf8'
         2073 Query     show fields from `bandeira`
         2073 Query     SELECT /*!40001 SQL_NO_CACHE */ * FROM `bandeira`

I ran mysqlcheck and it says it's ok:

# mysqlcheck ct1222 bandeira
ct1222.bandeira                                    OK

mysql_error.log:

InnoDB: Error: tried to read 16384 bytes at offset 0 7290880.
InnoDB: Was only able to read -1.
180829 17:49:36  InnoDB: Operating system error number 5 in a file operation.
InnoDB: Error number 5 means 'Input/output error'.
InnoDB: Some operating system error numbers are described at
InnoDB: http://dev.mysql.com/doc/refman/5.1/en/operating-system-error-codes.html
InnoDB: File operation call: 'read'.
InnoDB: Cannot continue operation.
180829 17:49:38 mysqld_safe Number of processes running now: 0
180829 17:49:38 mysqld_safe mysqld restarted
180829 17:49:38 [Warning] 'for replication startup options' is deprecated and will be removed in a future release. Please use ''CHANGE MASTER'' instead.
180829 17:49:38 [Note] Plugin 'FEDERATED' is disabled.
180829 17:49:38  InnoDB: Initializing buffer pool, size = 8.0M
180829 17:49:38  InnoDB: Completed initialization of buffer pool
InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
180829 17:49:38  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
180829 17:49:41  InnoDB: Started; log sequence number

Best Answer

You appear to have a hardware problem.

Specifically, it appears to be a faulty hard drive. When InnoDB is trying to read a page from the disk, it was unable to read due to an unrecoverable I/O error. This is fatal, so the server actually halts, crashes, which is why you lose the connection.

Everything after mysqld_safe Number of processes running now: 0 is MySQL restarting itself and recovering from the error -- so the actual error is above that line. (In other words, don't be alarmed or distracted by what follows.)

I will speculate that you do not have backups, since creating backups would have encountered this same error.

But this does not appear to be a "MySQL problem" per se. You should find that you are also unable to copy MySQL's files to another disk because copying the affected file will encounter the same error. Which file will depend on the setting of innodb_file_per_table. If set to 0 then recovery will be that much more complicated.