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

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


faq.mysql

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

faq.mysql [2020/06/13 13:45] (текущий)
Строка 1: Строка 1:
 +====== FAQ.MySQL ======
 +**Ссылки**:
 +  * [[http://habrahabr.ru/blogs/mysql/50064/|Восстановление базы MySQL из бинарных логов]]
 +  * [[http://phpclub.ru/mysql/doc/binary-log.html|4.9.4. Бинарный журнал обновлений]] MySQL - справочное руководство на русском
 +  * [[http://systems.takizo.com/2009/08/23/how-to-remove-mysql-binary-log/|How to Remove MySQL Binary Log]]
  
 +====== MySQL Error ======
 +===== Can't open file: '***.MYI'. (errno: 145) =====
 +Error:
 +<code>
 +100125  9:33:30 /usr/local/libexec/mysqld: Can't open file: '***.MYI'. (errno: 145)
 +ERROR: 1016  Can't open file: '***.MYI'. (errno: 145)
 +</code>
 +  * Решение: запуск утилиты myisamchk
 +<code>
 +myisamchk --silent --force */*.MYI
 +</code>
 +
 +Also, run the following SQL query using phpMyAdmin:
 +<code>
 +REPAIR TABLE TableName
 +</code>
 +===== Client requested master to start replication from impossible position (server_errno=1236) =====
 +<code>
 +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
 +</code>
 +  * Решение:
 +Остановить репликацию.
 +Сделать 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]] команды<file bash>
 +# 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; 
 +</file>
 +
 +====== MySQL Logs ======
 +  * [[http://dev.mysql.com/doc/refman/5.1/en/server-logs.html|MySQL Server Logs]]
 +  * [[http://habrahabr.ru/sandbox/22772/|Журналы (logs) в MySQL]]
 +
 +Существует несколько видов журналов (logs) сервера MySQL:
 +  - бинарный лог (binary log)
 +  - лог ошибок (error log)
 +  - лог медленный запросов (slow query log)
 +  - лог запросов (general query log)
 +  - лог репликаций (relay log)
 +===== Подробные логи (general query log) MySQL =====
 +Для включения подробного логгирования запросов ко всем базам [[MySQL]], нужно в файле my.cnf в секции [mysqld] нужно прописать строки:<file>
 +general_log_file        = /var/log/mysql/mysql.log
 +general_log             = 1
 +</file>Создать и присвоить права этому файлу, перегрузить сервер MySQL:<file>
 +touch /var/log/mysql/mysql.log
 +chown mysql:mysql /var/log/mysql/mysql.log
 +/etc/init.d/mysql restart
 +</file>
 +===== лог медленный запросов (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 · Последнее изменение: 2020/06/13 13:45 (внешнее изменение)