Преимущество в том, что нам не нужно лезть в конфиги, к тому-же прицепиться мы можем сразу к нескольким серверам. (--proxy-backend-addresses=localhost:3306 --proxy-backend-addresses=localhost:3307 --proxy-backend-addresses=localhost:xxx)
Все в одной коробке.
Вы в этом уверены или предполагаете? Настроки
mysql.default_port и mysqli.default_port не просто так, а такой настройки для pdo — нет.
Я просто уже успел проверить, WP видимо юзает mysql, т.к. стал отображаться только после установки mysql.default_port = 4040, остальные мои скрипты, которые работают через PDO — ничего не показывают :(
Я в этом уверен.
mysql.default_port это лишь номер порта по умолчанию, когда в параметре $server функции mysql_connect передается только имя хоста.
При создании экземпляра PDO можно также указать порт сервера в параметре $dsn.
Вообще это все немного разные уровни. Можно сказать, что mysql-proxy работает на более низком уровне. В конечном итоге что делают libmysql, mysqlnd и встроенный драйвер PDO? Устанавливают tcp-соединение с указанным сервером: портом, обмениваются данными через это соединение, соблюдая определенный протокол. В случае использования mysql-proxy они коннектятся к нему, передают теже самые данные, ничего не зная про прокси, они уверены, что общаются с сервером. mysql-proxy в свою очередь знает этот протокол и позволяет отобразить передаваемые данные, передает их серверу, возвращает клиентам ответы сервера.
Вы правы, у PDO своя политика. Отсюда 3 решения.
1) Размещаем на 3306 порту сам mysql-proxy (--proxy-address=3306 в параметрах запуска), сам MySQL вешаем на альтернативный порт, например 3307 и настраиваем proxy на адрес --proxy-backend-addresses=host:3307
2) При подключении PDO явно указываем порт $db = new PDO('dblib:host=your_hostname:4040;dbname=your_db;charset=UTF-8', $user, $pass);
3) Для мейнстрима: перенаправлять запросы с помощью чего-нибудь вроде iptables на 4040 порт
В PDO есть то ли фича, то ли баг, что если в адресе сервера указан localhost, то соединение идет через unix socket, а не TCP. Лечится заменой localhost на 127.0.0.1
slow_query_log
slow_query_log_file=/var/log/mysql/slow_mysql.log
long_query_time=0
будет писать все запросы
потом можно легко проанализировать с помощью pt-query-digest
Если кто-то зарегистрирован на форуме open-server.ru, предложите в пожеланиях добавить эту утилиту. Не могу создать акк, за… достала каптча, Максим Архипов наверное на ней зарабатывает.
UPD: Хотя выше дали ссылку как «включить логирование на стороне MYSQL»…
MySQL On air. Мониторим SQL запросы