Инструменты пользователя

Инструменты сайта


Боковая панель

Связь

faq.mysql

FAQ.MySQL

MySQL Error

Can't open file: '***.MYI'. (errno: 145)

Error:

100125  9:33:30 /usr/local/libexec/mysqld: Can't open file: '***.MYI'. (errno: 145)
ERROR: 1016  Can't open file: '***.MYI'. (errno: 145)
  • Решение: запуск утилиты myisamchk
myisamchk --silent --force */*.MYI

Also, run the following SQL query using phpMyAdmin:

REPAIR TABLE TableName

Client requested master to start replication from impossible position (server_errno=1236)

100125  9:49:57 Error reading packet from server: Client requested master to start replication from impossible position (server_errno=1236)
100125  9:49:57 Got fatal error 1236: 'Client requested master to start replication from impossible position' from master when reading data from binary log
100125  9:49:57 Slave I/O thread exiting, read up to log 'broadband-bin.3239', position 61452688
  • Решение:

Остановить репликацию. Сделать mysqldump на мастере, перед этим SHOW MASTER STATUS\G; Отметить у себя текущий File (binlog.000xx) и позицию Position. Дамп залить на slave, там же сделать CHANGE MASTER TO MASTER_LOG_FILE="записанный binlog.000xx", MASTER_LOG_POS="записанная позиция"; Запустить репликацию

Access denied for user 'debian-sys-maint'@'localhost'

Ошибка "Access denied for user 'debian-sys-maint'@'localhost'" в Debian может появляться в нескольких случаях, например

  • при повреждении системной БД mysql и установки её заново
  • при переносе MySQL из другой операционной системы

Пользователь debian-sys-maint служит например для проверки таблиц при запуске сервера MySQL.

Для исправления ошибки, запоминаем пароль(строка password) из файла debian.cnf. И через клиента mysql и выполняем две SQL команды

# nano /etc/mysql/debian.cnf
# mysql -u root -p
mysql> GRANT RELOAD, SHUTDOWN, PROCESS, SHOW DATABASES, SUPER, LOCK TABLES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'пишем пароль из debian.cnf';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'пишем пароль из debian.cnf' WITH GRANT OPTION; 

MySQL Logs

Существует несколько видов журналов (logs) сервера MySQL:

  1. бинарный лог (binary log)
  2. лог ошибок (error log)
  3. лог медленный запросов (slow query log)
  4. лог запросов (general query log)
  5. лог репликаций (relay log)

Подробные логи (general query log) MySQL

Для включения подробного логгирования запросов ко всем базам MySQL, нужно в файле my.cnf в секции [mysqld] нужно прописать строки:

general_log_file        = /var/log/mysql/mysql.log
general_log             = 1

Создать и присвоить права этому файлу, перегрузить сервер MySQL:

touch /var/log/mysql/mysql.log
chown mysql:mysql /var/log/mysql/mysql.log
/etc/init.d/mysql restart

лог медленный запросов (slow query log)

Для обнаружения неэффективных запросов к базе, следует проверить лог медленных запросов. В случае оптимизации запросов этот лог поможет выяснить, что необходимо оптимизировать в первую очередь. Настройки в my.cnf

  • Местоположение лога: log_slow_queries = /var/log/mysql/mysql_slow.log
  • Со скольки секунд выполнения запрос считается медленным, минимальное значений — 1 секунда, по умолчанию 10 секунд: long_query_time = 10
  • Если надо логировать запросы, которые не используют индексы, надо добавить строку: log-queries-not-using-indexes
  • Если надо вести лог медленных команд, таких как OPTIMIZE TABLE, ANALYZE TABLE и ALTER TABLE: log-slow-admin-statements
faq.mysql.txt · Последние изменения: 2015/08/26 07:45 (внешнее изменение)