Как оценить, что сетевые данные передают объем для mysql базы данных

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

Я выполняю несколько производственных серверов баз данных в PostgreSQL и MS SQL с устройством хранения данных SAN, которые работают вполне счастливо в параметрах, ожидаемых организацией (и намного лучше, чем аппаратные решения они заменили). И я могу гарантировать, что существуют многие, намного больше DBAs, кто соглашается.

7
задан 12 August 2013 в 10:09
2 ответа

Если вы хотите напрямую измерить сетевой трафик в MySQL и исходящий из него в вашем приложении, вы можете отслеживать две переменные состояния:

  • Bytes_received : количество полученных байтов. от всех клиентов
  • Bytes_sent : количество байтов, отправленных всем клиентам

GLOBAL LEVEL

Вы можете получить их для всех сеансов (прошлых и настоящих) с помощью этого запроса

SELECT * FROM information_schema.global_status
WHERE variable_name IN ('Bytes_received','Bytes_sent');

Это даст вам количество каждого из них на время существования экземпляра mysql.

SESSION LEVEL

Вы можете получить их для каждого сеанса с помощью

SELECT * FROM information_schema.session_status
WHERE variable_name IN ('Bytes_received','Bytes_sent');

Это даст вам номер каждого на время существования сеанса DB.

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

Попробуйте !!!

CAVEAT

Я уже давно обсуждал это в DBA StackExchange ( MySQL: Есть ли 'bytes_sent' и ' bytes_received 'включать данные mysqldump? ) Все, что имеет поток, будет учитываться в этих двух переменных, включая внутренние элементы, подобные этому для репликации MySQL (через поток ввода-вывода и поток SQL).

В свете этого убедитесь, что у вас нет ненужных подключений к БД, выполняющих чтение, и вы не отслеживаете MySQL во время mysqldump или перезагрузки mysqldump. Даже программное обеспечение для мониторинга (такое как Nagios, Zabbix, MONYog, EM7 и т. Д.) Будет генерировать Bytes_received трафик при каждом запуске SHOW GLOBAL VARIABLES;

ПРЕДЛОЖЕНИЕ

Поскольку все, что подключено к mysqld, будет влиять на глобальные значения статуса Bytes_received и Bytes_sent , вы можете захотеть, чтобы ваше приложение собирало Bytes_received на уровне сеанса и Bytes_sent непосредственно перед запуском mysqli_close () . Затем вы можете создать отчет с этими числами. Затем вы можете вычесть эти итоги из глобальных подсчетов, чтобы увидеть, сколько служебных данных запрашивается.

5
ответ дан 2 December 2019 в 23:42

Самый простой способ - запустить MySQL Workbench . Хотя для правильной настройки функций администрирования сервера могут потребоваться небольшие усилия, он предоставляет графики использования сети и является универсальным отличным инструментом для управления экземплярами MySQL. Веб-решение для администрирования MySQL - это phpMyAdmin , которое также предоставляет статистику MySQL. Тем не менее, имейте в виду, что в прошлом phpMyAdmin имел несколько серьезных недостатков безопасности (например, позволяя полностью перехватить управление системой), поэтому я настоятельно рекомендую вам использовать вместо этого MySQL Workbench. (По касательной: если вы действительно хотите или должны использовать phpMyAdmin, убедитесь, что у вас есть схема аутентификации перед phpMyAdmin, чтобы злоумышленники даже могли увидеть ваш логин в phpMyAdmin, они должны пройти через ваш первый уровень входа. Мои серверы, например, требуют базовой аутентификации через HTTPS и проверяют предоставленные имя пользователя и пароль на соответствие PAM, прежде чем разрешить доступ даже к странице входа phpMyAdmin.)

Если вас также интересует сбор общей статистики с множеством красивых графиков, Munin - хорошее решение, и оно также включает в себя набор подключаемых модулей мониторинга MySQL, хотя они должны быть сначала настроены, и есть некоторые зависимости Perl, которые необходимо установить для работы подключаемых модулей мониторинга MySQL ( Cache :: Кэш и DBD :: MySQL , в соответствии с комментариями, оставленными в сценариях плагина).

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

0
ответ дан 2 December 2019 в 23:42

Теги

Похожие вопросы