Различия
Показаны различия между двумя версиями страницы.
— | mysql_error [2022/10/02 09:49] (текущий) – создано - внешнее изменение 127.0.0.1 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== MySQL Error устраняем типичные ошибки ====== | ||
+ | |||
+ | [[MySQL|MySQL]], | ||
+ | |||
+ | Начинать нужно не с просмотра логов, как бы не странно это звучало. Нужно собрать сведения о рабочем окружении базы данных. | ||
+ | |||
+ | Если не будет сказано обратного, | ||
+ | ===== Шаг 1: Как узнать версию MySQL, MariaDB ===== | ||
+ | Из листинга ниже, видно что на сервере установлен именно MySQL версии 5.6.51, а не MariaDB. | ||
+ | <file bash> | ||
+ | mysql --version | ||
+ | mysql Ver 14.14 Distrib 5.6.51, for Linux (x86_64) using EditLine wrapper | ||
+ | </ | ||
+ | |||
+ | ===== Шаг 2: Как узнать количество процессоров и ОЗУ в VPS ===== | ||
+ | Теперь нужно узнать какими мощностями обладает сервер, | ||
+ | * Размер ОЗУ смотрим утилитой [[free|free]]. Нам интересны столбцы total - полный размер установленной ОЗУ (в нашем случае 1ГБ) и столбец available - сколько в настоящее время свободно оперативной памяти. | ||
+ | <file bash> | ||
+ | # free -h | ||
+ | total used free shared | ||
+ | Mem: | ||
+ | </ | ||
+ | * Свободное место на жестком диске утилитой [[df|df]]: | ||
+ | {{ :: | ||
+ | * Количество ядер процессора вашего сервера, | ||
+ | <file bash> | ||
+ | cat / | ||
+ | или | ||
+ | lscpu | ||
+ | </ | ||
+ | <file bash> | ||
+ | CPU(s): | ||
+ | Model name: DO-Regular | ||
+ | CPU MHz: | ||
+ | Hypervisor vendor: | ||
+ | Virtualization type: full | ||
+ | L1d cache: | ||
+ | L1i cache: | ||
+ | L2 cache: | ||
+ | </ | ||
+ | В нашем случае всего 1 ядро, процессор DO-Regular (это самый минимум). | ||
+ | |||
+ | ===== Шаг 3: Как узнать реальный размер базы данных, | ||
+ | **Читайте также: | ||
+ | |||
+ | Предполагаем, | ||
+ | Вывести полный размер директории: | ||
+ | <file bash> | ||
+ | # du -hsx / | ||
+ | 208M / | ||
+ | </ | ||
+ | Вывести полный размер директории для каждой базы данных. **Учтите, | ||
+ | <file bash> | ||
+ | # du -h / | ||
+ | 2.0M / | ||
+ | 636K / | ||
+ | 13M / | ||
+ | 2.8M / | ||
+ | 2.7M / | ||
+ | 1.6M / | ||
+ | 1.9M / | ||
+ | 12M / | ||
+ | 208M / | ||
+ | </ | ||
+ | |||
+ | |||
+ | Узнаем размер базы данных (в мегабайтах) с помощью SQL запроса. Запрос выведет точный размер базы MySQL для каждой из существующих баз, теперь вы можете ориентироваться что и сколько занимает | ||
+ | |||
+ | | ||
+ | <file sql> | ||
+ | SELECT table_schema AS "Name DB", | ||
+ | ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size in MB" | ||
+ | FROM information_schema.TABLES | ||
+ | GROUP BY table_schema; | ||
+ | </ | ||
+ | {{ :: | ||
+ | Если какая -то из БД вам кажется большой, | ||
+ | <file sql> | ||
+ | SELECT table_name AS "Name table", | ||
+ | </ | ||
+ | |||
+ | |||
+ | <callout type=" | ||
+ | |||
+ | ===== Шаг 4: Как посмотреть какой движок (Engine) используют таблицы баз (INNODB, MyISAM)? | ||
+ | Зачастую приблуды типо [[phpmyadmin|phpmyadmin]] или нет времени использовать или нет возможности. Значит все сведения нужно получить из консоли Mysql. | ||
+ | |||
+ | Возможно понадобится узнать движки, | ||
+ | {{ :: | ||
+ | Обратите внимание на столбец Support, если указано значение " | ||
+ | |||
+ | Самый простой способ узнать тип движка у таблицы — это вызвать SHOW CREATE TABLE < | ||
+ | <file sql> | ||
+ | SHOW CREATE TABLE wp_posts; | ||
+ | ... | ||
+ | ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | ===== Шаг ?: my.cnf | ||
+ | * [[my.cnf]] | ||
+ | ===== Шаг ?: Лог медленный запросов (slow query log) ===== | ||
+ | |||
+ | * [[https:// | ||
+ | |||
+ | Для обнаружения неэффективных запросов к базе, следует проверить лог медленных запросов. В случае оптимизации запросов этот лог поможет выяснить, | ||
+ | Настройки в my.cnf раздел mysqld | ||
+ | <file bash> | ||
+ | [mysqld] | ||
+ | log_output = file | ||
+ | slow_query_log = ON | ||
+ | long_query_time = 0 | ||
+ | log_slow_admin_statements = ON | ||
+ | log_slow_slave_statements = ON | ||
+ | slow_query_log_file = / | ||
+ | </ | ||
+ | |||
+ | * Местоположение лога: log_slow_queries = / | ||
+ | * Со скольки секунд выполнения запрос считается медленным, | ||
+ | * Если надо логировать запросы, | ||
+ | * Если надо вести лог медленных команд, | ||
+ | ===== Шаг ?: Дополнительные утилиты диагностики MysQL ===== | ||
+ | * [[mytop]] | ||
+ | * mysqladmin | ||
+ | ===== Шаг ?: 100% загрузка процессора | ||
+ | |||
+ | |||
+ | Загрузка mysql, которую вы видите в " | ||
+ | |||
+ | ===== Шаг ?: MySQL полностью многопоточен? | ||
+ | Говорят! MySQL полностью многопоточен и будет использовать несколько процессоров, | ||
+ | |||
+ | Но настройка этой так называемой многопоточности разница от версии к версии: | ||
+ | |||
+ | Типичным параметром в my.ini, влияющим на производительность потока, | ||
+ | |||
+ | < | ||
+ | thread_cache_size = 8 | ||
+ | </ | ||
+ | Thread_cache_size может быть увеличен для улучшения производительность, | ||
+ | |||
+ | Если вы используете Solaris, то вы можете использовать | ||
+ | |||
+ | < | ||
+ | thread_concurrency = 8 | ||
+ | </ | ||
+ | Thread_concurrency позволяет приложениям давать системе потоков подсказку о желаемом количестве потоков, | ||
+ | |||
+ | Эта переменная устарела с MySQL 5.6.1 и удалена в MySQL 5.7. Вы должны удалять ее из файлов конфигурации MySQL всякий раз, когда вы ее видите, | ||
+ | |||
+ | |||
+ | ===== Шаг ?: InnoDB | ||
+ | Если же нужно посмотреть информацию в более удобном виде и узнать не только ENGINE, то можно выполнить такой SQL-запрос: | ||
+ | <file sql> | ||
+ | SELECT TABLE_NAME, | ||
+ | </ | ||
+ | Колонка ENGINE — это тип движка у таблицы; | ||
+ | Колонка ROW_FORMAT — это формат строк таблицы; | ||
+ | Колонка TABLE_ROWS — это количества записей в таблице; | ||
+ | Колонка DATA_LENGTH — это размер данных в таблице в байтах; | ||
+ | Колонка INDEX_LENGTH — это размер индекса в таблице в байтах; | ||
+ | |||
+ | |||
+ | |||
+ | InnoDB — основной движок для MySQL, который с версии 5.5 стал дефолтным. Поддерживает транзакции, | ||
+ | |||
+ | |||
+ | Чтобы уменьшить размер своей базы данных с движком InnoDB, необходимо воспользоваться mysqldump, чтобы сделать дамп всех своих таблиц, | ||
+ | |||
+ | |||
+ | Источник https:// | ||
+ | |||
+ | MariaDB начиная с 10.0.4 | ||
+ | Постоянная статистика для InnoDB была введена в MariaDB 10.0.4 . | ||
+ | |||
+ | До MariaDB 10.0 статистика InnoDB не хранилась на диске, а это означало, | ||
+ | |||
+ | Существует ряд переменных, | ||
+ | |||
+ | innodb_stats_persistent - если установлено (по умолчанию), | ||
+ | innodb_stats_auto_recalc - если установлено (по умолчанию), | ||
+ | innodb_stats_persistent_sample_pages - Количество страниц индекса, | ||
+ | Эти настройки могут быть перезаписаны для каждой таблицы с помощью предложений STATS_PERSISTENT , STATS_AUTO_RECALC и STATS_SAMPLE_PAGES в операторе CREATE TABLE или ALTER TABLE . | ||
+ | |||
+ | ==== innodb_file_per_table ==== | ||
+ | Данные, | ||
+ | |||
+ | Ранее MySQL по умолчанию все таблички innodb хранил в одном файле - когда их накапливается приличное количество - файл значительно разрастается. Плюс не забывайте, | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | Данные, | ||
+ | |||
+ | Значения параметра, | ||
+ | |||
+ | * MySQL версии до 5.6.6 и MariaDB 5.5 — innodb_file_per_table = 0 (данные хранятся в одном файле ibdata1) | ||
+ | * MySQL 5.6.6 и старше + MariaDB 10.x — innodb_file_per_table = 1 (данные хранятся в разных файлах с расширением .ibd) | ||
+ | |||
+ | ====== FAQ: MySQL Error ====== | ||
+ | |||
+ | ===== MYSQL/ | ||
+ | Аналогичная ошибки, | ||
+ | |||
+ | То лечится это одинаково, | ||
+ | < | ||
+ | 100125 | ||
+ | ERROR: 1016 Can't open file: ' | ||
+ | </ | ||
+ | <file bash> | ||
+ | Table 'your table' is marked as crashed and last (automatic? | ||
+ | </ | ||
+ | |||
+ | Предварительно остановите Базу данных, | ||
+ | < | ||
+ | service mysql stop | ||
+ | </ | ||
+ | |||
+ | * Решение: | ||
+ | < | ||
+ | myisamchk --silent --force */*.MYI | ||
+ | </ | ||
+ | * Восстановить сразу во всех базах | ||
+ | <file bash> | ||
+ | myisamchk -r / | ||
+ | </ | ||
+ | |||
+ | Also, run the following SQL query using phpMyAdmin: | ||
+ | < | ||
+ | REPAIR TABLE TableName | ||
+ | </ | ||
+ | ===== MySQL продолжает «падать» ===== | ||
+ | |||
+ | Если такая проблема возникает, | ||
+ | |||
+ | Чтобы узнать время безотказной работы сервера, | ||
+ | < | ||
+ | mysqladmin version -uroot -p | ||
+ | |||
+ | Server version | ||
+ | Protocol version | ||
+ | Connection | ||
+ | UNIX socket | ||
+ | Uptime: | ||
+ | |||
+ | Threads: 1 Questions: 59 Slow queries: 0 Opens: 102 Flush tables: 1 Open tables: 95 Queries per second avg: 0.015 | ||
+ | </ | ||
+ | |||
+ | Кроме того, можно остановить сервер, | ||
+ | |||
+ | < | ||
+ | $ sudo mysqladmin -i 5 status | ||
+ | </ | ||
+ | Или | ||
+ | |||
+ | < | ||
+ | $ sudo mysqladmin -i 5 -r status | ||
+ | </ | ||
+ | |||
+ | ===== Client requested master to start replication from impossible position (server_errno=1236) ===== | ||
+ | < | ||
+ | 100125 | ||
+ | 100125 | ||
+ | 100125 | ||
+ | </ | ||
+ | * Решение: | ||
+ | Остановить репликацию. | ||
+ | Сделать mysqldump на мастере, | ||
+ | SHOW MASTER STATUS\G; | ||
+ | Отметить у себя текущий File (binlog.000xx) и позицию Position. | ||
+ | Дамп залить на slave, там же сделать | ||
+ | CHANGE MASTER TO MASTER_LOG_FILE=" | ||
+ | Запустить репликацию | ||
+ | |||
+ | ====== Access denied for user ' | ||
+ | Ошибка " | ||
+ | * при повреждении системной БД mysql и установки её заново | ||
+ | * при переносе MySQL из другой операционной системы | ||
+ | Пользователь debian-sys-maint служит например для проверки таблиц при запуске сервера MySQL. | ||
+ | |||
+ | Для исправления ошибки, | ||
+ | # nano / | ||
+ | # mysql -u root -p | ||
+ | mysql> GRANT RELOAD, SHUTDOWN, PROCESS, SHOW DATABASES, SUPER, LOCK TABLES ON *.* TO ' | ||
+ | mysql> GRANT ALL PRIVILEGES ON *.* TO ' | ||
+ | </ | ||
+ | |||
+ | ====== MySQL Logs ====== | ||
+ | |||
+ | Существует несколько видов журналов (logs) сервера MySQL: | ||
+ | - бинарный лог (binary log) | ||
+ | - лог ошибок (error log) | ||
+ | - лог медленный запросов (slow query log) | ||
+ | - лог запросов (general query log) | ||
+ | - лог репликаций (relay log) | ||
+ | ===== Подробные логи (general query log) MySQL ===== | ||
+ | Для включения подробного логгирования запросов ко всем базам [[MySQL]], нужно в файле my.cnf в секции [mysqld] нужно прописать строки:< | ||
+ | general_log_file | ||
+ | general_log | ||
+ | </ | ||
+ | touch / | ||
+ | chown mysql:mysql / | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | ====== Заключение ====== | ||
+ | Самое важное при диагностике — понять, | ||
+ | |||
+ | * Cамый важный шаг — просмотреть журналы MySQL, которые хранятся в каталоге / | ||
+ | * Если служба MySQL не запускается, | ||
+ | * Вы также можете проверить файл системного журнала (например, | ||
+ | * Попробуйте использовать такие инструменты, | ||
+ | * Если проблема в каком-либо процессе, | ||
+ | * Если вы уверены, | ||
+ | * Если при подключении проблема не связана с сервером, | ||
📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.
📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Nginx простые примеры конфигурации
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах
7 Самых Популярных Обзоров
- Хостинг для Python-скриптов и приложений
- ТОП 4 лучших антидетект браузеров (Бесплатные & Платные)
- Подборка купонов (промокоды) на хостинг, антидетект браузеры
- Обзор THE.Hosting (PQ Hosting): надежный хостинг с профессиональной поддержкой
- Хостинг в России
- Хостинг в Европе
- Обзор браузера Dolphin {anty} для мультиаккаунтинга