SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

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

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

Вы не зашли.

#1 01.03.2011 16:06:57

strug
Участник
Зарегистрирован: 01.03.2011
Сообщений: 3

MySQL Proxy: как организовать запись на master, а чтение со slave?

Здравствуйте. Есть задача организовать master->slave репликацию с последующей записью только на master и чтением со slave
с репликацией никаких проблем не возникло, работает как и задумывалось

для организации записи на slave, а чтения со slave установил MySQL Proxy(v0.8.1), подключил rw-splitting.lua, но что-то не так он работает как ожидалось
   

SELECT * FROM `test`

запрос уходит на master (судя по логу: sending to backend : 192.168.1.91:3306, is_slave : false)

что может быть не так? где я накосячил? может нужно допилить rw-splitting.lua или есть готовое решение? заранее спасибо.

лог MySQL Proxy:
[connect server] 127.0.0.1:54733
[1].connected_clients = 0
[1].pool.cur_idle = 0
[1].pool.max_idle = 8
[1].pool.min_idle = 4
[1].type = 1
[1].state = 0
[1] idle-conns below min-idle
[read_query] 127.0.0.1:54733
    current backend   = 0
    client default db   = testdb
    client username    = root
    query                  = SELECT * FROM `test`
    sending to backend      : 192.168.1.91:3306
        is_slave             : false

        server default db : testdb
        server username  : root
    in_trans         : false
    in_calc_found  : false
    COM_QUERY    : true
[read_query] 127.0.0.1:54733
    current backend    = 0
    client default db    = testdb
    client username     = root
[QUIT] current backend  = 0
[disconnect_client] 127.0.0.1:54733

настройки MySQL Proxy:
mysql-proxy --proxy-address=127.0.0.1:3307
--admin-username=strug
--admin-password=1111
--lua-cpath=C:\xampp\mysql-proxy\bin\lua-?.dll
--lua-path=C:\xampp\mysql-proxy\lib\mysql-proxy\lua\?.lua
--admin-lua-script=/xampp/mysql-proxy/share/doc/mysql-proxy/admin.lua
--proxy-lua-script=/xampp/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
--proxy-backend-addresses=192.168.1.91:3306
--proxy-read-only-backend-addresses=192.168.1.125:3306

--log-file=/xampp/mysql-proxy/log/mysql-proxy-debug.log
--log-level=debug
--daemon

Неактивен

 

#2 01.03.2011 20:15:58

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

Re: MySQL Proxy: как организовать запись на master, а чтение со slave?

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

Что касается самого rw-splitting.lua — попробуйте покидать туда несколь-
ко запросов. У них там везде вписаны костылики, что в случае неудачи
нужно ходить на мастер.

Неактивен

 

#3 02.03.2011 10:08:05

strug
Участник
Зарегистрирован: 01.03.2011
Сообщений: 3

Re: MySQL Proxy: как организовать запись на master, а чтение со slave?

paulus написал:

Я к mysqlproxy отношусь с очень большой осторожностью

а какие еще варианты есть, чтобы запросы отсортировать?
т.е. надо сделать так, чтобы все SELECTы шли на slave, все остальное - на master

Неактивен

 

#4 02.03.2011 14:15:20

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

Re: MySQL Proxy: как организовать запись на master, а чтение со slave?

Самый правильный способ — поддерживать соединения в приложении. Так у Вас
будет полный контроль над тем, какие запросы куда уходят. Например, если делать
все SELECT на реплику, а все изменения на мастер, то Вы очень быстро упретесь
в проблему «изменил и сразу прочитал» — данные не успеют доехать до реплики
и Вы получите ошибку.

Неактивен

 

#5 02.03.2011 15:49:32

strug
Участник
Зарегистрирован: 01.03.2011
Сообщений: 3

Re: MySQL Proxy: как организовать запись на master, а чтение со slave?

понятно. буду искать другое решение.
спасибо, paulus

Неактивен

 

Board footer

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