Содержание

Оптимизация сервера MySql. Шаг первый. Утилита mysqltuner.

Так повелось, что в мире хостинга ,  самой популярной базой данных, де факто стала база mysql. Простота установки , бесплатность, а главное, высокая скорость работы,  сделали ее одной из наиболее часто используемых баз данных в мире хостинга.  Она может многое, работает быстро, но, без должной изначальной настройки может стать очень узким местом. А отсюда может тянуться и медленная загрузка страниц сайта, и ошибки на страницах вида «Too many active connections».

После установки mysql на выделенный сервер, изначально его файл конфигурации размещается в  /etc/my.cnf  и выглядит весьма скромно.  В такой конфигурации работать то он будет, но про какую-либо оптимальную работу говорить не приходиться. Вот и попробуем немного улучшить наши настройки сервера mysql, для его более оптимальной работы. Первым делом нам необходимо взять более менее нормальный конфигурационный файл my.cnf, более подходящий для нашего сервера. А найти его можно в /usr/share/mysql. Там есть четыре необходимых нам файлика: my-small.cnf, my-medium.cnf, my-large.cnf и my-huge.cnf.  Выбираем под наш сервер, нашу память, наши запросы наиболее подходящий файл.  my-small.cnf — конфигурация для систем с обьемом памяти менее 64Mb, где mysql используется время от времени. Это не для нас. medium.cnf — чуть лучше, под mysql может выделяться до 64Мb памяти. В общем то это тоже обычно не для нас, разве что очень маломощные VDS, VPS. my-large.cnf — уже посерьезнее,  для систем с оперативной памятью от 512Мb. my-huge.cnf — для систем  с оперативной памятью 1-2Gb.  Выбираем одну из наиболее подходящих нам конфигураций и переписываем ее вместо текущей my.cnf . Например:

 cp /usr/share/mysql/my-large.cnf  /etc/my.cnf

После чего делаем рестарт сервера.

service mysqld restart

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

 

Одной из таких утилит, которая может помочь в выявлении проблемных мест конфигурации сервера mysql, является утилита mysqltuner. Утилита представляет собой скрипт написанный на языке perl. Инсталляции не требует. Его просто нужно скачать  

 wget http://mysqltuner.pl/

 и запустить 

perl mysqltuner.pl

Скрипт попросит имя и пароль MySQL администратора, после чего выведет результаты своей работы.  Вывод результатов работы утилиты примерно такой:

 [root@host 1]# perl mysqltuner.pl

 

 >>  MySQLTuner 1.0.1 — Major Hayden <[email protected]>

 >>  Bug reports, feature requests, and downloads at http://mysqltuner.com/

 >>  Run with ‘—help’ for additional options and output filtering

Please enter your MySQL administrative login: root

Please enter your MySQL administrative password:

 

——— General Statistics —————————————————

[—] Skipped version check for MySQLTuner script

[OK] Currently running supported MySQL version 5. 0.82sp1-log

[!!] Switch to 64-bit OS — MySQL cannot currently use all of your RAM

 

——— Storage Engine Statistics ——————————————-

[—] Status: -Archive +BDB -Federated +InnoDB -ISAM -NDBCluster

[—] Data in MyISAM tables: 19M (Tables: 90)

[!!] InnoDB is enabled but isn’t being used

[!!] BDB is enabled but isn’t being used

[!!] Total fragmented tables: 18

 

——— Performance Metrics ————————————————-

[—] Up for: 16m 37s (6K q [6.059 qps], 146 conn, TX: 54M, RX: 665K)

[—] Reads / Writes: 62% / 38%

[—] Total buffers: 298.0M global + 6.3M per thread (100 max threads)

[OK] Maximum possible memory usage: 929.2M (26% of installed RAM)

[OK] Slow queries: 0% (0/6K)

[OK] Highest usage of available connections: 5% (5/100)

[OK] Key buffer size / total MyISAM indexes: 256.0M/2.3M

[!!] Key buffer hit rate: 91. 3% (1K cached / 101 reads)

[OK] Query cache efficiency: 97.6% (5K cached / 5K selects)

[OK] Query cache prunes per day: 0

[OK] Sorts requiring temporary tables: 0% (0 temp sorts / 8 sorts)

[OK] Temporary tables created on disk: 5% (1 on disk / 17 total)

[OK] Thread cache hit rate: 96% (5 created / 146 connections)

[OK] Table cache hit rate: 95% (115 open / 121 opened)

[OK] Open file limit used: 21% (222/1K)

[OK] Table locks acquired immediately: 100% (286 immediate / 286 locks)

 

——— Recommendations ——————————————————

General recommendations:

    Add skip-innodb to MySQL configuration to disable InnoDB

    Add skip-bdb to MySQL configuration to disable BDB

    Run OPTIMIZE TABLE to defragment tables for better performance

    MySQL started within last 24 hours — recommendations may be inaccurate

    Enable the slow query log to troubleshoot bad queries

В первую очередь, на мой взгляд, стоит обратить внимание на  строку  

Highest usage of available connections: 5% (5/100) 

Количество текущих соединений — 5, количество возможных соединений — 100. Параметр 100 — это параметр использующийся по умолчанию. Обычно этого значения маловато, именно из-за него появляются сообщения вида  «Too many active connections». Увеличим этот параметр до 300. Открываем файл /etc/my.cnf в любимом редакторе и в секции  [mysqld] добавляем строчку   

max_connections = 300 

Сохраняемся, выходим и перегружаем сервер mysql.  Повторно запустив mysqltuner увидим соответствующие изменения в выводе. 

 

Еще одним, наиболее важным параметром увеличения производительности mysql является key_buffer_size.  Параметр определяет размер общего для всех пользовательских процессов  буфера индексных блоков MyISAM таблиц. Обычно устанавливается в пределах 30-40% от общей выделенной под Mysql оперативной памяти.  

 

Следует помнить, что рекомендации утилиты mysqltuner будут тем более оптимальны, чем дольше работает без перезагрузок сервер mysql. Скажем так: минимальный интервал в общем то должен составлять не менее 24 часов, о чем и предупреждает утилита после своего запуска.

 

Вкратце рассказал про первые шаги на поприще  оптимизации работы базы данных mysql. Очень подробную информацию практически по каждому параметру в конфиге my.cnf можно найти вот тут. Единственный минус — ресурс англоязычный, но при необходимости, я думаю, разобраться можно. 

Удачи всем в деле оптимизации mysql и быстрых вам SELECT-ов. 🙂 

 

 

 

Оптимизация производительности MySQL при помощи MySQLTuner

Последнее обновление: 28 августа 2021 г.

Использование MySQL на оптимальных настройках для отдельных ресурсов помогает справляться с высокими серверными нагрузками и предотвращает замедление работы сервера.

Perl-скрипт MySQLTuner анализирует статистику работы, оценивает конфигурацию MySQL и выводит пользователю предложения о внесении изменений параметров для повышения производительности и стабильности работы сервера.

Установка

Скачайте MySQLTuner:




wget https://raw.githubusercontent. com/major/MySQLTuner-perl/master/mysqltuner.pl

Для удобства можно воспользоваться штатными репозиториями и установить MySQLTuner.

Для Debian/Ubuntu:




apt-get -y install mysqltuner

Для CentOS:




yum -y install mysqltuner

Разрешите выполнение скрипта (Если производилось скачивание скрипта):




chmod +x mysqltuner.pl

Запустите скрипт mysqltuner.pl. Вам будет предложено ввести имя пользователя и пароль администратора MySQL:

Если производилось скачивание скрипта:




perl mysqltuner.pl --user root --pass rootpassword
или
perl mysqltuner.pl

Если производилась установка:




mysqltuner --user root --pass rootpassword
или 
mysqltuner

Если возникла ошибка:




