Несколько процессов mysql вызвали сбой таблицы БД

На моем сайте есть несколько приложений PHP+MySQL. Я заметил, что мой сайт был очень нестабильным после того, как я установил Limesurvey. Таблицы myisam ломались каждые 3-4 дня.

Я скопировал журналы MySQL здесь:

110812 04:10:47  mysqld started
110812  4:10:47 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.0.77'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  Source distribution
110815 23:11:02  mysqld started
110815 23:11:02 [Warning] 'user' entry 'root@localhost.localdomain' ignored in --skip-name-resolve mode.
110815 23:11:02 [Warning] 'user' entry '@localhost.localdomain' ignored in --skip-name-resolve mode.
110815 23:11:02 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.0.77'  socket: '/var/lib/mysql/mysql.sock'  port: 0  Source distribution
110815 23:14:10 [ERROR] /usr/libexec/mysqld: Table './DBXXX/TableXXX' is marked as crashed and should be repaired

Как вы можете видеть, mysqld был запущен на порту 3306 12.08.2011 и работал для>3.5. дней. Затем другой порт mysqd был запущен на порту 0 15 августа.

Я подозреваю, что оба процесса MySQL обращаются к одной и той же таблице базы данных и вызвали сбой. Я никогда не настраивал несколько процессов mysql на своем веб-сервере, и я не знаю, почему еще один mysqld был запущен на порту 0.

Вот часть файла my.cnf, которая может быть связана:

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
old_passwords=1
skip-locking
skip-name-resolve
local-infile = 0
skip-networking
myisam-recover=backup,force
key_buffer_size = 375M

max_connections = 1200

thread_cache_size=60

interactive_timeout=1200

wait_timeout=1200

max_connect_errors=50

max_allowed_packet = 64M

myisam_sort_buffer_size = 64M

query_cache_limit=1M

query_cache_size=64M

query_cache_type=1

read_buffer_size = 256k

read_rnd_buffer_size = 512k

sort_buffer_size = 512k

join_buffer_size=512K

tmp_table_size = 64M # default is 32M = 33554432      

max_heap_table_size = 64M #recommend same size as tmp_table_size

bulk_insert_buffer_size = 64M     #recommend same size as tmp_table_size

table_cache=512

thread_concurrency=4 

skip-innodb

[myisamchk]

key_buffer=64M

sort_buffer=64M

read_buffer=16M

write_buffer=16M

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

[mysqldump]

quick

quote-names

max_allowed_packet=128M

Настройка myisam, похоже, не работает вообще. Мне пришлось исправить поврежденные таблицы с помощью функции восстановления базы данных в PhpMyadmin после того, как весь мой сайт вышел из строя. Было бы очень полезно, если бы я мог заставить работать myisam-recovery

Еще одна проблема, которую я заметил, - это очень много времени, чтобы остановить службу MySQL. и ответ всегда говорит "Неудачно", но я все еще могу запустить службу MySQL.

MySQl версия 5.0.77

Похоже, у меня еще есть пара дней, прежде чем эта проблема возникнет снова. Кто-нибудь может мне помочь?

2 ответа

socket: '/var/lib/mysql/mysql.sock'  port: 0  Source distribution

Кажется, что когда вы используете --skip-networking вариант, вы увидите это сообщение, потому что вы должны подключиться через каналы имен или сокет Unix.

Вы сказали, что у вас есть несколько процессов, пожалуйста, покажите нам вывод ps -ef | grep mysql и my.cnf оставшихся процессов.

Не слишком ли много "учетных записей" пытаются войти в систему при каждом доступе к базе данных? Разве они не несут постоянные сессии?

Другие вопросы по тегам