ОШИБКА / usr / libexec / mysqld: неверная информация в файле - PullRequest
0 голосов
/ 06 января 2019

Я вижу эту ошибку после перезагрузки и некоторых других проблем замедления. MYSQL продолжает перезапуск, и я предполагаю, что это означает, что InnoDB восстанавливается, хотя я не достаточно знаком с процессом, чтобы знать наверняка. Я использую CentOS 6 и увидел это:

InnoDB: Apply batch completed
InnoDB: In a MySQL replication slave the last master binlog file
InnoDB: position 0 256214410, file name mysqld-bin.000003
InnoDB: Last MySQL binlog file position 0 390069474, file name /var/lib/mysql/.000105
190105 17:11:09  InnoDB: Started; log sequence number 91 3960852448
InnoDB: Starting in background the rollback of uncommitted transactions
190105 17:11:09  InnoDB: Rolling back trx with id 0 3103647860, 655 rows to undo
190105 17:11:09 [ERROR] /usr/libexec/mysqld: Incorrect information in file: './empire/member_list.frm'
190105 17:11:09 [ERROR] /usr/libexec/mysqld: Incorrect information in file: './empire/member_list.frm'
190105 17:11:09 [Note] Recovering after a crash using /var/lib/mysql/
190105 17:11:09 [Note] Starting crash recovery...
190105 17:11:09 [Note] Crash recovery finished.
190105 17:11:09 [ERROR] Can't start server: Bind on TCP/IP port: Address already in use
190105 17:11:09 [ERROR] Do you already have another mysqld server running on port: 3306 ?
190105 17:11:09 [ERROR] Aborting

190105 17:11:09  InnoDB: Starting shutdown...
190105 17:11:09 [ERROR] /usr/libexec/mysqld: Incorrect information in file:

Вот как выглядит файл my.cnf:

 The MySQL server
[mysqld]
innodb_file_per_table = 1
log-bin=/var/lib/mysql/
#binlog-do-db=leadtraffic
#binlog-do-db=fullemedia
binlog-ignore-db=supp
server-id=5
#master-host=XXX
#master-user=XXX
#master-password=XXX
#master-connect-retry=60
port            = 3306
socket          = /var/lib/mysql/mysql.sock
skip-locking
skip-name-resolve
relay-log=/data1/mysqld/mysqld-relay-bin
skip-slave
#set-variable    = join_buffer_size=60M
set-variable    = key_buffer=128M
set-variable    = max_allowed_packet=30M
set-variable    = table_cache=64
set-variable    = sort_buffer=8M
set-variable    = record_buffer=2M
set-variable    = myisam_sort_buffer_size=8M
set-variable    = thread_cache=4
set-variable    = thread_concurrency=2
set-variable    = max_connections=500
set-variable    = wait_timeout=3600

#
#replicate-ignore-table=dreamdirect.member_list_old
#replicate-ignore-table=dreamdirect.realtime_info
#replicate-ignore-table=dreamdirect.realtime_info1
#replicate-ignore-table=dreamdirect.realtime_info2
#replicate-ignore-table=dreamdirect.camp_realtime_info
#replicate-ignore-table=fullemedia.realtime_info
#replicate-ignore-table=fullemedia.realtime_info1
#replicate-ignore-table=fullemedia.realtime_info2
#replicate-ignore-table=test.*
#replicate-ignore-table=test.md5supp

# Uncomment the following if you are using BDB tables
#set-variable   = bdb_cache_size=64M

# Point the following paths to different dedicated disks
tmpdir          = /var/tmp/
#log-update     = /path-to-dedicated-directory/hostname

innodb_data_home_dir=
innodb_data_file_path = /data1/ibdata/ibdata1:5000M;/data1/ibdata/ibdata2:5000M;/data1/ibdata/ibdata3:5000M;/data1/ibdata/ibdata4:5000M:autoextend
set-variable = innodb_buffer_pool_size=1G
set-variable = innodb_additional_mem_pool_size=5M
innodb_log_group_home_dir= /data1/iblogs
innodb_log_arch_dir = /data1/iblogs
set-variable = innodb_log_files_in_group=3
##
set-variable = innodb_log_file_size=100M
set-variable = innodb_log_buffer_size=16M
set-variable = innodb_file_io_threads=8
set-variable = innodb_lock_wait_timeout=100
set-variable = innodb_autoextend_increment=200
#
innodb_flush_log_at_trx_commit=0
innodb_log_archive=0

set-variable = innodb_lock_wait_timeout=100
#innodb_flush_method = O_DSYNC

[mysqldump]
quick
set-variable    = max_allowed_packet=16M

[mysql]
no-auto-rehash
#safe-updates   # Remove the comment character if you are not familiar with SQL

[isamchk]
set-variable    = key_buffer=2M
set-variable    = sort_buffer=1M
set-variable    = read_buffer=1M
set-variable    = write_buffer=1M

[myisamchk]
set-variable    = key_buffer=20M
set-variable    = sort_buffer=20M
set-variable    = read_buffer=2M
set-variable    = write_buffer=2M

Возможно ли, что это проблема с буфером, из-за которой он продолжает идти к старым данным из файла данных? Это предположение новичка.

1 Ответ

0 голосов
/ 06 января 2019

Это самая важная подсказка:

190105 17:11:09 [ERROR] Can't start server: Bind on TCP/IP port: Address already in use
190105 17:11:09 [ERROR] Do you already have another mysqld server running on port: 3306 ?
190105 17:11:09 [ERROR] Aborting

Это говорит вам, что другой процесс-демон уже использует порт 3306. Только один процесс может прослушивать данный порт одновременно, поэтому, когда вы пытаетесь запустить mysqld, он не может привязаться к этому порту и завершает работу. .

Скорее всего, это еще один экземпляр mysqld, который уже запущен. Вы можете использовать ps -elw | grep mysqld, чтобы подтвердить это.

Прежде чем вы сможете запустить MySQL-сервер так, как вы пытаетесь это сделать, вам необходимо убедиться, что все остальные экземпляры закрыты. Если все остальное терпит неудачу, вам, возможно, придется использовать kill -9, чтобы сделать это, и обязательно выключить модуль запуска mysqld_safe (если он запущен), иначе он просто перезапустит процесс mysqld.


Другая ошибка, которую вы видели о «неверной информации в файле», указывает на то, что одно из ваших определений таблиц повреждено - для empire.member_list. Этого недостаточно, чтобы остановить запуск mysqld, но вы не сможете использовать эту таблицу.

Если ваша таблица использует движки MyISAM, ARCHIVE или CSV, вы можете попробовать REPAIR TABLE (пожалуйста, прочитайте документацию, я здесь не для того, чтобы набирать документы, которые уже существуют).

Если ваша таблица была InnoDB или восстановление по какой-то причине не помогло, восстановите вашу таблицу из самой последней резервной копии.

Если у вас нет резервной копии, воспринимайте это как опыт обучения. Вы должны привыкнуть делать резервные копии.

...