ERROR: cannot verify raw.githubusercontent. com's certificate, issued by '/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA':
Unable to locally verify the issuer's authority.
To connect to raw.githubusercontent.com insecurely, use `--no-check-certificate'.

Запустите с с ключом —no-check-certificate:




wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl --no-check-certificate

Скрипт вернет результаты анализа, аналогичные представленным ниже:




>>  MySQLTuner 1.4.0 - Major Hayden
>>  Bug reports, feature requests, and downloads at http://mysqltuner.com/
>>  Run with '--help' for additional options and output filtering
Please enter your MySQL administrative login: root
Please enter your MySQL administrative password:
[OK] Currently running supported MySQL version 5.5.41-0+wheezy1
[OK] Operating on 64-bit architecture

-------- Storage Engine Statistics -------------------------------------------
[--] Status: +ARCHIVE +BLACKHOLE +CSV -FEDERATED +InnoDB +MRG_MYISAM
[--] Data in InnoDB tables: 1M (Tables: 11)
[--] Data in PERFORMANCE_SCHEMA tables: 0B (Tables: 17)
[!!] Total fragmented tables: 11

-------- Security Recommendations  -------------------------------------------
[OK] All database users have passwords assigned

-------- Performance Metrics -------------------------------------------------
[--] Up for: 47s (113 q [2.
404 qps], 42 conn, TX: 19K, RX: 7K) [--] Reads / Writes: 100% / 0% [--] Total buffers: 192.0M global + 2.7M per thread (151 max threads) [OK] Maximum possible memory usage: 597.8M (60% of installed RAM) [OK] Slow queries: 0% (0/113) [OK] Highest usage of available connections: 0% (1/151) [OK] Key buffer size / total MyISAM indexes: 16.0M/99.0K [!!] Query cache efficiency: 0.0% (0 cached / 71 selects) [OK] Query cache prunes per day: 0 [OK] Temporary tables created on disk: 25% (54 on disk / 213 total) [OK] Thread cache hit rate: 97% (1 created / 42 connections) [OK] Table cache hit rate: 24% (52 open / 215 opened) [OK] Open file limit used: 4% (48/1K) [OK] Table locks acquired immediately: 100% (62 immediate / 62 locks) [OK] InnoDB buffer pool / data size: 128.0M/1.2M [OK] InnoDB log waits: 0 -------- Recommendations ----------------------------------------------------- General recommendations: Run OPTIMIZE TABLE to defragment tables for better performance Enable the slow query log to troubleshoot bad queries Variables to adjust: query_cache_limit (> 1M, or use smaller result sets)

MySQLTuner предлагает способы повышения производительности базы данных. Если самостоятельно обновить конфигурацию базы данных затруднительно, то выполнение рекомендаций MySQLTuner является одним из безопасных способов повышения производительности.

Настройка MySQL

При изменении конфигурации MySQL следует внимательно относиться к изменениям и их влиянию на базу данных. Даже при выполнении инструкций таких программ, как MySQLTuner, лучше иметь некоторое понимание процесса.

С порядком анализа можно ознакомиться здесь.

Конфигурационный файл MySQL хранится в директории:


/etc/mysql/my.cnf

Для CentOS:


/etc/my.cnf

В этот файл могут быть внесены изменения, основанные на рекомендациях MySQLTuner в пункте Variables to adjust секции Recommendations. Если какого-либо параметра нет в файле my.cnf, допишите его.

После внесения изменений в my.cnf перезагрузите MySQL-сервер:

Debian/Ubuntu и CentOS 6:


/etc/init.d/mysqld restart

CentOS 7:


systemctl restart mariadb

Обратите внимание! Прежде чем проводить обновление конфигурации MySQL, желательно создать бэкап.

Для наиболее эффективного использования возможностей MySQLTuner желательно производить небольшие изменения за раз, а затем проводить повторный анализ. Таким итеративным способом можно будет добиться наилучших результатов при настройке MySQL.

При этом, для того чтобы данные были корректны, необходимо, чтобы сервер MySQL проработал не менее 24 часов без перезагрузок и смены параметров конфигурации перед следующим анализом.

Параметры MySQL

key_buffer

Изменение key_buffer выделяет больше памяти MySQL, что существенно ускоряет работу базы данных при условии наличия свободной памяти. Размер key_buffer обычно должен занимать не более 25% системной памяти при использовании MyISAM и до 70% для InnoDB. Если значение установлено слишком высоко, ресурсы расходуются впустую.

Согласно документации MySQL, для серверов с 256MB (или более) ОЗУ с множеством таблиц рекомендуется настройка 64M. Серверы с 128MB ОЗУ и меньшим количеством таблиц могут быть настроены на 16M — это значение по умолчанию. Веб-сайты с еще меньшим числом ресурсов и таблиц могут быть ограничены даже меньшим объемом.

max_allowed_packet

Этот параметр позволяет задать максимальный размер отправляемого пакета. Если известно, что MySQL-сервер будет обрабатывать большие пакеты, лучше увеличить их до размера самого большого пакета. Если это значение будет слишком маленьким, в журнале ошибок появится ошибка.

thread_stack

Это значение содержит размер стека для каждого треда. MySQL считает значение переменной thread_stack по умолчанию достаточным для нормального использования. Однако в случае регистрации ошибки, связанной с thread_stack, оно может быть увеличено.

thread_cache_size

Этот параметр указывает количество тредов, которые уходят в кеш при отключении клиента. При новом подключении тред используется из кеша, что позволяет экономить ресурсы при значительных нагрузках.

max_connections

Этот параметр задает максимальное количество одновременных подключений. Прежде чем задавать это число, лучше всего учитывать максимальное количество подключений, которые были в прошлом, следовательно у вас будет буфер между верхним числом подключений и значением max_connections. Следует обратить внимание на то, что этот параметр не указывает максимальное количество пользователей на сайте. Вместо этого отображается максимальное количество пользователей, одновременно делающих запросы.

table_cache

Это значение должно быть больше, чем значение open_tables. Для определения этого значения используйте:


SHOW STATUS LIKE 'open%';

С полным перечнем анализируемых параметров можно ознакомиться здесь.

Автоматическая настройка и оптимизация сервера MySQL для повышения производительности / Хабр

Всем привет.

Хочу обсудить с сообществом наш проект, с помощью которого можно за 1 минуту создать конфигурационный файл MySQL, оптимизированный под производительность (тюнинг MySQL). Таким образом можно достаточно быстро создавать конфигурационный файл для первичной оптимизации производительности MySQL.

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

Так же есть инструмент MySQLTuner, который анализирует текущий статус MySQL и системную информацию, после чего выдает рекомендации по составлению конфигурации, но конфигурационный файл необходимо составлять.

Мы попытались упростить эту задачу, создав проект MySQLConfigurer, с помощью которого можно за 1 минуту создать конфигурационный файл MySQL, учитывающий текущую аппаратную конфигурацию системы и статус MySQL.

MySQLConfigurer это bash скрипт и онлайн сервис, который анализирует рекомендации MySQLTuner, информацию о системе, текущий статус MySQL и подготавливает конфигурационный файл MySQL с рекомендуемыми параметрами, помогающими повысить производительность.

Подробная инструкция об использовании размещена на странице проекта, достаточно выполнить всего 5 шагов:

  1. Скачиваем скрипт, код скрипта простой и его можно посмотреть на github.
  2. Запускаем скрипт.
  3. Получаем конфигурационный файл с рекомендуемым значением параметра есть комментарий в котором указано текущее значение.
  4. Копируем файл в директорию с конфигурационными файлами MySQL.
  5. Перезапускаем MySQL.

Мы провели тесты MySQL с помощью Sysbench на виртуальном сервере с операционной системой Debian 9 (2 CPU, 2GB Ram) на таблице в 10 млн. записей.

Тестирование проводилось на 2 конфигурациях: параметры MySQL по умолчанию и рекомендованные MySQLConfigurer. На каждой конфигурации провели по 2 теста: только чтение и чтение / запись.

Тесты показали увеличение производительности до 30% по сравнению с конфигурацией по умолчанию. Результаты тестов можно посмотреть по ссылке.

Сейчас MySQLConfigurer поддерживает MySQL версий 5.5, 5.6 и 5.7.

Буду благодарен за любую обратную связь по проекту MySQLConfigurer. Спасибо.

Страница проекта

Update 24.05.2020
Запущен сайт проекта releem.ru
Мы ставим перед собой задачу сделать инструмент, помогающий инженерам автоматически конфигурировать MySQL для увеличения производительности и снижения затрат на оборудование. Задача разового тюнинга MySQL станет не актуальной и освободившееся время инженеры смогут потратить на дальнейшее улучшение инфраструктуры своих проектов.

Update 24.06.2020
Выпустили релиз 0.3.0

  • Проверена совместимость с MySQL 5.5, MySQL 5.6, MySQL 5.7, MariaDB 10.1, MariaDB 10.2, MariaDB 10.3.
  • Добавлен расчет параметра ‘key_buffer_size’ для увеличения производительности MyIsam storage engine.
  • Добавлен расчет параметра ‘innodb_buffer_pool_chunk_size’ для MySQL 5.7.5 и более новых версий, MariaDB 10. 2.2 и более новых версий.
  • Добавлен расчет параметра ‘max_connections’ на основе показателя ‘Max_used_connections’.
  • Уточнен расчет параметра ‘innodb_log_file_size’.
  • Исправлена документация. Подробно описано как безопасно применить конфигурационный файл MySQL.

Update 08.07.2020
Запущен сайт проекта releem.com
Выпустили релиз 0.3.1

  • Добавлен расчет параметра ‘table_open_cache’
  • Добавлен расчет параметра ‘table_definition_cache’

Update 24.08.2020
Выпустили релиз 0.3.2

  • Добавлена поддержка MySQL 8, MariaDB 10.4, MariaDB 10.5.
  • Исправлен расчет параметра ‘key_buffer_size’
  • Протестирована совместимость MySQL 5.5, MySQL 5.6, MySQL 5.7, MySQL 8.0, MariaDB 10.1, MariaDB 10.2, MariaDB 10.3, MariaDB 10.4, MariaDB 10.5.
  • В документацию добавлена секция о безопасности.
  • В документацию добавлена информация об установке open_files_limit.

Update 22.11.2020
Выпустили релиз 0.4.0

  • Улучшена документация.
  • Добавлена опция -m для установки лимита памяти для MySQL. Применима, если MySQL стоит параллельно с веб-серверов и память необходимо распределить.
  • Исправлено скачивание MySQLTuner на каждом запуске.
  • Созданы группы в Slack и Telegram для поддержки.

Update 30.01.2021
Выпустили релиз 0.5.0

  • Быстрая установка. Достаточно запустить одну команду.
  • Улучшена документация.
  • Опубликовано описание тестирования производительности MySQL 5.7 на сайте releem.com.
  • Исправлена проблема с таймаутами. Некорректная рекомендация значений таймаутов.
  • Добавлена рекомендация «max_allowed_packet».
  • Добавлена рекомендация «read_rnd_buffer_size».
  • Улучшен расчет следующих параметров: «sort_buffer_size», «innodb_buffer_pool_size», «key_buffer_size», «innodb_buffer_pool_instances».

Как оптимизировать MySQL через Mysqltuner?

Оптимизация настроек MySQL с помощью Mysqltuner

Чтобы данные анализа были наиболее полезными, сервер Mysql должен проработать некоторое время без смены параметров конфигурации и без перезагрузок, по рекомендации самого Mysqltuner не менее 24 часов.

Mysqltuner — это perl-скрипт, который анализирует статистику работы Mysql и выдает свои рекомендации по оптимизации настроек Mysql сервера.

Также, можно произвести установку:

Debian/Ubuntu:

# apt-get -y install mysqltuner

CentOS:

# yum -y install mysqltuner

Теперь можно запускать Mysqltuner.

#  mysqltuner

После запуска скрипт произведет анализ и выдаст следующую информацию:

# perl mysqltuner.pl --user root --pass rootpassword
>>  MySQLTuner 1. 2.0 - Major Hayden <[email protected]>
>>  Bug reports, feature requests, and downloads at http://mysqltuner.com/
>>  Run with '--help' for additional options and output filtering
[OK] Logged in using credentials passed on the command line

-------- General Statistics --------------------------------------------------
[--] Skipped version check for MySQLTuner script
[OK] Currently running supported MySQL version 5.5.62
[OK] Operating on 64-bit architecture

-------- Storage Engine Statistics -------------------------------------------
[--] Status: -Archive -BDB -Federated +InnoDB -ISAM -NDBCluster
[--] Data in PERFORMANCE_SCHEMA tables: 0B (Tables: 17)
[!!] InnoDB is enabled but isn`t being used
[OK] Total fragmented tables: 0

-------- Security Recommendations  -------------------------------------------
[OK] All database users have passwords assigned

-------- Performance Metrics -------------------------------------------------
[--] Up for: 36m 42s (112 q [0. 051 qps], 35 conn, TX: 74K, RX: 13K)
[--] Reads / Writes: 90% / 10%
[--] Binary logging is disabled
[--] Total buffers: 160.0M global + 944.0K per thread (50 max threads)
[OK] Maximum reached memory usage: 160.9M (16.16% of installed RAM)
[OK] Maximum possible memory usage: 206.1M (20.69% of installed RAM)
[OK] Slow queries: 0% (0/112)
[OK] Highest usage of available connections: 2% (1/50)
[OK] Aborted connections: 2.86%  (1/35)
[!!] Query cache is disabled
[OK] Temporary tables created on disk: 0% (0 on disk / 10 total)
[!!] Thread cache is disabled
[!!] Table cache hit rate: 8% (4 open / 45 opened)
[OK] Open file limit used: 0% (6/1K)
[OK] Table locks acquired immediately: 100% (58 immediate / 58 locks)

-------- Recommendations -----------------------------------------------------
General recommendations:
    Restrict Host for [email protected]% to [email protected]
    MySQL started within last 24 hours - recommendations may be inaccurate
    Enable the slow query log to troubleshoot bad queries
    Set thread_cache_size to 4 as a starting value
    Increase table_open_cache gradually to avoid file descriptor limits
    Read this before increasing table_open_cache over 64: http://bit. ly/1mi7c4C
    Beware that open_files_limit (1024) variable
    should be greater than table_open_cache ( 4)
Variables to adjust:
    query_cache_size (>= 8M)
    thread_cache_size (start at 4)
    table_open_cache (> 4)
    key_buffer_size (> 100.0K)

Особое внимание стоит уделить строкам, помеченным символами [!!] и секции Recommendations.

Параметры указанные после строки Variables to adjust нужно изменить в файле my.cnf, в соответствии с рекомендациями Mysqltuner. Если указанного параметра нет в файле my.cnf, то его следует дописать.

Расположение конфигурационного файла my.cnf:

Debian/Ubuntu:

/etc/mysql/my.cnf

CentOS:

/etc/my.cnf

После внесения изменений в файл my.cnf нужно перезагрузить Mysql-сервер:

Debian/Ubuntu:

# /etc/init. d/mysql restart

CentOS 6:

# /etc/init.d/mysqld restart

Centos 7

# systemctl restart mariadb

После изменения конфигурации Mysql-сервер должен проработать минимум 24 часа без перезагрузок. Затем, можно снова запустить утилиту Mysqltuner и проанализировать вывод статистики. Таким образом, можно привести конфигурационный файл my.cnf и работу Mysql-сервера, соответственно, к оптимальному состоянию.

Рейтинг хороших SSD VPS по ссылке.

How to Optimize MySQL Performance

Running MySQL at optimal settings for specific resources helps to handle larger server loads and prevents server slowdown.

MySQLTuner is a Perl script that analyzes your MySQL performance, then, based on the statistics it gathers, gives recommendations on your MySQL configuration and outputs suggestions for increasing your server’s performance and stability.

