Планируя перенос моего приложения (Java + Tomcat + MySql) на облачный хостинг, я обнаружил, что одним важным фактором, который следует учитывать, является объем данных, передаваемых в / из базы данных, поскольку он ограничен поставщиками облачных услуг. Я не нашел ни удобного способа оценить этот объем на основе статистики использования (например, количества запросов и среднего размера строки), ни того, как измерить текущее использование.
Есть ли в MySql какие-либо статистические данные, которые я мог бы использовать, или лучше отслеживать это с точки зрения сети, отслеживая данные, передаваемые в / из порта, используемого MySql.
заранее спасибо
Если вы хотите напрямую измерить сетевой трафик в MySQL и исходящий из него в вашем приложении, вы можете отслеживать две переменные состояния:
Вы можете получить их для всех сеансов (прошлых и настоящих) с помощью этого запроса
SELECT * FROM information_schema.global_status
WHERE variable_name IN ('Bytes_received','Bytes_sent');
Это даст вам количество каждого из них за время существования экземпляра mysql.
Вы можете получить их для каждого сеанса с помощью
SELECT * FROM information_schema.session_status
WHERE variable_name IN ('Bytes_received','Bytes_sent');
Это даст вам количество каждого из них за время существования сеанса БД.
Вы можете использовать графические интерфейсы для построения графика их изменения во времени. Поскольку вы упомянули Java и Tomcat, вы можете создать свою собственную презентацию. Вам нужно будет сохранить предыдущие значения, получить текущие значения, вычесть их, а затем построить или отобразить средние значения по своему усмотрению.
Я уже давно обсуждал это в 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 (). Затем вы можете создать отчет с этими числами. Затем вы можете вычесть эти итоги из глобальных подсчетов, чтобы увидеть, сколько служебных данных запрашивается.
Самый простой способ - запустить MySQL Workbench. Хотя для правильной настройки функций администрирования сервера могут потребоваться небольшие усилия, он предоставляет графики использования сети и является универсальным отличным инструментом для управления экземплярами MySQL. Веб-решение для администрирования MySQL: phpMyAdmin, который также предоставляет статистику MySQL. Тем не менее, имейте в виду, что в прошлом phpMyAdmin имел несколько серьезных недостатков безопасности (например, позволяя полностью захватить систему), поэтому я настоятельно рекомендую вам использовать вместо этого MySQL Workbench. (Тангенциально: если вы действительно Если вы хотите или должны использовать phpMyAdmin, убедитесь, что у вас есть схема аутентификации перед phpMyAdmin, чтобы злоумышленники даже увидели ваш логин в phpMyAdmin, они должны пройти через ваш первый уровень входа. Мои серверы, например, требуют базовой аутентификации через HTTPS и проверяют предоставленные имя пользователя и пароль по PAM, прежде чем разрешить доступ даже к странице входа phpMyAdmin.)
Если вас также интересует общий сбор статистики с множеством красивых графиков, Мунин - хорошее решение, и оно также включает в себя набор подключаемых модулей мониторинга MySQL, хотя они должны быть сначала настроены, и есть некоторые зависимости Perl, которые необходимо установить, чтобы подключаемые модули мониторинга MySQL работали (Cache::Cache
и DBD::MySQL
, судя по комментариям, оставленным в скриптах плагина).
Наконец, помните, что выставление счета за трафик MySQL является проблемой только в том случае, если ваше приложение и база данных находятся на разных серверах; трафик localhost не измеряется (или, следовательно, оплачивается).