Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Репликации типа A -> B -> C -> A


Автор: MuToGeN 22.6.2008, 12:54
Сабжевая штука является почти недокументированной. Кто-нибудь пользовал? Какие подводные камни имеются?

Автор: MuToGeN 23.6.2008, 11:55
И, да, несколько своих мыслей:

1. На 99% уверен, что с InnoDB будут проблемы и кольцо быстро обрушится. А если не пользовать констреинты, то и InnoDB пользовать бессмысленно, остается самый шустрый вариант - MyISAM. Точнее, один из самых шустрых, если сравнивать с memory/heap.
2. Если только один из 3х или более серверов в кольце (граф может быть и не только кольцом, если серверов больше 3х) является реальным источником данных, то вроде все нормально.

Народ, скажите что-нибудь. Я прав или нет? Хотелось бы все просчитать аналитически, а не делить на ноль, отдавая проект заказчику в неизвестно каком виде.

Автор: Feldmarschall 23.6.2008, 13:27
Может, лучше в http://community.livejournal.com/ru_mysql спросить?

Автор: Bulat 23.6.2008, 16:08
MuToGeN, никогда такое кольцо не юзал. Но когда падает репликация, если мне не изменяет память (в случае перезагрузки сервера, причем мастера) нужно ложить все слэйвы, а потом по очереди, сначала поднять мастер, потом все остальные слэйвы(конечно если нет зеркалирования, что существенно решает ряд проблем smile). С чего начинать в данном случае??

Автор: MuToGeN 23.6.2008, 19:00
Ну да ладно. Проект сдал, получил деньги, вроде все довольны.
Описанное в сабже кольцо не стал использовать, причина - нехватка информации насчет его возможностей и типичных проблем (а их очень много, как подсказывает интуиция). С репликациями в постгресе все очень просто, а в mysql просчитать поведение системы несколько сложнее.
Вопрос же, тем не менее, остается открытым, думаю, многим пригодится как сисархитектурная фича, не только мне.

Feldmarschall, в ЖЖ гораздо больше идиотов, косящих под умных людей, чем на винграде. Посему и спросил здесь. 

Bulat, сам пользовал только по схеме A -> B, для бекапов и дублирования критичной точки. Насколько понимаю, слейву все иддифферентно до того момента, пока его не долбанут запросом типа LOAD DATA FROM MASTER, тогда он начинает шевилиться и сливать бинарный лог апдейтов. Хотя, тут все зависит от версии.

Автор: Feldmarschall 23.6.2008, 19:56
Да какая разница, где больше идиотов? Дело-то не в них, а в тех, кто может ответить на вопрос. 
Ну да ладно. Если задача поговорить с умными людьми, а не репликация - то оно конечно =)

Автор: MuToGeN 23.6.2008, 20:41
Feldmarschall, задача - получить информацию по интересующему меня вопросу. В одной эхе в фидонете в правилах стояло что-то типа "если вы тут задали адекватный вопрос, то не ждите адекватного ответа". Так вот, к ЖЖ это правило тоже применимо.

Автор: Feldmarschall 23.6.2008, 21:33
Говорить за весь ЖЖ, это все равно, что говорить за весь интернет. Не понимаю, чем принципиально отличается сообщество в жж от форума.
Разве что чисто технически отслеживать дискуссии неудобно. 
Впрочем, речь все равно не об этом. На Винграде я не встречал специалистов, способных ответить на данный вопрос. Следовательно, задавать здесь вопрос только потому, что собеседники приятнее - все равно, что искать часы не там, где потерял, а там, где светлее.
Я не то, чтобы сильно рекламирую жж. Мне, скорее, логика непонятна.

Автор: Бонифаций 24.6.2008, 01:40
http://www.onlamp.com/pub/a/onlamp/2006/04/20/advanced-mysql-replication.html?page=4

Автор: Bulat 24.6.2008, 09:27
Цитата(MuToGeN @  23.6.2008,  19:00 Найти цитируемый пост)
сам пользовал только по схеме A -> B, для бекапов и дублирования критичной точки. Насколько понимаю, слейву все иддифферентно до того момента, пока его не долбанут запросом типа LOAD DATA FROM MASTER, тогда он начинает шевилиться и сливать бинарный лог апдейтов. Хотя, тут все зависит от версии. 

Я работал по схеме
A -> B
A -> C
A -> D
и т.п.

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

Автор: MuToGeN 24.6.2008, 12:56
Bulat, там одним постом выше есть ссылка на достаточно интересный подход к вопросу. Причем можно на время вырубать из связки один из 4х (или более) серверов на время оптимизации таблиц и проверки целостности, если довести идею до логического завершения.

Автор: Bulat 24.6.2008, 15:51
Цитата(MuToGeN @  24.6.2008,  12:56 Найти цитируемый пост)
Bulat, там одним постом выше есть ссылка на достаточно интересный подход к вопросу. Причем можно на время вырубать из связки один из 4х (или более) серверов на время оптимизации таблиц и проверки целостности, если довести идею до логического завершения. 

Пробежался глазами, если не забуду почитаю, но мне кажется, это иное решение, что-то наподобие зеркалирования. Когда есть два мастера, и в случае если один падает - работает второй smile

Автор: Бонифаций 24.6.2008, 17:48
тогда посмотри следующую страничку из этой статьи smile

Автор: Bulat 24.6.2008, 18:13
Цитата(Бонифаций @  24.6.2008,  17:48 Найти цитируемый пост)
тогда посмотри следующую страничку из этой статьи

Хе-хе, интересно... Хотелось бы еще как-нить посмотреть на это в действии ;)

Автор: MuToGeN 25.6.2008, 01:30
Цитата(Bulat @  24.6.2008,  18:13 Найти цитируемый пост)
Хотелось бы еще как-нить посмотреть на это в действии ;) 

Имеются несколько интересных идей на этот счет. Если подниму у себя 4 mysqld в chroot'ах или на bsd'шнах клетках и поэкспериментирую с ними, обязательно отпишусь в этом топике о результатах.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)