Installation

  1. Download the MySQLTuner script:

    # wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl

    For convenience, you can use the standard repositories and install MySQLTuner.

    For Debian/Ubuntu:

    # apt-get -y install mysqltuner

    For CentOS:

    # yum -y install mysqltuner
  2. Change the scripts permissions to be executable:

    chmod +x mysqltuner.pl
  3. Run the mysqltuner.pl script. You will be prompted to enter in your MySQL administrative login and password:

    If the script was downloaded:

    # perl mysqltuner.pl --user root --pass rootpassword
    или
    # perl mysqltuner.pl

    If the installation was performed:

    #  mysqltuner --user root --pass rootpassword
    или 
    #  mysqltuner
  4. If an error occurs:

    ERROR: cannot verify raw.githubusercontent.com's certificate, issued by '/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA':
    Unable to locally verify the issuer's authority. 
    To connect to raw.githubusercontent.com insecurely, use `--no-check-certificate'.

    Run with the --no-check-certificate switch:

    # wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl --no-check-certificate
  5. The script will return results similar to the output below:

    >>  MySQLTuner 1.4.0 - Major Hayden
    >>  Bug reports, feature requests, and downloads at http://mysqltuner.com/
    >>  Run with '--help' for additional options and output filtering
    Please enter your MySQL administrative login: root
    Please enter your MySQL administrative password:
    [OK] Currently running supported MySQL version 5.5.41-0+wheezy1
    [OK] Operating on 64-bit architecture
    -------- Storage Engine Statistics -------------------------------------------
    [--] Status: +ARCHIVE +BLACKHOLE +CSV -FEDERATED +InnoDB +MRG_MYISAM
    [--] Data in InnoDB tables: 1M (Tables: 11)
    [--] Data in PERFORMANCE_SCHEMA tables: 0B (Tables: 17)
    [!!] Total fragmented tables: 11
    -------- Security Recommendations  -------------------------------------------
    [OK] All database users have passwords assigned
    -------- Performance Metrics -------------------------------------------------
    [--] Up for: 47s (113 q [2. 404 qps], 42 conn, TX: 19K, RX: 7K)
    [--] Reads / Writes: 100% / 0%
    [--] Total buffers: 192.0M global + 2.7M per thread (151 max threads)
    [OK] Maximum possible memory usage: 597.8M (60% of installed RAM)
    [OK] Slow queries: 0% (0/113)
    [OK] Highest usage of available connections: 0% (1/151)
    [OK] Key buffer size / total MyISAM indexes: 16.0M/99.0K
    [!!] Query cache efficiency: 0.0% (0 cached / 71 selects)
    [OK] Query cache prunes per day: 0
    [OK] Temporary tables created on disk: 25% (54 on disk / 213 total)
    [OK] Thread cache hit rate: 97% (1 created / 42 connections)
    [OK] Table cache hit rate: 24% (52 open / 215 opened)
    [OK] Open file limit used: 4% (48/1K)
    [OK] Table locks acquired immediately: 100% (62 immediate / 62 locks)
    [OK] InnoDB buffer pool / data size: 128.0M/1.2M
    [OK] InnoDB log waits: 0
    -------- Recommendations -----------------------------------------------------
    General recommendations:
    Run OPTIMIZE TABLE to defragment tables for better performance
    Enable the slow query log to troubleshoot bad queries
    Variables to adjust:
    query_cache_limit (> 1M, or use smaller result sets)

MySQLTuner offers suggestions regarding how to improve the database’s performance. If you are wary about updating your database on your own, following MySQLTuner’s suggestions is one of the safer ways to improve your database performance.

Tuning MySQL

When changing the MySQL configuration, be alert to the changes and how they affect your database. Even when following the instructions of programs such as MySQLTuner, it is best to have some understanding of the process.

The analysis procedure can be found here.

The MySQL configuration file stored in the following location:

/etc/mysql/my.cnf

For CentOS:

/etc/my.cnf

This file is subject to changes based on the MySQLTuner recommendations in the Variables to adjust section of the Recommendations block. If any parameter is not in the my.cnf file, add it.

You should restart theMySQL server after making changes to my.cnf:

  • Debian/Ubuntu and CentOS 6:

    # /etc/init.d/mysqld restart
  • CentOS 7:

    # systemctl restart mariadb

Please note that we recommend creating a backup prior to updating your MySQL configuration.

Best practice suggests that you make small changes, one at a time, and then re-analyze. In this iterative way, you can achieve the best results when configuring MySQL.

At the same time, in order for the data to be correct, it is necessary that the MySQL server has worked for at least 24 hours without reboots and changing configuration parameters before the next analysis.

MySQL Parameters

key_buffer

Changing the key_buffer allocates more memory to MySQL, which can substantially speed up your databases, assuming you have the memory free. The key_buffer size should generally take up no more than 25 percent of the system memory when using the MyISAM table engine, and up to 70 percent for InnoDB. If the value is set too high, resources are wasted.

According to MySQL’s documentation, for servers with 256MB (or more) of RAM with many tables, a setting of 64M is recommended. Servers with 128MB of RAM and fewer tables can be set to 16M, the default value. Websites with even fewer resources and tables can have this value set lower.

max_allowed_packet

This parameter lets you set the maximum size of a sendable packet. If you know that your MySQL server is going to be processing large packets, it is best to increase this to the size of your largest packet. Should this value be set too small, you would receive an error in your error log.

thread_stack

This value contains the stack size for each thread. MySQL considers the default value of the thread_stack variable sufficient for normal use; however, should an error relating to the thread_stack be logged, this can be increased.

thread_cache_size

This value sets the number of threads that are put in the cache when a client disconnects. Once a new connection is made, the thread is used from the cache, which helps to save resources under significant loads.

max_connections

This parameter sets the maximum amount of concurrent connections. It is best to consider the maximum amount of connections you have had in the past before setting this number, so you’ll have a buffer between that upper number and the max_connections value. Please note that this does not indicate the maximum amount of users on your website at one time; rather it shows the maximum amount of users making requests concurrently.

table_cache

This value should be kept higher than your open_tables value. To determine this value use the following:

SHOW STATUS LIKE 'open%';

A complete list of the analyzed parameters can be found here.

Конфигурация MySQL — Документация VMmanager 5 KVM

  • Документация VMmanager 5 KVM
  • Используемые подсистемы

Оптимальная конфигурация MySQL нужна для корректной работы VMmanager. Особенно актуальна такая необходимость, если панель управления работает с большим количеством виртуальных машин. В противном случае возможны зависания и проблемы при работе панели управления с базой данных MySQL. В статье приведены рекомендации по настройке MySQL для VMmanager.

Панель управления не изменяет настройки MySQL. Конфигурация MySQL индивидуальна для серверов в зависимости от их вычислительных ресурсов и программного обеспечения, поэтому требует ручной настройки.

Конфигурационный файл серверной части MySQL расположен по пути: /etc/my.cnf.d/server.cnf.

Подсистема хранения


В качестве подсистемы хранения рекомендуем использовать InnoDB.

Рекомендации конфигурации


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

MySQL выделено 4GB RAM

table_open_cache = 256 # максимальное количество открытых таблиц, кэшированных в одном экземпляре кеша таблицы. 
sort_buffer_size = 512K # объём памяти для буфера, который выделяет каждый сеанс, выполняющий сортировку.
net_buffer_length = 4M # начальный размер буферов соединений и потоков для каждого потока клиентов.
join_buffer_size = 256K # минимальный размер буфера для запросов, которые не могут использовать индексы и вместо этого выполняют полное сканирование таблицы.
query_cache_size = 32M # размер кэша.
query_cache_limit = 512K # максимальный размер запросов, которые сохраняются в кэш.
max_connections = 300 # максимальное количество параллельных соединений к серверу.
innodb_buffer_pool_size = 3G # размер буфера для InnoDB.
innodb_additional_mem_pool_size = 4M # размер пула памяти InnoDB, используемый для хранения информации о внутренних структурах данных.
innodb_lock_wait_timeout = 60 # время в секундах, в течение которого транзакция InnoDB ожидает блокировки строки InnoDB.

MySQL выделено 8GB RAM

table_open_cache = 512 # максимальное количество открытых таблиц, кэшированных в одном экземпляре кеша таблицы. 
sort_buffer_size = 1M # объём памяти для буфера, который выделяет каждый сеанс, выполняющий сортировку.
net_buffer_length = 8M # начальный размер буферов соединений и потоков для каждого потока клиентов.
join_buffer_size = 512K # минимальный размер буфера для запросов, которые не могут использовать индексы и вместо этого выполняют полное сканирование таблицы.
query_cache_size = 32M # размер кэша.
query_cache_limit = 512K # максимальный размер запросов, которые сохраняются в кэш.
max_connections = 2000 # максимальное количество параллельных соединений к серверу.
innodb_buffer_pool_size = 4G # размер буфера для InnoDB.
innodb_additional_mem_pool_size = 4M # размер пула памяти InnoDB, используемый для хранения информации о внутренних структурах данных.
innodb_lock_wait_timeout = 60 # время в секундах, в течение которого транзакция InnoDB ожидает блокировки строки InnoDB.

MySQLTuner


MySQLTuner — скрипт, анализирующий статистику работы MySQL, и, на основе полученных данных, выдающий рекомендации по настройке. Для получения более надёжных рекомендаций нужно, чтобы MySQL сервер был запущен по крайней мере в течение 24-48 часов без изменения конфигурации. Однако даже в таком случае внимательно анализируйте рекомендации MySQLTuner.

MySQLTuner нужно установить или загрузить.

Установка MySQLTuner:

yum install mysqltuner

или загрузка:

wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.p

Во время загрузки возможна ошибка вида:

ERROR: cannot verify raw.githubusercontent.com's certificate, issued by '/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA': Unable to locally verify the issuer's authority. To connect to raw. githubusercontent.com insecurely, use `--no-check-certificate'.

Тогда запустите загрузку с ключом —no-check-certificate:

wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl --no-check-certificate

Запуск MySQLTuner, если он был установлен:

mysqltuner

или

mysqltuner --user root --pass rootpassword

Запуск MySQLTuner, если он был скачан:

perl mysqltuner.pl

или

perl mysqltuner.pl --user root --pass rootpassword

Спасибо за ваш отзыв!

Была ли полезна статья?

Уточните, почему:

статья не соответствует названию

статью сложно понять

в статье нет ответа на мой вопрос

рекомендации из статьи не помогли

другая причина

Как оптимизировать производительность MySQL с помощью MySQLTuner | Linode

search.query.lndq»> &nbspresults match&nbsp

&nbspresults

Нет результатов

Фильтры

Фильтры ( )

Все

0, ‘текст-белый’: checkbox.checked, ‘текст-серый-400’: !checkbox.checked && checkbox.count === 0 }» style=letter-spacing:.07px x-text=checkbox.title>

Добавить теги

Все

0, ‘текст-белый’: checkbox.checked, ‘текст-серый-400’: !checkbox.checked && checkbox.count === 0 }» style=letter-spacing:.07px x-text=checkbox.title>

Обновлено , Elle Krout

Traducciones al Español

Estamos traduciendo nuestros guías y tutoriales al Español. Эс posible que usted esté viendo una traducción generada автоматический. Estamos trabajando con traductores profesionales пункт verificar лас traducciones де нуэстро ситио сети. Эсте проект es un trabajo en curso.

Создать учетную запись Linode чтобы попробовать это руководство с кредитом в долларах США.

Этот кредит будет применяться к любым действительным услугам, использованным во время вашего первого дней.

Запуск MySQL с оптимальными настройками для определенных ресурсов помогает справляться с большими нагрузками на сервер и предотвращает его замедление. Как правило, после настроить Apache для обработки больших нагрузок, полезно настроить MySQL на дополнительные соединения.

Настройка базы данных — обширная тема, и это руководство охватывает только основы редактирования конфигурации MySQL. Для больших баз данных MySQL может потребоваться значительный объем памяти. По этой причине мы рекомендуем использовать High Memory Linode для таких установок.

Примечание

Для действий, описанных в этом руководстве, требуются привилегии root. Обязательно выполните приведенные ниже шаги как root или с префиксом sudo . Для получения дополнительной информации о привилегиях см. Руководство по пользователям и группам.

Инструменты, которые могут помочь оптимизировать MySQL

Чтобы определить, нуждается ли ваша база данных MySQL в перенастройке, лучше всего посмотреть, как ваши ресурсы работают сейчас. Это можно сделать с помощью top или с помощью Linode Сервис Лонгвью. По крайней мере, вы должны ознакомиться с использованием ОЗУ и ЦП вашего сервера, которые можно узнать с помощью следующих команд:

 эхо [PID] [MEM] [PATH] && ps aux | awk '{напечатать $2, $4, $11}' | сортировать -k2rn | голова -n 20
