SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 26.07.2010 16:43:15

boa
Завсегдатай
Зарегистрирован: 22.06.2010
Сообщений: 38

mysql-proxy и честный roundrobin

Добрый день.
У меня есть три машины с mysql, все содержат идинаковые копии одной БД
Для балансировки нагрузки на одну из машин (US3) я поставил mysql-proxy
Создал для него конфигурационный файл

[mysql-proxy]
proxy-backend-addresses = us3:3306,us1:3306,us2:3306
daemon=true
pid-file=/usr/local/mysql-proxy/bin/mysql-proxy.pid
log-file      = /var/log/mysql-proxy.log
log-level     = message

Написал простой тест, в котором я делаю 1000 запросов
show VARIABLES where variable_name like  "server_id"

По задумке mysql-proxy должен переключать машины по кругу, но в реальности оказалось что практически все запросы он посылает US3, т.е. практически на localhost.
Мне кажется что это возможно изза того что mysql-proxy учитывает также время ответа от машин и поэтому выбрал US3 как приоритетную.
Как сделать так чтобы он честно крутил машины по кругу? Надо ли писать lua скрипт или все же достаточно указать что-то дополнительное в настройках?

И еще вопрос по поводу отказоустойчивости - как mysql-proxy  будет вести себя если одна из машин(например US1) выйдет из строя, а потом, через некоторое время, снова включится?
Обработает ли он самостоятельно такой случай или ему надо будет тоже писать скрипт?

Неактивен

 

#2 26.07.2010 16:54:11

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: mysql-proxy и честный roundrobin

А он вообще хоть иногда пытается коннектиться на другие машинки?
Я бы на его месте не стал smile

Для того, чтобы работало несколько бэкендов, надо указывать несколько раз:
http://dev.mysql.com/doc/refman/5.0/en/ … using.html

Также надо понимать, что в MySQL Proxy есть очень неприятная бага с тем, что
кодировку он не передает, поэтому можете попасть в неприятное положение,
если умолчания сервера не совпадают с ожиданиями клиента.

MySQL Proxy не является хоть сколь нибудь отказоустойчивым решением. Ну
то есть теоретически убитые бэкенды он отключает, но сам по себе является
точкой отказа (подумайте, что будет, если us3 умрет).

По поводу отказоустойчивости совсем недавно мы обсуждали вот тут:
http://sqlinfo.ru/forum/viewtopic.php?pid=17766#p17766

Неактивен

 

#3 26.07.2010 17:17:41

boa
Завсегдатай
Зарегистрирован: 22.06.2010
Сообщений: 38

Re: mysql-proxy и честный roundrobin

paulus написал:

А он вообще хоть иногда пытается коннектиться на другие машинки?
Я бы на его месте не стал smile

Пытается. Остановил mysqld на US3 запустил тест и он начал использовать US1 и US2 и крутит их по кругу.
Но к сожалению после включения US3 он как то вяло пытается начать ее использовать.

paulus написал:

Для того, чтобы работало несколько бэкендов, надо указывать несколько раз:
http://dev.mysql.com/doc/refman/5.0/en/ … using.html

Да это верно для консоли, но в конфиг, файле синтаксис чуть другой - предлагается вводить бэкэнды через запятую

paulus написал:

Также надо понимать, что в MySQL Proxy есть очень неприятная бага с тем, что
кодировку он не передает, поэтому можете попасть в неприятное положение,
если умолчания сервера не совпадают с ожиданиями клиента.

Я использую везде UTF8, он все равно может ошибаться?

paulus написал:

MySQL Proxy не является хоть сколь нибудь отказоустойчивым решением. Ну
то есть теоретически убитые бэкенды он отключает, но сам по себе является
точкой отказа (подумайте, что будет, если us3 умрет).

Будет плохоsmile

paulus написал:

По поводу отказоустойчивости совсем недавно мы обсуждали вот тут:
http://sqlinfo.ru/forum/viewtopic.php?pid=17766#p17766

Интересное обсуждение. Но меня счас больше интересует балансировка нагрузки. Там обсуждалось решение на базе IPVS, но я так понял что это не окончательное решение, а представляет собой инструмент и требует дописывания кода руками.

Неактивен

 

#4 26.07.2010 17:38:39

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: mysql-proxy и честный roundrobin

Хм, видимо, я давно им не пользовался smile

Везде UTF8 — это хорошо. Но проверьте на всякий случай, что данные вдруг
не начнут ехать в latin1.

Любое решение, к сожалению, требует некоторой настройки. В том числе
и mysqlproxy. Если рассматриваете проксирующие решения — поглядите также
в сторону haproxy — он умеет меньше, чем mysqlproxy, но зато не переделывает
стек запроса внутри себя, а потому содержит меньше ошибок. Ну, это всё в
случае, если Вам нужна только балансировка, а не, например, lua smile

Неактивен

 

#5 26.07.2010 17:46:25

boa
Завсегдатай
Зарегистрирован: 22.06.2010
Сообщений: 38

Re: mysql-proxy и честный roundrobin

Понятно! Посмотрю что может предложить haproxy - может он лучше отрабатывает ситуации выхода из строя отдельных машин. LUA пока не нужна, только балансировка
Спасибо за помощь!  cool

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson