Репликация в MySQL.

Buldozer

Новичок
Репликация в MySQL.

Есть система состоящая из двух частей. Одна часть обрабатывает данные, другая часть предоставляет доступ к этим данным через пользовательские интерфейсы.
С ростом системы возникла проблема блокировок таблиц, из-за которой пользовательские интерфейсы постоянно вешаются. Пытался ее решить переходом на InnoDB, однако скорость работы БД существенно понизилась, и первая часть системы отвечающая за обработку данных стала работать неприемлемо медленно, поэтому пришлось вернуться к MyISAM.

Хочу поднять реплику на отдельном сервере. Цель избавиться от тормозов в интерфейсах(которые работают с базой в основном только на чтение). Задумка - что пока мастер будет блокироваться от вставок, интерфейсы будут работать с репликой, которая заблокирована не будет.

Собственно вопрос: а действительно ли реплика не будет заблокирована? *Сейчас*, делается операция записи в БД, все селекты ждут. *Будет*, делается операция записи в БД на мастере, сразу же идет синхронизация со слэйвом... таблицы на слэйве аналогично заблокированы из-за синхронизации.

Разъясните пожалуйста эту ситуацию.
 

Vallar_ultra

Любитель выпить :)
Buldozer
Так, давай еще разок и более конкретно. Тебе нужно знать как делается репликация master-slave или что?
 

Buldozer

Новичок
вот беда, думал перикину часть селектов на слэйв всеж полегче будет, а тут от одного потока синхронизации загрузка винта на подчиненном сервере 100% :(... не тянет система :(.

-~{}~ 28.06.07 11:49:

p.s. реплика блокируется.
 

Апельсин

Оранжевое создание
ну если у вас основная часть запросов это INSERT и SELECT и MyISAM таблицы, то почему вы просто не используете concurrent inserts, которые не блокируют таблицу?
 

Buldozer

Новичок
concurrent inserts использую, под операциями записи из-за которых блокируются таблицы я имел в виду любые модификации данных, в т.ч. и апдэйты и удаления, которых очень много.
 

Фанат

oncle terrible
Команда форума
апочему бы тебе не делать запись в таблицы пачками, а не по одной?
скажем, раз в минуту?
 

Buldozer

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

MiksIr

miksir@home:~$
Если говорить о асинхронной репликации (а о ней, только, и стоит говорить), то, имхо, будет то же самое - разве что слейв будет более "ровно" принимать запросы. О чем я и говорю - если система встает колом от инсертов - то реплицирование (ака кластер) не поможет.
Можно попробовать вот что. Оставить мастер MyISAM, а слейв поднять на InnoDB.... но зависит о характера запросов - ровный по времени или импульсный. Если ровный, то слейв не будет успевать реплицироваться, если рваный, то может получится - он будет догонять мастер в моменты слабой нагрузки. Только... судя по отзывам, реплицирование на MySQL под большими нагрузками ведет себя не очень стабильно.
А вообще... переходи на InnoDB а данные разноси по серверам программно.
 
Сверху