ps -eo pcpu,pid,user,args | сортировать -k 1 -r | голова -20
 

MySQLTuner

Сценарий MySQLTuner оценивает вашу установку MySQL, а затем выводит предложения по повышению производительности и стабильности вашего сервера.

  1. Загрузите сценарий MySQLTuner:

     wget https://raw. githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
     
  2. Измените разрешения сценариев на исполняемые:

     chmod +x mysqltuner.pl
     
  3. Запустите сценарий mysqltuner.pl . Вам будет предложено ввести логин и пароль администратора MySQL:

     ./mysqltuner.pl
     
  4. Сценарий вернет результаты, аналогичные приведенным ниже:

     >> MySQLTuner 1.4.0 — Major Hayden 
             >> Отчеты об ошибках, запросы функций и загрузки на http://mysqltuner.com/
             >> Запустите с --help для дополнительных опций и фильтрации вывода
            Пожалуйста, введите ваш административный логин MySQL: root
            Пожалуйста, введите ваш административный пароль MySQL:
            [OK] В настоящее время работает поддерживаемая версия MySQL 5.5.41-0+wheezy1
            [OK] Работа на 64-битной архитектуре
            -------- Статистика механизма хранения --------------------------------------- ----
            [--] Статус: +ARCHIVE +BLACKHOLE +CSV -FEDERATED +InnoDB +MRG_MYISAM
            [--] Данные в таблицах InnoDB: 1M (Таблицы: 11)
            [--] Данные в таблицах PERFORMANCE_SCHEMA: 0B (Таблицы: 17)
            [!!] Всего фрагментированных таблиц: 11
            -------- Рекомендации по безопасности ---------------------------------------- ---
            [OK] Всем пользователям базы данных назначены пароли
            -------- Показатели эффективности ---------------------------------------- ---------
            [--] Up for: 47s (113 q [2,404 qps], 42 conn, TX: 19К, прием: 7К)
            [--] Чтение/Запись: 100%/0%
            [--] Всего буферов: 192. 0M глобальных + 2.7M на поток (151 макс. поток)
            [OK] Максимально возможное использование памяти: 597,8 МБ (60% установленной ОЗУ)
            [OK] Медленные запросы: 0% (0/113)
            [OK] Максимальное использование доступных подключений: 0% (1/151)
            [OK] Размер ключевого буфера / общее количество индексов MyISAM: 16,0M/99,0K
            [!!] Эффективность кеша запросов: 0,0% (0 кеша / 71 выбор)
            [OK] Удалений кеша запросов в день: 0
            [OK] Временные таблицы, созданные на диске: 25% (54 на диске / всего 213)
            [OK] Частота попаданий в кеш потоков: 97% (1 создано / 42 подключения)
            [OK] Частота попаданий в кэш таблиц: 24% (52 открытых / 215 открытых)
            [OK] Используемый лимит открытых файлов: 4% (48/1K)
            [OK] Немедленное получение блокировок таблиц: 100% (62 немедленных / 62 блокировки)
            [OK] Буферный пул InnoDB/размер данных: 128.0M/1.2M
            [OK] Журнал InnoDB ожидает: 0
            -------- Рекомендации ----------------------------------------- ------------
            Общие рекомендации:
                Запустите OPTIMIZE TABLE, чтобы дефрагментировать таблицы для повышения производительности. 
                Включите журнал медленных запросов для устранения неполадок с неправильными запросами.
            Переменные для настройки:
                query_cache_limit (> 1M или используйте меньшие наборы результатов) 
    MySQLTuner предлагает способы повышения производительности базы данных. Если вы опасаетесь обновлять свою базу данных самостоятельно, следование рекомендациям MySQLTuner — один из более безопасных способов улучшить производительность вашей базы данных.

Настройка MySQL

При изменении конфигурации MySQL будьте внимательны к изменениям и тому, как они повлияют на вашу базу данных. Даже при следовании инструкциям таких программ, как MySQLTuner, лучше иметь некоторое представление о процессе.

Файл конфигурации MySQL хранится в следующем месте: /etc/mysql/my.cnf .

Примечание

Перед обновлением конфигурации MySQL создайте резервную копию файла my.cnf :

 cp /etc/mysql/my. cnf ~/my.cnf.backup
 

В соответствии с передовой практикой следует вносить небольшие изменения по одному за раз, а затем отслеживать сервер после каждого изменения. Вы должны перезапускать MySQL после каждого изменения:

Для дистрибутивов, использующих systemd:

 systemctl перезапустить mysqld
 

Для дистрибутивов с разными системами инициализации:

 перезапуск службы mysql
 

При изменении значений в файле my.cnf убедитесь, что изменяемая строка не была закомментирована префиксом фунта стерлингов ( # ).

key_buffer

Изменение key_buffer выделяет больше памяти для MySQL, что может существенно ускорить ваши базы данных, если у вас есть свободная память. 9Размер 0049 key_buffer обычно должен занимать не более 25 процентов системной памяти при использовании механизма таблиц MyISAM и до 70 процентов для InnoDB. Если значение слишком велико, ресурсы тратятся впустую.

Согласно документации MySQL, для серверов с 256 МБ (или более) ОЗУ с большим количеством таблиц рекомендуется значение 64 МБ. Для серверов с 128 МБ ОЗУ и меньшим количеством таблиц можно установить значение по умолчанию 16 МБ. Для веб-сайтов с еще меньшим количеством ресурсов и таблиц это значение может быть установлено ниже.

max_allowed_packet

Этот параметр позволяет установить максимальный размер отправляемого пакета. Пакет — это одно состояние SQL, одна строка, отправляемая клиенту, или журнал, отправляемый из исходной базы данных в реплику. Если вы знаете, что ваш сервер MySQL будет обрабатывать большие пакеты, лучше всего увеличить его до размера вашего самого большого пакета. Если это значение будет слишком маленьким, вы получите сообщение об ошибке в журнале ошибок.

thread_stack

Это значение содержит размер стека для каждого потока. MySQL считает значение по умолчанию thread_stack переменная, достаточная для нормального использования; однако, если будет зарегистрирована ошибка, связанная с thread_stack , это значение может быть увеличено.

thread_cache_size

Если thread_cache_size «выключено» (установлено в 0), то любое новое соединение требует создания для него нового потока. Когда соединения разъединяются, поток уничтожается. В противном случае это значение задает количество неиспользуемых потоков для хранения в кэше до тех пор, пока их не потребуется использовать для соединения. Как правило, этот параметр мало влияет на производительность, если только вы не получаете сотни подключений в минуту, и в это время это значение следует увеличить, чтобы большинство подключений можно было выполнять в кэшированных потоках.

max_connections

Этот параметр устанавливает максимальное количество одновременных подключений. Перед установкой этого числа лучше учитывать максимальное количество подключений, которые у вас были в прошлом, чтобы у вас был буфер между этим верхним числом и значением max_connections . Обратите внимание, что это не означает максимальное количество пользователей на вашем веб-сайте одновременно; скорее он показывает максимальное количество пользователей, делающих запросов одновременно.

table_cache

Это значение должно быть выше, чем значение open_tables . Для определения этого значения используйте:

 1
 
 ПОКАЗАТЬ СТАТУС, КАК 'open%'; 

Вы можете обратиться к следующим ресурсам для получения дополнительной информации по теме. Хотя они предоставляются в надежде, что они будут полезно, обратите внимание, что мы не можем ручаться за точность или своевременность материалы внешнего размещения.

  • Библиотека документации MySQL
  • Параметры сервера настройки MySQL
  • MySQLTuner

Эта страница была первоначально опубликована на

база данных mysql



Присоединяйтесь к беседе.

Прочитайте другие комментарии или разместите свои ниже. Комментарии должны быть уважительными, конструктивны и соответствуют теме руководства. Не публиковать внешние ссылки или реклама. Перед публикацией подумайте, будет ли ваш комментарий лучше решить, связавшись с нашим Служба поддержки или запрос на наш Сайт сообщества.

Включите JavaScript для просмотра комментарии от Disqus.comments от Disqus Disqus

Как оптимизировать производительность MySQL с помощью MySQLTuner

Для обработки экспоненциально растущих данных растущему бизнесу часто требуется система управления базами данных, которая является масштабируемой, эффективной, надежной и безопасной.

MySQL является одним из популярных вариантов системы управления реляционными базами данных с открытым исходным кодом . Благодаря поддержке стандартного SQL вы можете быстро запрашивать, обрабатывать и добавлять данные в свои таблицы MySQL.

Чтобы получить максимальную производительность от вашей базы данных MySQL в соответствии с вашим вариантом использования, вы можете использовать команду MySQLTuner . Это сценарий PERL, который предоставляет вам предложения по повышению производительности, безопасности и т. д. MySQL. 

В этой статье вы узнаете, как эффективно использовать команду MySQLTuner для оптимизации производительности MySQL.

Содержание

  • Что такое MySQL?
    • Основные возможности MySQL
  • Как использовать MySQLTuner для оптимизации производительности MySQL?
    • Установка MySQLTuner
    • Запуск MySQLTuner
    • Рекомендации MySQLTuner
  • Часто задаваемые вопросы (FAQ)
  • Заключение

Что такое MySQL?

Image Source

MySQL — популярная система управления реляционными базами данных с открытым исходным кодом . Данные в MySQL хранятся в таблицах, состоящих из строк и столбцов. Он полностью разработан, распространяется и поддерживается корпорацией Oracle.

С технической точки зрения MySQL написан на языках C и C++. Он совместим с несколькими платформами, такими как Microsoft Windows, Oracle Solaris, AIX, Symbian, Linux, MAC OS и т. д. 

MySQL также является неотъемлемой частью Modern LAMP Stack , состоящей из операционной системы на базе Linux, Веб-сервер Apache, база данных MySQL и PHP для обработки.

Используя стандартные команды SQL ( Standard Query Language ), вы можете легко определять, управлять, контролировать и запрашивать данные в таблицах MySQL.

Клиентские графические интерфейсы ( Графический интерфейс пользователя ), такие как MySQL WorkBench, SequelPro или DBVisualizer , можно использовать для ввода команд SQL, и сервер ответит запрошенной информацией.

MySQL также предлагает платную версию Enterprise, которая поставляется с премиальными услугами поддержки, а также рядом расширений, которые можно установить как Server Plugins .

Основные характеристики MySQL

MySQL используется для хранения и извлечения данных в самых разных популярных приложениях, веб-сайтах и ​​службах. Он предлагает набор привлекательных функций, которые делают его одним из самых эффективных RDMS:

  • Простота использования : MySQL поддерживает широкий спектр языков программирования, таких как PHP, PERL, C, C++ и JAVA. Среда MySQL также предоставляет набор инструментов для облегчения таких задач, как Управление сервером, отчетность и анализ данных . Чтобы вы могли работать с более широким диапазоном наборов данных, MySQL полностью поддерживает несколько структур данных, JSON и геопространственные данные , а также логические, числовые, буквенно-цифровые типы данных, дату и время.
  • Лучшая в своем классе производительность : MySQL обеспечивает первоклассную производительность запросов с широким спектром кластеризованных серверов. Он предоставляет быстро загружаемые утилиты с отдельными кэшами памяти, а также с разделением индексов таблиц. MySQL также может эффективно справляться с меняющимися рабочими нагрузками и обрабатывать большие объемы данных с оптимальной скоростью. Это позволяет хранить данные в 50 миллионов строк или более в таблице с ограничением размера файла по умолчанию для таблицы 4 ГБ . Однако, в зависимости от конфигурации вашей операционной системы, вы можете увеличить его до теоретического предела в 8 миллионов терабайт (ТБ). Вы также можете улучшить свою производительность, просмотрев список рекомендаций, выдаваемых командой MySQLTuner .
  • Открытый исходный код : MySQL находится под лицензией Стандартной общественной лицензии GNU (GPL) . Другими словами, MySQL всегда можно использовать бесплатно. Основанный на базе кода Oracle с открытым исходным кодом MySQL, вы можете настроить его в соответствии со своими потребностями. Поскольку это программное обеспечение с открытым исходным кодом, было создано большое общественное сообщество, которое регулярно обогащает документацию MySQL и культуру онлайн-поддержки.
  • Локализация : MySQL поддерживает несколько различных наборов символов, включая latin1 (cp1252), немецкий, big5, ujis, и другие. Вы также можете установить язык сообщений об ошибках, которые сервер предоставляет клиентам. Время сервера MySQL также может быть изменено динамически, поэтому вы можете установить определенный часовой пояс для каждого клиента.
  • Безопасность и защита данных : SQL позволяет настраивать параметры контроля доступа к данным. Вы можете использовать мощные механизмы, такие как Доступ к системе привилегий и Управление учетными записями пользователей , чтобы определить, кто может просматривать или использовать данные MySQL. MySQL устанавливает планку с помощью Host-Based Validation и Password Encryption.

Hevo Data — это конвейер данных без кода, который предлагает полностью управляемое решение для настройки интеграции данных для более чем 100 источников данных (, включая более 40 бесплатных источников ) и позволит вам напрямую загружать данные из источников, таких как . MySQL в хранилище данных или место назначения по вашему выбору. Hevo также поддерживает MySQL в качестве пункта назначения для загрузки в него данных. Он автоматизирует поток данных за считанные минуты без написания кода. Его отказоустойчивая архитектура гарантирует безопасность и согласованность ваших данных. Hevo предоставляет вам действительно эффективное и полностью автоматизированное решение для управления данными в режиме реального времени и всегда имеет готовые к анализу данные.

Начните работу с Hevo бесплатно

Давайте рассмотрим некоторые важные особенности Hevo:

  • Полностью управляемый : не требует управления и обслуживания, поскольку Hevo является полностью автоматизированной платформой.
  • Преобразование данных : Простой интерфейс для совершенствования, изменения и обогащения данных, которые вы хотите передать.
  • В режиме реального времени : Hevo предлагает миграцию данных в режиме реального времени. Таким образом, ваши данные всегда готовы к анализу.
  • Управление схемой : Hevo может автоматически определять схему входящих данных и сопоставлять ее со схемой назначения.
  • Коннекторы : Hevo поддерживает 100+ интеграций с платформами SaaS, такими как WordPress, FTP/SFTP, файлы, базы данных, инструменты BI, а также Native REST API и коннекторы Webhooks. Он поддерживает различные направления, включая Google BigQuery, Amazon Redshift, Snowflake, Firebolt, хранилища данных; Озера данных Amazon S3; блоки данных; и MySQL , SQL Server, TokuDB, DynamoDB, базы данных PostgreSQL и многие другие.
  • Безопасный : Hevo имеет отказоустойчивую архитектуру, которая гарантирует, что данные обрабатываются безопасным и согласованным образом с нулевой потерей данных.
  • Hevo создан для масштабирования : По мере роста количества источников и объема ваших данных Hevo масштабируется горизонтально, обрабатывая миллионы записей в минуту с очень небольшой задержкой.
  • Мониторинг в реальном времени : Расширенный мониторинг дает вам единый обзор для наблюдения за всеми действиями, происходящими в конвейерах данных.
  • Поддержка в режиме реального времени : Команда Hevo доступна круглосуточно, чтобы предоставить исключительную поддержку своим клиентам через чат, электронную почту и звонки в службу поддержки.

Зарегистрируйтесь здесь, чтобы получить 14-дневную бесплатную пробную версию!

Как использовать MySQLTuner для оптимизации производительности MySQL?

MySQLTuner — это скрипт только для чтения, написанный на PERL. Он анализирует вашу установку MySQL и быстро предоставляет вам список рекомендаций и настроек для повышения производительности и стабильности.

Получает текущие переменные конфигурации и данные состояния и отображает полный список статистических данных и предложений, связанных с производительностью, безопасностью и т.  д. 

Он постоянно поддерживается, и поддерживает более 300 индикаторов Конфигураций, таких как Galera Cluster, TokuDB, Performance schema, Linux OS Metrics, InnoDB, MyISAM, Aria и т. д.

Чтобы начать использовать MySQLTuner, вы можете пройти следующие аспекты

  1. Установка MySQLTuner
  2. Запуск MySQLTuner
  3. Рекомендации MySQLTuner

1) Установка MySQLTuner

