Spec-Zone .ru
спецификации, руководства, описания, API

15.7.6. FAQ MySQL Proxy

Вопросы

Вопросы и Ответы

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

Нет никакого автоматического разделения запросов, которые выполняют чтения или записи к различным серверам бэкэнда. Однако, можно определить, чтобы mysql-проксировать тот, или больше серверов MySQL "бэкэнда" только для чтения.

shell> mysql-proxy \--proxy-backend-addresses=10.0.1.2:3306 \--proxy-read-only-backend-addresses=10.0.1.3:3306 &

16.7.6.2: Как я использую сокет с MySQL Proxy? Журналы изменений прокси упоминают, что поддержка сокетов UNIX была добавлена.

Определите путь к сокету:

--proxy-backend-addresses=/path/to/socket

16.7.6.3: Я могу использовать MySQL Proxy со всеми версиями MySQL?

MySQL Proxy разрабатывается, чтобы работать с MySQL 5.0 или выше, и поддерживает протокол сети MySQL для 5.0 и выше.

16.7.6.4: Я могу выполнить MySQL Proxy как демона?

Используйте --daemon опция. Чтобы отследить ID процесса, демон может быть запущен с --pid-file=file опция, чтобы сохранить PID к известному имени файла. На версии 0.5.x Прокси не может быть запущен исходно как демон.

16.7.6.5: Приложения прокси работают на отдельном сервере? В противном случае, что издержки поносятся по доверенности на стороне сервера DB?

Можно выполнить прокси на сервере приложений на его собственном поле, или на сервере DB в зависимости от варианта использования.

16.7.6.6: С выравниванием нагрузки, что происходит с транзакциями? Все запросы отправляются тому же самому серверу?

Без любой специальной настройки целое соединение отправляется тому же самому серверу. Это сохраняет целое состояние соединения в целости.

16.7.6.7: Действительно ли возможно использовать MySQL Proxy с обновлением Lucene, индексируют (или Solr), делая TCP призывает к тому серверу, чтобы обновить?

Да, но пока это не советуется.

16.7.6.8: Действительно ли системное контекстное переключение дорого, сколько издержек сценарий Lua добавляет?

Lua быстр, и издержки должны быть достаточно маленькими для большинства приложений. Необработанные пакетные издержки составляют приблизительно 400 микросекунд.

16.7.6.9: Сколько задержки прокси добавляет к соединению?

В диапазоне 400 микросекунд на запрос.

16.7.6.10: Необходимо сделать один большой сценарий и вызвать его при запуске прокси, могу я сценарии изменения, не останавливаясь и перезапуская (прерывание) прокси?

Можно только изменить сценарий, и прокси перезагрузит его, когда клиент соединится.

16.7.6.11: Если MySQL Proxy должен жить на ту же самую машину как MySQL, есть ли какие-либо настраивающие соображения, чтобы гарантировать, что оба выполняют оптимально?

MySQL Proxy может жить на любое поле: приложение, база данных, или ее собственное поле. MySQL Proxy использует сравнительно маленький ЦП или RAM с незначительными дополнительными требованиями или издержками.

16.7.6.12: Я в настоящий момент использую Реле SQL для эффективного объединения в пул соединения со многими процессами Apache, соединяющимися с сервером MySQL. MySQL Proxy может в настоящий момент выполнить это? Моя цель состоит в том, чтобы минимизировать задержку соединения, сохраняя доступные временные таблицы.

Да.

16.7.6.13: Эти зарезервированные имена функций (например, error_result()) это автоматически вызывают?

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

16.7.6.14: Поскольку сценарий перечитывается MySQL Proxy, действительно ли он кэширует это, или он смотрит на файловую систему с каждым запросом?

Это ищет сценарий в клиенте - соединяются, и читает это, если это изменилось, иначе это использует кэшируемую версию.

16.7.6.15: Учитывая, что есть a connect_server() функционируйте, сценарий Lua может соединиться с многократными серверами?

MySQL Proxy обеспечивает некоторые учебные руководства в исходном пакете; каждый examples/tutorial-keepalive.lua.

16.7.6.16: Действительно ли MySQL Proxy является API?

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

16.7.6.17: Пример переменной глобального пространства имен с квотами не сохраняется после перезагрузки, которая корректна?

Да. Если Вы перезапускаете прокси, Вы теряете результаты, если Вы не сохраняете их в файле.

16.7.6.18: MySQL Proxy может обработать соединения SSL?

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

16.7.6.19: MySQL Proxy мог использоваться, чтобы получить пароли?

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

16.7.6.20: Есть ли инструменты для того, чтобы изолировать проблемы? Как кто-то может выяснить, является ли проблема в клиенте, базе данных, или прокси?

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

16.7.6.21: Действительно ли MySQL Proxy подобен тому, что обеспечивается пулами соединения Java?

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

16.7.6.22: Таким образом, аутентификация с объединением в пул соединения должна быть сделана в каждом соединении? Какова задержка аутентификации?

Можно пропустить поездку туда и обратно и использовать соединение, как это было добавлено к пулу. Пока приложение очищает временные таблицы, которые оно использовало. Издержки являются (как всегда) приблизительно 400 микросекундами.

16.7.6.23: Если у Вас есть многократные базы данных на том же самом поле, можно использовать прокси, чтобы соединиться с базами данных на порту значения по умолчанию 3306?

Да, MySQL Proxy может слушать на любом порту, при условии, что ни один из серверов MySQL не слушает на том же самом порту.

16.7.6.24: Что относительно того, чтобы кэшировать информацию об авторизации, таким образом, клиентам, соединяющимся, дают соединения бэкэнда, которые были установлены с идентичной информацией об авторизации, таким образом сохраняя несколько более циклов обработки?

Есть --proxy-pool-no-change-user опция, которая обеспечивает эту функциональность.

16.7.6.25: Там какой-либо большой веб-сайт использует MySQL Proxy? Для какой цели, и что уровень транзакции они достигли?

Да, gaiaonline. Они протестировали MySQL Proxy и видели, что это обрабатывает 2400 запросов в секунду через прокси.

16.7.6.26: Как MySQL Proxy сравнивается с DBSlayer?

DBSlayer является REST-> инструмент MySQL, MySQL Proxy прозрачен к Вашему приложению. Никакое изменение к приложению не необходимо.

16.7.6.27: Я попытался использовать MySQL Proxy без любого сценария Lua, чтобы попробовать круговое выравнивание нагрузки типа. В этом случае, если бы первая база данных в списке снижается, MySQL Proxy не соединил бы клиент со второй базой данных в списке.

Эта проблема устраняется в версии 0.7.0.

16.7.6.28: Это "безопасный" использовать LuaSocket со сценариями прокси?

Вы можете, но это не советуется, потому что это может блокировать.

16.7.6.29: Насколько отличающийся MySQL Proxy from DBCP (Объединение в пул соединения с базой данных) для Apache с точки зрения объединения в пул соединения?

Объединение в пул соединения является только одним вариантом использования MySQL Proxy. Можно использовать это для намного больше, и это работает в случаях, где невозможно использовать DBCP (например, если у Вас нет Java).

16.7.6.30: MySQL Proxy может обработать приблизительно 5000 соединений, каков предел на сервере MySQL?

Предел сервера дается значением max_connections системная переменная. Значение по умолчанию является зависимой версией.

16.7.6.31: Был бы соединение только для Java, объединяющее работу решения в пул для многократных веб-серверов? С этим я предположил бы, что можно объединить в пул через многие веб-серверы сразу?

Да. Но можно также запустить один прокси на каждом сервере приложений, чтобы получить подобное поведение, поскольку у Вас уже есть это.