Обложка канала

ServerAdmin.ru

12437 @srv_admin

Авторская информация о системном администрировании.

ServerAdmin.ru

4 года назад
Открыть в
Решил упростить себе задачу и подготовить список настроек, которые надо обязательно проверить при настройке одиночного mysql/mariadb сервера. Я не буду давать описания настроек и советовать какие-то значения, потому что это очень большой объём информации. Вы сами сможете её найти в интернете и подогнать под свою ситуацию. Первое, что надо сделать - сбалансировать потребление памяти сервером. Не обязательно делать это вручную. Можно воспользоваться скриптом mysqltuner. Перечислю параметры Global + Thread, из которых складывается потребление памяти: Global: innodb_buffer_pool_size innodb_log_file_size key_buffer_size innodb_log_buffer_size query_cache_size aria_pagecache_buffer_size Эти значения просто суммируются. Thread: sort_buffer_size join_buffer_size read_buffer_size read_rnd_buffer_size max_allowed_packet thread_stack Эти значения суммируются и умножаются на max_connections. Как я уже сказал, не обязательно их все править. Можно воспользоваться mysqltuner или оставить дефолтные значения, а вручную указать наиболее критичные - innodb_buffer_pool_size, max_connections. Остальные параметры mysqltuner подскажет, как подогнать под основные. Innodb_buffer_pool_size подбирают таким образом, чтобы с учётом всех остальных параметров суммарное потребление оперативной памяти не выходило за отведённые для Mysql Server пределы. Обязательно проверяю: bind-address = 127.0.0.1 Если не требуются подключения извне, привязываю к localhost. Проверяю расположение логов и чаще всего сразу добавляю лог медленных запросов: log_error = /var/log/mysql/error.log slow_query_log slow_query_log_file  = /var/log/mysql/slow.log long_query_time = 2.0 Указываю нужную кодировку. Сейчас вроде бы везде utf8mb4 по умолчанию стоит, раньше utf8 ставили. character-set-server = utf8mb4 collation-server   = utf8mb4_general_ci Важные параметры, которые заметно влияют на производительность: open_files_limit table_open_cache  Они привязаны к количеству соединений и таблиц в базе. Для того же Bitrix эти параметры имеют высокие значения и часто упираются в системные лимиты ОС для отдельного процесса. Их нужно тоже увеличить. Например вот так: # mkdir /etc/systemd/system/mysqld.service.d # touch limit.conf Содержимое файла: [Service] LimitNOFILE=65535 Ещё один параметр, на который стоит обратить внимание: innodb_temp_data_file_path Он регулирует размер и рост файла с временным табличным пространством. Этот файл иногда может вырастать до огромных размеров и вызывать нехватку свободного места. Имеет смысл его сразу ограничить до разумных пределов. Вот пример ограничения размера в 2 ГБ и роста частями по 12 Мб innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:2G Это основное, на что я обращаю внимание. Более детальные настройки делаются, если возникают какие-то проблемы. #mysql