Для загрузки и установки MySQLTuner выполните следующие действия:

  • Шаг 1 : Вы можете напрямую загрузить, выполнив любую из следующих команд, приведенных ниже:
 wget http://mysqltuner.pl/ -O mysqltuner.pl
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/basic_passwords.txt -O basic_passwords.txt
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/vulnerabilities.csv -O vulnerabilities.csv 

Вы также можете загрузить полный репозиторий, используя git clone или git clone –depth 1 -b master, затем по указанному выше URL-адресу клонирования.

  • Шаг 2 : Чтобы запустить MySQLTuner без вызова Perl, вы можете выполнить следующую команду для изменения разрешений сценария на выполнение.
 chmod +x mysqltuner.pl 

2) Запуск MySQLTuner

Теперь, когда вы установили MySQLTuner, вы можете запустить его, выполнив следующие простые шаги:

  • Шаг 1 : для запуска MySQLTuner. После этого MySQL запросит у вас административный логин и пароль.
 ./mysqltuner.pl 

Вы также можете запустить MySQLTuner, используя любой существующий исполняемый файл Perl в вашей системе. :

  • Дистанционное управление для минимального использования.
 perl mysqltuner.pl --host targetDNS_IP --user admin_user --pass admin_password 
  • Локальная работа для минимального использования.
 perl mysqltuner.pl --host 127.0.0.1 
  • Получение максимальной выходной информации о MySQL без отладки.
 perl mysqltuner.pl --verbose
perl mysqltuner.pl --buffers --dbstat --idxstat --sysstat --pfstat --tbstat 
  • Включить CVE (общие уязвимости и риски) проверить версию MySQL.
 perl mysqltuner.pl --cvefile=vulnerabilities.csv 
  • Сохраните выходные данные MySQLTuner в файле с отображаемой информацией.
 perl mysqltuner.pl --outputfile /tmp/result_mysqltuner.txt 
  • Сохраните результат MySQLTuner в файл без отображения информации.
 perl mysqltuner.pl --silent --outputfile /tmp/result_mysqltuner.txt 
  • На основе синтаксиса Text::Template настройте файл отчета с помощью модели шаблона.
 perl mysqltuner.pl --silent --reportfile /tmp/result_mysqltuner.txt --template=/tmp/mymodel.tmpl 
  • Включить отладочную информацию.
 perl mysqltuner.pl --debug 
  • Обновление MySQLTuner и файлов данных (пароль и CVE) при необходимости.
 perl mysqltuner.pl --checkversion --updateversion 

3) Рекомендации MySQLTuner

Файл конфигурации MySQL обычно находится по адресу /etc/mysql/my.cnf. Всегда рекомендуется создавать резервную копию файла конфигурации my.cnf , выполнив следующую команду:

 cp /etc/mysql/my.cnf ~/my.cnf.backup 

Вы можете начать вносить небольшие изменения по одному на основе предложений и проверять сервер после каждого изменения. Перезапуск сервера после каждого изменения может помочь вам обнаружить аномалии.

 systemctl перезапустить mysqld 

Если ваша система имеет разные системы инициализации, используйте следующую команду:

 service mysql перезапуск 

MySQLTuner может предоставить вам предложения, связанные со следующими параметрами для повышения производительности и стабильности:

  • Key_buffer : изменив это, вы можете выделить больше памяти для MySQL, тем самым ускорив работу ваших баз данных. Предпочтительный размер не должен превышать 25% от общего объема системной памяти при использовании MyISAM Table Engine и до 70 процентов для InnoDB . Документация MySQL предлагает установить 64M для серверов с 256 МБ ОЗУ с большим количеством таблиц. Принимая во внимание, что размер по умолчанию 16M рекомендуется для серверов с меньшим количеством таблиц и 128 МБ ОЗУ.
  • Max_allowed_packet : позволяет установить максимальный размер отправляемого пакета. Этот пакет может быть отдельным состоянием SQL, одной строкой, отправляемой клиенту, или даже журналом, отправляемым из исходной базы данных в реплику. В ситуациях, когда ваш сервер MySQL будет обрабатывать большие пакеты, вы можете увеличить его до размера вашего самого большого пакета.
  • Thread_stack : Хотя MySQL устанавливает размер стека по умолчанию для каждого потока, вы можете увеличить размер, если регистрируется ошибка, связанная с thread_stack.
  • Thread_cache_size : Например, когда вы получаете сотни подключений в минуту, вы можете увеличить его, чтобы большинство подключений можно было выполнять в кэшированных потоках.
  • Max_connections : Используя это, вы можете установить максимальное количество одновременных подключений. Это число может быть оценено на основе прошлого использования, так что существует буфер между этим прошлым верхним числом и параметром max_connections.
  • tmp_table_size или max_heap_table_size : При изменении этого убедитесь, что вы изменили их оба и установили их равными. Основываясь на доступности памяти, вы можете увеличивать их большими порциями, так как это глобальные значения.
  • Join_buffer_size : рекомендуется увеличивать его небольшими приращениями по мере умножения на max_connections.
  • Innodb_buffer_pool_size : Если MySQLTuner предлагает увеличить это значение, вы можете сделать его достаточно большим для размещения всех ваших баз данных InnoDB, поскольку этот параметр значительно влияет на производительность.

Всегда запускайте MySQLTuner через 24 часа после запуска MySQL для получения точных результатов. В случаях, когда рекомендации неясны, рекомендуется проконсультироваться с администратором базы данных или системным администратором, которому вы доверяете.

Часто задаваемые вопросы (FAQ)

Что такое настройка MySQL?

Настройка MySQL относится к процессу повышения производительности операторов SQL в базе данных для получения более качественных, точных и быстрых результатов. MySQLTuner можно использовать для улучшения производительности запросов, а также для проверки установки.

Что такое Table_Open_Cache?

Table_open_cache определяет максимальное количество таблиц, которые могут оставаться открытыми в кэше. Этот параметр настраивает производительность, позволяя легко повторно открывать таблицы. Кроме того, более новые созданные таблицы получат кэш-память, что сэкономит усилия по выделению памяти.

Что такое Key_Buffer_Size?

Переменная key_buffer_size определяет объем памяти, который может быть легко доступен для индекса MySQL. Чем больше памяти, тем быстрее производительность, и это настраивает производительность запросов MySQL.

Что такое Wait_timeout в MySQL?

Это время, в течение которого сервер ожидает бездействия, прежде чем закрыть соединение. Его можно определить как количество секунд, в течение которых сервер ожидает, прежде чем получить плохое рукопожатие.

Заключение

В этой статье вы узнали, как установить, запустить и эффективно использовать MySQLTuner для оптимизации производительности MySQL. MySQLTuner просматривает вашу установку MySQL и предоставляет список предложений по повышению производительности и стабильности.

Прежде чем вносить какие-либо изменения в настройки MySQL, вы всегда можете создать резервную копию файла конфигурации, чтобы легко вернуться к исходным настройкам в случае ошибки.

После повышения производительности MySQL вы можете начать запрашивать данные с большей скоростью. Чтобы получить полное представление о состоянии и производительности вашего бизнеса, вам необходимо консолидировать данные из MySQL и всех других приложений, используемых в вашем бизнесе, для Маркетинг, управление взаимоотношениями с клиентами, бухгалтерский учет, продажи и т.  д. 

Для этого вам необходимо назначить часть инженерной пропускной способности для Интегрировать Данные из всех источников, Очистить и преобразовать их и, наконец, Загрузить их в облачное хранилище данных или пункт назначения по вашему выбору для дальнейшей бизнес-аналитики.

Все эти задачи можно легко решить с помощью облачного ETL-инструмента , такого как Hevo Data .

Если вы используете MySQL в качестве системы управления базами данных и поиск простой альтернативы ручной интеграции данных, то Hevo может легко автоматизировать это для вас.

Посетите наш веб-сайт, чтобы ознакомиться с Hevo

Hevo Data, конвейер данных без кода, может беспрепятственно передавать данные из огромного количества более чем 100 источников, таких как MySQL , в хранилище данных или пункт назначения по вашему выбору для визуализации в BI-инструмент. Это надежный, полностью автоматизированный и безопасный сервис, который не требует написания кода!

Хотите прокатиться на Hevo? Подпишитесь на 14-дневную бесплатную пробную версию и упростите процесс интеграции данных.

Теперь, когда вы знаете, как использовать MySQLTuner для оптимизации производительности вашей базы данных MySQL, вы также можете прочитать эту статью об оптимизации таблиц MySQL и управлении расположением данных в базе данных.

Расскажите нам о своем опыте оптимизации MySQL с помощью MySQLTuner! Поделитесь с нами своими мыслями в комментариях ниже.

Использование MySQLTuner | Сообщество Храма Медиа

Обзор

MySQLTuner — это сценарий, написанный на Perl, который позволяет быстро просмотреть установку MySQL и внести изменения для повышения производительности и стабильности. Текущие переменные конфигурации и данные о состоянии извлекаются и представляются в кратком формате вместе с некоторыми основными рекомендациями по повышению производительности.

Требования

Прежде чем начать, вам потребуется следующее:

  • Вы должны включить пользователя SSH. Подробности смотрите в этой статье: Подключение к вашему серверу через SSH.
  • Ваш пользователь root должен быть включен. Подробности смотрите в этой статье: Подключение к вашему серверу через SSH.
  • В вашей сети активирован MySQL GridContainer.
  • Номер вашего сайта.

ПРОЧИТАЙТЕ СНАЧАЛА
Эта статья предоставлена ​​в качестве любезности. Установка, настройка и устранение неполадок сторонних приложений не входят в объем поддержки, предоставляемой (mt) Media Temple. Пожалуйста, найдите минутку, чтобы просмотреть Заявление о поддержке.

READ ME FIRST
(mt) Media Temple не поддерживает установку и настройку стороннего программного обеспечения на вашем DV-сервере. Пожалуйста, обратитесь к блогу MySQLTuner для получения дополнительной помощи.

Сценарий MySQLTuner будет предлагать изменения, которые вы можете внести в свой сервер, чтобы оптимизировать службы MySQL. (mt) Media Temple не поддерживает предлагаемые изменения конфигурации. Мы рекомендуем вам сделать резервную копию вашего сервиса, прежде чем вносить какие-либо изменения, рекомендованные сценарием.

  • Параметры резервного копирования DV

Инструкции

  1. Подключитесь через SSH к вашей сети.
  2. Установите переменную номера вашего сайта для последующего использования:
     экспорт SITEID=`pwd | awk -F\/ '{напечатать $3}'` 
  3. Загрузите mysqltuner.pl в свою сеть с помощью следующей команды:
     wget -O mysqltuner.pl https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl --no-check-certificate
     
  4. Заполните параметр forcemem размером вашего GridContainer и запустите сценарий с помощью следующей команды:
     perl mysqltuner. pl --host internal-db.s$SITEID.gridserver.com --forcemem 128 
  5. Введите имя пользователя и пароль базы данных, когда увидите следующее:
     Пожалуйста, введите ваш логин администратора MySQL:
    Пожалуйста, введите ваш административный пароль MySQL:
     
  6. Войдите на свой сервер с помощью пользователя root или sudo через SSH.
  7. Загрузите MySQLTuner, выполнив следующую команду:
     wget -O mysqltuner.pl https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl --no-check-certificate 
  8. Дайте скрипту 775 разрешения:
     chmod 775 mysqltuner.pl 
  9. Запустите сценарий с помощью следующей команды:
     перл mysqltuner.pl 
  10. Сценарий должен запуститься, а затем отобразить статистику и рекомендации. Пример вывода:
     >> MySQLTuner 1.0.1 — Major Hayden 
    >> Отчеты об ошибках, запросы функций и загрузки на http://mysqltuner.com/
    >> Запустите с --help для дополнительных опций и фильтрации вывода
    -------- Общая статистика ---------------------------------------- ----------
    [--] Пропущена проверка версии для скрипта MySQLTuner
    [OK] В настоящее время работает поддерживаемая версия MySQL 5. 0.77.
    [OK] Работа на 32-битной архитектуре с оперативной памятью менее 2 ГБ
    -------- Статистика механизма хранения --------------------------------------- ----
    [--] Статус: -Архив -BDB -Federated +InnoDB -ISAM -NDBCluster
    [--] Данные в таблицах MyISAM: 122K (Таблицы: 99)
    [--] Данные в таблицах InnoDB: 52M (Таблицы: 155)
    [!!] Всего фрагментированных таблиц: 5
    -------- Показатели эффективности ---------------------------------------- ---------
    [--] Up for: 262d 23h 58m 26s (2M q [0,121 qps], 328K conn, TX: 572M, RX: 207M)
    [--] Чтение/Запись: 66%/34%
    [--] Всего буферов: 35.0M глобальных + 2.7M на поток (макс. 100 потоков)
    [OK] Максимально возможное использование памяти: 303,7 МБ (45% установленной ОЗУ)
    [OK] Медленные запросы: 0% (3/2M)
    [OK] Максимальное использование доступных подключений: 5% (5/100)
    [OK] Размер буфера ключей / общее количество индексов MyISAM: 8,0M/401,0K
    [!!] Частота попаданий в буфер клавиш: 93,9% (110 КБ в кэше / 6 КБ при чтении)
    [OK] Эффективность кэширования запросов: 82,8 % (932 КБ в кэше / 1 М выборов)
    [OK] Кэш запросов сокращается в день: 11
    [OK] Сортировки, требующие временных таблиц: 0% (0 временных сортировок / 29K сортировок)
    [OK] Временные таблицы, созданные на диске: 25% (88 КБ на диске / 348 КБ всего)
    [!!] Кэш треда отключен
    [!!] Частота попаданий в кэш таблиц: 0% (64 открытых / 184K открытых)
    [OK] Используемый лимит открытых файлов: 8% (86/1K)
    [OK] Немедленное получение блокировок таблиц: 100% (339 тыс.  немедленных / 339 тыс. блокировок)
    [!!] Размер данных InnoDB/буферный пул: 52.6M/2.0M
    -------- Рекомендации ----------------------------------------- ------------
    Общие рекомендации:
    Запустите OPTIMIZE TABLE, чтобы дефрагментировать таблицы для повышения производительности.
    Включите журнал медленных запросов для устранения неполадок с неправильными запросами.
    Установите для thread_cache_size значение 4 в качестве начального значения.
    Постепенно увеличивайте table_cache, чтобы избежать ограничений файлового дескриптора.
    Переменные для настройки:
    thread_cache_size (начиная с 4)
    table_cache (> 64)
    innodb_buffer_pool_size (>= 52M)
     
  11. Не стесняйтесь реализовывать эти предложения по своему усмотрению.

Расширенная поддержка может помочь!

Если у вас возникли проблемы с выполнением действий, описанных в этой статье, дополнительную помощь можно получить в службе расширенной поддержки, в нашем отделе премиум-услуг. Наши опытные инженеры могут помочь в администрировании вашей среды MySQL для достижения оптимальной производительности. Для получения дополнительной информации о том, что Advanced Support может сделать для вас, нажмите здесь.

Ресурсы

  • MySQL Tuner на Github
  • блог.mysqltuner.com
  • Настройка производительности MySQL
  • Улучшение: настройка производительности MySQL

Настройка производительности MySQL: советы, сценарии и инструменты Если вы неправильно настроите хотя бы один из многих параметров конфигурации, это может снизить производительность. Конечно, производительность MySQL часто связана с эффективностью ваших запросов MySQL. Важно убедиться, что проблемы с производительностью не связаны с плохо написанными запросами MySQL. Вы можете использовать журнал медленных запросов MySQL, log_queries_not_using_indexes или инструменты APM, которые предлагают мониторинг производительности MySQL, такие как Datadog, AppOptics, New Relic и другие инструменты мониторинга.

Настройка MySQL — довольно обширная тема. Сегодня я не буду пытаться размещать здесь какие-либо рекомендуемые строки конфигурации, значения или настройки. Будьте очень осторожны со статьями, основанными на рекомендуемых настройках. В этом посте предполагается, что вы уже оптимизировали свои запросы и теперь ищете рекомендации по выбору лучших параметров конфигурации производительности (например, my.cnf) для MySQL. Это может сильно различаться в каждом конкретном случае, так как очень мало универсальных советов. Поэтому советы являются дополнительными ссылками на популярные бесплатные скрипты и инструменты настройки MySQL.

 

Будьте в курсе последних версий сервера MySQL

С каждой новой версией MySQL производительность и функциональные возможности значительно улучшаются по сравнению с предыдущими версиями. Так что самым важным советом будет апгрейд, апгрейд, апгрейд. Взгляните на некоторые сравнения производительности версий здесь.

Если вам нужны дополнительные функции или гибкость, возможно, вы уже используете MariaDB или Percona, расширенные замены для MySQL Server. Если вы заметили заметные улучшения в использовании MariaDB или Percona по сравнению со стандартным MySQL, поделитесь своим опытом ниже. Они оба отличные варианты.

 

Рекомендации по настройке производительности MySQL

Прежде чем продолжить, ознакомьтесь со следующими статьями по настройке производительности MySQL. 5.7.20 и удален в MySQL 8.0.

Кроме скриптов настройки, перечисленных ниже, старайтесь избегать онлайн-советов, если только они не через mysql.com или те, которые напрямую ссылаются на статьи или документацию MySQL, Pecona или MariaDB. Вы заметите, что оба вышеупомянутых сообщения в блоге ссылаются или цитируют документы MySQL. В сети масса противоречивых советов и мнений. Мой совет — всегда сверяйте изменения конфигурации с официальной документацией. Это включает в себя все, что я говорю здесь. Рискуя изменить настройки MySQL по умолчанию, лучше оставить настройки по умолчанию, если у вас нет оснований для изменений. Если есть сомнения, придерживайтесь значений по умолчанию. Всегда основывайте свои изменения на контрольных показателях, сравнениях и проверенных временем данных из первых рук.

 

Выбор механизма хранения MySQL

Это просто: используйте InnoDB и по возможности избегайте MyISAM. По следующим причинам:

  • Версии MySQL 5.5 и выше перешли на движок InnoDB, чтобы обеспечить ограничения ссылочной целостности и более высокий параллелизм.
  • В InnoDB улучшено восстановление после сбоя.
  • InnoDB имеет блокировку на уровне строк; MyISAM может выполнять только полную блокировку на уровне таблицы.
  • Как и MyISAM, InnoDB теперь имеет индексы поиска FULLTEXT, начиная с MySQL 5.6
  • InnoDB поддерживает транзакции, внешние ключи и ограничения отношений; MyISAM нет.

 

Сценарии настройки производительности MySQL

Вы не можете заменить профессиональную настройку MySQL сценариями. Скрипты служат важными руководствами, иногда точными, но в большинстве случаев нечеткими руководствами, которые решат только самые серьезные неправильно настроенные параметры. Используйте их в качестве отправной точки. Это означает, что прежде чем вы обратитесь к профессионалу для настройки MySQL, используйте эти сценарии настройки, чтобы, по крайней мере, у вас не было так называемой неудобной конфигурации в вашем файле my.cnf. Например, для параметра join_buffer_size установлено значение 4 ГБ, если общий размер БД меньше 1 ГБ.

Теперь давайте рассмотрим популярные скрипты и инструменты для настройки производительности MySQL: MySqlTuner, Tuning-Primer, MySQLreport, Percona Toolkit и phpMyAdmin Advisor.

 

MySQLTuner

Этот скрипт, написанный на Perl, поможет вам настроить MySQL и даст рекомендации по повышению производительности и стабильности.

MySQLTuner поддерживает Galera Cluster, TokuDB, Performance schema, метрики ОС Linux, InnoDB, MyISAM, Aria и т. д. – MySQLTuner на Github.

 

Tuning-Primer

Этот скрипт берет информацию из команд «ПОКАЖИТЕ СТАТУС, КАК…» и «ПОКАЖИТЕ ПЕРЕМЕННЫЕ, КАК…», чтобы дать разумные рекомендации по настройке переменных сервера.

Исходный сценарий больше не обновляется. Я использовал эту версию Tuning-primer на Github, полностью поддерживающую MariaDB.

 

Percona Toolkit

Percona Toolkit — это набор передовых инструментов командной строки с открытым исходным кодом, разработанных для выполнения различных задач MySQL, которые слишком сложны или сложны для выполнения вручную, освобождая администраторов баз данных для работы, которая поможет вам достичь ваших бизнес-целей. .

Полезные инструменты включают: pt-align, pt-archiver, pt-config-diff, pt-deadlock-logger, pt-diskstats, pt-duplicate-key-checker, pt-fifo-split, pt-find, pt- отпечаток пальца, регистратор ошибок pt-fk, pt-heartbeat, использование pt-index, pt-ioprofile, pt-kill, pt-mext, pt-mongodb-query-digest, pt-mongodb-summary, pt-mysql- сводка, pt-онлайн-изменение схемы, pt-pg-резюме, pt-pmp, pt-query-digest, pt-secure-collect, pt-show-grants, pt-sift, pt-slave-delay, pt- ведомый поиск, pt-ведомый-перезапуск, pt-stalk, pt-summary, pt-table-checksum, pt-table-sync, pt-table-usage, pt-upgrade, pt-variable-advisor и pt-visual- объяснять.

 

phpMyAdmin Advisor

Система Advisor предоставляет рекомендации по серверным переменным, анализируя переменные состояния MySQL.

phpMyAdmin — это бесплатный программный инструмент, написанный на PHP и предназначенный для администрирования MySQL через Интернет. Посетите:  PHPMyAdmin.

 

Mysqlreport

Mysqlreport преобразует значения из SHOW STATUS в удобный для чтения отчет, который обеспечивает глубокое понимание того, насколько хорошо работает MySQL. mysqlreport — лучшая альтернатива (и практически единственная альтернатива) ручной интерпретации SHOW STATUS.

Опубликовано: 18 июля 2017 г. | Последнее обновление: 24 апреля 2022 г.

Теги: apm, mariadb, mysql, производительность, скрипты, системные администраторы

рекомендации по установке mysqltuner — Linux и облачный хостинг wordpress

Автоматическая настройка с помощью mysql Tuner

официальный сайт https://github. com/major/MySQLTuner-perl

 

Установка MySQL Tuner

  1. Загрузите скрипт MySQLTuner:
     wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
     
  2. Измените разрешения сценариев на исполняемые:
     chmod +x mysqltuner.pl
     
  3. Запустите скрипт mysqltuner.pl . Вам будет предложено ввести логин и пароль администратора MySQL:
     ./mysqltuner.pl
     
  4. Сценарий вернет результаты, аналогичные выходным данным ниже:

root@localhost:/# ./mysqltuner.pl
>> MySQLTuner 1.9.4
* Jean-Marie Renouard
* Major Hayden
>> Сообщения об ошибках, запросы на добавление функций и файлы для загрузки на http://mysqltuner.pl/
>> Запустить с помощью «–help» для получения дополнительных параметров и фильтрации вывода

 

[–] Пропущена проверка версии для сценария MySQLTuner
Пожалуйста введите логин администратора MySQL: root
Пожалуйста, введите пароль администратора MySQL: [OK] В настоящее время работает поддерживаемая версия MySQL 8. 0.25
[OK] Работает на 64-битной архитектуре

——– Файл журнала Рекомендации —————— —————————— ———————

[OK] Файл журнала /var/lib/mysql/localhost.err существует
[–] Файл журнала: /var/lib/mysql/localhost.err(3K)
[OK] Файл журнала /var/lib /mysql/localhost.err не пуст
[OK] Файл журнала /var/lib/mysql/localhost.err меньше 32 МБ
[OK] Файл журнала /var/lib/mysql/localhost.err доступен для чтения.
[!!] /var/lib/mysql/localhost.err содержит 7 предупреждений.
[ОК] /var/lib/mysql/localhost.err не содержит ошибок.
[–] 4 запуска обнаружены в /var/lib/mysql/localhost.err
[–] 1) 2021-06-01T07:00:43.413030Z 0 [Система] [MY-010931] [Сервер] /usr/sbin/my sqld: готов к подключению. Версия: «8.0.25», сокет: «/var/run/mysqld/mysqld. порт sock: 0 Сервер сообщества MySQL — GPL.
[–] 2) 2021-06-01T07:00:43.208875Z 0 [Система] [MY-011323] [Сервер] X Плагин готов к подключению. Сокет: /var/run/mysqld/mysqlx. sock
[–] 3) 2021-06-01T06:35:03.850014Z 0 [Система] [MY-010931] [Сервер] /usr/sbin/my sqld: готов к связи. Версия: «8.0.25», сокет: «/var/run/mysqld/mysqld. порт sock: 0 Сервер сообщества MySQL — GPL.
[–] 4) 2021-06-01T06:35:03.586233Z 0 [Система] [MY-011323] [Сервер] X Плагин готов к подключению. Сокет: /var/run/mysqld/mysqlx.sock
[–] 2 отключения обнаружены в /var/lib/mysql/localhost.err
[–] 1) 2021-06-01T07:08:42.473166Z 0 [Система] [MY-010910] [Сервер] /usr/sbin/my sqld: завершение работы (mysqld 8.0.25) MySQL Community Server — GPL.
[–] 2) 2021-06-01T06:58:59.012396Z 0 [Система] [MY-010910] [Сервер] /usr/sbin/my sqld: Выключение завершено (mysqld 8.0.25) MySQL Community Server — GPL.

——— Статистика механизма хранения —————————————— ——————

[–] Статус: +АРХИВ +ЧЕРНАЯ ДЫРА +CSV -FEDERATED +InnoDB +MEMORY + MRG_MYISAM +My ISAM +PERFORMANCE_SCHEMA
[–] Данные в таблицах MyISAM: 79,1 млн (таблиц: 38)
[–] Данные в таблицах InnoDB: 624,2 млн (таблиц: 629)
[OK] Всего фрагментированных таблиц: 0

——— Показатели производительности анализа ————————————— ——————–

[–] innodb_stats_on_metadata: OFF
[OK] Нет обновлений статистики во время запроса INFORMATION_SCHEMA.

——— Метрики просмотров —————————————————— ——————

——— Метрики триггеров —————————— ———————— ——————

——— Подпрограммы Метрики ————————————————— ———————

— —— Рекомендации по безопасности ——————————————— ———————
[–] Пропущено из-за неподдерживаемой функции для MySQL 8

——— Рекомендации по безопасности CVE ——— ——————————— ——————

[OK] НЕ НАЙДЕНО CVE БЕЗОПАСНОСТИ ДЛЯ ВАШЕЙ ВЕРСИИ

——— Показатели производительности ————————————— ———— ———————

[–] Up for: 1h 0m 21s (184K q [50,977 qps], 1K conn, TX: 31G, RX: 108M)
[–] Чтение/запись: 95% / 5%
[–] Двоичный ведение журнала включено (GTID MODE: OFF)
[–] Физическая память: 7,8 ГБ
[–] Максимальный объем памяти MySQL: 9,8 ГБ
[–] Другая память процесса: 0B
[–] Всего буферов: 168,0 M global + 65,1M на поток (151 макс. поток)
[-] P_S Максимальное использование памяти: 72B
[-] Galera GCache Максимальное использование памяти: 0B
[OK] Максимально достигнутое использование памяти: 689. 2M (8,66% установленной RAM)
[!!] Максимально возможное использование памяти: 9,8G (125,74% установленной RAM)
[!!] Общее возможное использование памяти другим процессом превысило память
[OK] Медленные запросы : 0% (0/184K)
[OK] Максимальное использование доступных подключений: 5% (8/151)
[OK] Прерванные подключения: 0,17% (3/1761)
[!!] разрешено имя активно : для каждого нового соединения выполняется обратное разрешение имен, что может снизить производительность
[–] Кэш запросов удален в MySQL 8
[OK] Сортировки, требующие временных таблиц: 3% (921 временная сортировка / 28K сортировок)
[OK] Нет объединений без индексов
[OK] Временные таблицы, созданные на диске: 0% (0 на диске / 5K всего)
[OK ] Частота попаданий в кэш потоков: 99% (8 созданных / 1 тыс. подключений)
[OK] Частота попаданий в кэш таблиц: 98% (242 тыс. совпадений / 245 тыс. запросов)
[OK] table_definition_cache(2000) больше числа таблиц(991)
[OK] Используемый лимит открытых файлов: 0% (169/30K)
[OK] Немедленное получение блокировок таблиц: 100% (2K немедленных / 2K блокировок)
[OK] Доступ к кэш-памяти Binlog: 99,05% (5853 памяти / 5909 всего)

——— Схема производительности ————————————————— ————— —–

[–] Performance_schema активирована.
[–] Память, используемая P_S: 72B
[–] Установлена ​​системная схема.

——— Показатели ThreadPool ————————————————— ———————
[–] Статистика ThreadPool отключена.

——— Метрики MyISAM —————————————————— ———————
[–] Метрики MyISAM отключены в последних версиях MySQL.

——— Метрики InnoDB —————————————————— ———————
[–] InnoDB включен.
[–] InnoDB Thread Concurrency: 0
[OK] Файл InnoDB для каждой таблицы активирован
[!!] Буферный пул InnoDB / размер данных: 128,0M/624,2M
[!!] Отношение Размер файла журнала InnoDB / Буферный пул InnoDB размер (75 %): 48.0M * 2/128. 0M должно быть равно 25%
[OK] Экземпляры пула буферов InnoDB: 1
[–] Количество фрагментов пула буферов InnoDB: 1 для 1 экземпляра(ов) пула буферов
[OK] Эффективность буфера чтения InnoDB: 99,88% (1

499 совпадений/всего 1985)
[!!] Эффективность журнала записи InnoDB: 60,73% (47529 совпадений/всего 78265)
[OK] Ожидание журнала InnoDB: 0,00% ( 0 ожиданий / 30736 записей)

——— Aria Metrics ——————————————————— ———————
[–] Механизм хранения Aria недоступен.

——— Показатели TokuDB —————————————————— ———————
[–] TokuDB отключен.

——— Показатели XtraDB —————————————————— ———————
[–] XtraDB отключен.

——— Галера Метрика —————————————————— ———————
[–] Галера отключена.

——— Показатели репликации ———————————————— ———————
[–] Galera Синхронная репликация: НЕТ
[–] Нет ведомых устройств репликации для этого сервера.
[–] Формат Binlog: ROW
[–] Поддержка XA включена: ON
[–] Полусинхронная репликация Master: Не активировано
[–] Полусинхронная репликация Slave: Не активировано
[–] Это автономный сервер

——— Рекомендации —————————————————— ———————

Общие рекомендации:
Проверьте строки предупреждений в файле /var/lib/mysql/localhost.err
MySQL был запущен в течение последних 24 часов — рекомендации могут быть неточными
Уменьшите общий объем памяти MySQL для стабильности системы
Выделите этот сервер для своей базы данных для максимальной производительности.
Настройте свои учетные записи только с IP-адресом или подсетями, затем обновите конфигурацию с помощью skip-name-resolve=1
Перед изменением размера innodb_log_file_size и/или innodb_log_files_in_group прочитайте:0664 Переменные для настройки:
*** Максимальное использование памяти MySQL опасно велико ***
*** Добавить ОЗУ перед увеличением если возможно.
innodb_log_file_size должен быть (= 16M), если это возможно, поэтому общий размер файлов журнала InnoDB равен 25% размера буферного пула.
root@localhost:/#

 

 

Оптимизация производительности MySQL с помощью Mysqltuner

В этом кратком руководстве описываются шаги по оптимизации производительности базы данных MySQL с помощью сценария mysqltuner. Этот инструмент можно использовать для MySQL и MariaDB.

Установите mysqltuner

mysqltuner Высокопроизводительный сценарий настройки MySQL доступен в виде пакета для Debian 10 и Ubuntu 20. 04, установите его по адресу:

 sudo apt install mysqltuner 
Для других загрузок и дистрибутивов mysqltuner, как описано ниже:

 компакт-диск /USR/локальные/бен
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
mv mysqltuner.pl mysqltuner
chmod +x mysqltuner 

Оптимизация производительности MySQL

Запустите mysqltuner:

 mysqltuner 

Затем введите root в качестве имени пользователя и пароль root MySQL.

Вы получите примерно такой вывод:

 root@server1:/# mysqltuner
>> MySQLTuner 1.7.13 — Major Hayden 
>> Отчеты об ошибках, запросы функций и загрузки на http://mysqltuner.com/
>> Запустите с --help для дополнительных опций и фильтрации вывода
[--] Пропущена проверка версии для скрипта MySQLTuner
[OK] Выполнен вход с использованием учетных данных из учетной записи обслуживания Debian.
[!!] В настоящее время работает неподдерживаемая версия MySQL 8. 0.23-0ubuntu0.20.04.1
[OK] Работа на 64-битной архитектуре
-------- Файл журнала Рекомендации --------------------------------------- ---------------------------
[--] Лог-файл: /var/log/mysql/error.log(4K)
[OK] Файл журнала /var/log/mysql/error.log существует
[OK] Файл журнала /var/log/mysql/error.log доступен для чтения.
[OK] Файл журнала /var/log/mysql/error.log не пуст
[OK] Файл журнала /var/log/mysql/error.log меньше 32 МБ
[!!] /var/log/mysql/error.log содержит 6 предупреждений.
[!!] /var/log/mysql/error.log содержит 3 ошибки.
[--] 4 запуска обнаружено в /var/log/mysql/error.log
[--] 1) 2021-04-28T08:51:46.032696Z 0 [Система] [MY-010931] [Сервер] /usr/sbin/mysqld: готов к подключению. Версия: «8.0.23-0ubuntu0.20.04.1», сокет: «/var/run/mysqld/mysqld.sock», порт: 3306 (Ubuntu).
[--] 2) 2021-04-28T08:51:45.475316Z 0 [Система] [MY-011323] [Сервер] X Плагин готов к подключению. Адрес привязки: «127.0.0.1», порт: 33060, сокет: /var/run/mysqld/mysqlx.sock
[--] 3) 2021-04-28T08:51:41.150692Z 0 [Система] [MY-011323] [Сервер] X Плагин готов к подключению.  Адрес привязки: «127.0.0.1», порт: 33060
[--] 4) 2021-04-28T08:51:37.470204Z 0 [Система] [MY-010931] [Сервер] /usr/sbin/mysqld: готов к подключению. Версия: «8.0.23-0ubuntu0.20.04.1», сокет: порт «/tmp/tmp.q7NxVUnzSo/mysqld.sock»: 0 (Ubuntu).
[--] В /var/log/mysql/error.log обнаружено 2 завершения работы
[--] 1) 2021-04-28T08:51:42.544794Z 0 [Система] [MY-010910] [Сервер] /usr/sbin/mysqld: Выключение завершено (mysqld 8.0.23-0ubuntu0.20.04.1) ( Убунту).
[--] 2) 2021-04-28T08:51:38.956051Z 0 [Система] [MY-010910] [Сервер] /usr/sbin/mysqld: Выключение завершено (mysqld 8.0.23-0ubuntu0.20.04.1) ( Убунту).
-------- Статистика механизма хранения --------------------------------------- --------------------------
[--] Статус: +ARCHIVE +BLACKHOLE +CSV -FEDERATED +InnoDB +MEMORY +MRG_MYISAM +MyISAM +PERFORMANCE_SCHEMA
[--] Данные в таблицах InnoDB: 16.0K (Таблицы: 1)
[OK] Всего фрагментированных таблиц: 0
-------- Показатели производительности анализа --------------------------------------- -----------------------
[--] innodb_stats_on_metadata: ВЫКЛ. 
[OK] Статистические данные не обновляются при запросе INFORMATION_SCHEMA.
-------- Рекомендации по безопасности ---------------------------------------- --------------------------
[--] Пропущено из-за неподдерживаемой функции для MySQL 8
-------- Рекомендации по безопасности CVE --------------------------------------- -----------------------
[OK] ДЛЯ ВАШЕЙ ВЕРСИИ НЕ НАЙДЕНО CVE БЕЗОПАСНОСТИ
-------- Показатели эффективности ---------------------------------------- -------------------------------
[--] Up for: 5 м 1 с (15 q [0,050 qps], 13 подключений, TX: 56K, RX: 1K)
[--] Чтение/Запись: 100%/0%
[--] Включено бинарное логирование (GTID MODE: OFF)
[--] Физическая память: 1.9грамм
[--] Максимальный объем памяти MySQL: 349,4 МБ
[--] Другая память процесса: 162.7M
[--] Всего буферов: 176.0M глобальных + 1.1M на поток (151 макс. поток)
[--] P_S Максимальное использование памяти: 72Б
[--] Galera GCache Максимальное использование памяти: 0B
[OK] Максимально достигнутое использование памяти: 177,1 МБ (8,94% установленной ОЗУ)
[OK] Максимально возможное использование памяти: 349,4 МБ (17,64% установленной ОЗУ)
[OK] Общее возможное использование памяти другим процессом совместимо с доступной памятью
[OK] Медленные запросы: 0% (0/15)
[OK] Максимальное использование доступных подключений: 0% (1/151)
[OK] Прерванные соединения: 0,00% (0/13)
[!!] разрешение имен активно: для каждого нового соединения выполняется обратное разрешение имен, что может снизить производительность
[--] Кэш запросов удален в MySQL 8
[OK] Без сортировки, требующей временных таблиц
[OK] Нет объединений без индексов
[OK] Временные таблицы, созданные на диске: 0% (0 на диске / всего 4)
[OK] Частота попаданий в кеш потоков: 92% (1 создано / 13 подключений)
[OK] Частота попаданий в кэш таблиц: 56% (104 открытых / 185 открытых)
[OK] Используемый лимит открытых файлов: 0% (2/10K)
[OK] Блокировки таблицы получены немедленно: 100% (4 немедленных / 4 блокировки)
[OK] Доступ к кэш-памяти Binlog: 0% (0 Память / 0 Всего)
-------- Схема производительности ---------------------------------------- --------------------------------
[--] Память, используемая P_S: 72B
[--] Схема Sys установлена. 
-------- Показатели ThreadPool ---------------------------------------- --------------------------------
[--] Статистика ThreadPool отключена.
-------- Показатели MyISAM ---------------------------------------- ------------------------------------
[!!] Используемый буфер ключей: 18,2% (используется 3M / кэш 16M)
[!!] Невозможно рассчитать размер индекса MyISAM - перезапустите скрипт от имени пользователя root
-------- Метрики InnoDB ---------------------------------------- ------------------------------------
[--] InnoDB включен.
[--] Параллелизм потоков InnoDB: 0
[OK] Файл InnoDB для каждой таблицы активирован
[OK] Буферный пул InnoDB/размер данных: 128.0M/16.0K
[!!] Отношение размера файла журнала InnoDB к размеру буферного пула InnoDB (75%): 48,0M * 2/128,0M должно быть равно 25%
[OK] Экземпляры буферного пула InnoDB: 1
[--] Количество фрагментов буферного пула InnoDB: 1 на 1 экземпляр(ы) буферного пула
[OK] Innodb_buffer_pool_size приведен в соответствие с Innodb_buffer_pool_chunk_size и Innodb_buffer_pool_instances
[OK] Эффективность буфера чтения InnoDB: 94,53% (13840 просмотров / всего 14641)
[OK] Эффективность записи журнала InnoDB: 98,44% (632 обращения/всего 642)
[OK] Ожидания в журнале InnoDB: 0,00% (0 ожиданий / 10 записей)
-------- Метрики AriaDB ---------------------------------------- ------------------------------------
[--] AriaDB отключена. 
-------- Показатели TokuDB ---------------------------------------- ------------------------------------
[--] TokuDB отключен.
-------- Метрики XtraDB ---------------------------------------- ------------------------------------
[--] XtraDB отключен.
-------- Галера Метрика ---------------------------------------- ------------------------------------
[--] Галера отключена.
-------- Показатели репликации ---------------------------------------- -------------------------------
[--] Galera Синхронная репликация: НЕТ
[--] Для этого сервера нет подчиненных(ых) репликации.
[--] Формат бинлога: ROW
[--] Поддержка XA включена: ВКЛ.
[--] Мастер полусинхронной репликации: не активирован
[--] Полусинхронная репликация Slave: не активирована
[--] Это автономный сервер
-------- Рекомендации ----------------------------------------- ----------------------------------
Общие рекомендации:
Управляйте строками предупреждений в файле /var/log/mysql/error.log
Управляйте строками ошибок в файле /var/log/mysql/error. log
MySQL был запущен в течение последних 24 часов — рекомендации могут быть неточными
Настройте свои учетные записи только с IP-адресом или подсетями, затем обновите свою конфигурацию с помощью skip-name-resolve=1.
Перед изменением innodb_log_file_size и/или innodb_log_files_in_group прочитайте это: https://bit.ly/2TcGgtU
Переменные для настройки:
innodb_log_file_size должен быть (= 16M), если это возможно, поэтому общий размер файлов журнала InnoDB равен 25% размера буферного пула.
query_cache_size (> 16M)
tmp_table_size (> 32M)
max_heap_table_size (> 16M)
table_cache (> 64) 

Сценарий рекомендует настроить или добавить следующие переменные в файл конфигурации MySQL. В текущих версиях Debian и Ubuntu это файл /etc/mysql/mysql.conf.d/mysql.cnf для MySQL и /etc/mysql/mariadb.conf.d/50-server.cnf . для MariaDB. Другими распространенными путями являются просто /etc/my.cnf и /etc/mysql/my.cnf, они обычно используются в более старых версиях Linux и в CentOS.

Настроить конфигурацию MySQL

Открыть файл my.cnf:

 nano /etc/mysql/mysql.conf.d/mysql.cnf 

и увеличьте или установите переменные в разделе [mysqld] файла. Моя теперь выглядит так:

#
# Файл конфигурации сервера базы данных MySQL.
#
# Можно использовать все длинные опции, поддерживаемые программой.
# Запустите программу с --help, чтобы получить список доступных опций и с помощью
# --print-defaults, чтобы увидеть, что он на самом деле понимает и использует.
#
# Пояснения см.
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
# Здесь записи для некоторых конкретных программ
# Следующие значения предполагают, что у вас есть как минимум 32 МБ оперативной памяти
[mysqld]
#
# * Базовые настройки
#
пользователь = mysql
# pid-файл = /var/run/mysqld/mysqld.pid
# сокет = /var/run/mysqld/mysqld.sock
# порт = 3306
# каталог данных = /var/lib/mysql
# Если MySQL работает как ведомое устройство репликации, это должно быть
# измененный. Ссылка https://dev. mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_tmpdir
# временная_папка = /tmp
#
# Вместо пропуска сети теперь по умолчанию прослушивается только
# localhost, который более совместим и не менее безопасен.
адрес привязки = 127.0.0.1
mysqlx-bind-адрес = 127.0.0.1
#
# * Тонкая настройка
#
key_buffer_size = 16M
# max_allowed_packet = 64M
# thread_stack = 256K
# thread_cache_size = -1
# Это заменяет сценарий запуска и проверяет таблицы MyISAM, если это необходимо
# когда к ним прикасаются в первый раз
myisam-recover-options = РЕЗЕРВНАЯ КОПИЯ
# max_connections = 151
# table_open_cache = 4000
#
# * Ведение журнала и репликация
#
# Обе локации чередуются с помощью cronjob.
#
# Записывать все запросы
# Имейте в виду, что этот тип журнала снижает производительность.
# общий_файл_журнала = /var/log/mysql/query.log
# общий_лог = 1
#
# Журнал ошибок - должно быть очень мало записей.
#
log_error = /var/log/mysql/error.log
#
# Здесь вы можете увидеть запросы с особенно большой продолжительностью
# slow_query_log = 1
# slow_query_log_file = /var/log/mysql/mysql-slow.