Опять синхронизация баз данных

Vorgal

Новичок
Опять синхронизация баз данных

Задача такая.. Есть два сервера web, стоящие на разных площадках.. У каждого из этих web серверов, есть свой mysql сервер... Оба эти веб-сервера обслуживают один и тот же домен, то есть в dns для домена прописано два ip...

Задача в том, чтобы синхронизировать mysql базы..
Т.е. например, на сайте есть форум.. Одни люди смотрят на него на одном сервере, другие на другом...

Кто-то оставляет сообщение на одном, и это сразуже должно быть видно и на другом и наоборот.. Как вот такое реализовать?
 

rembo

Новичок
Такая же бодяга.
Кром просмотрел и прочитал (почти) все ссылки, вывод сделал такой: вопрос остается открытым, мускул сам этого делать не умеет. Есть лишь два выхода из данной ситуации:
1. MySQL Cluster
2. придумывать отдельную программу с учетом специфики сайта, которая этим будет заниматься.
Встречный вопрос такой: Если первый выход не возможен по финансовым соображениям, целесообразно ли пытаться выгребать вторым способом? Если да то с какой стороны подбираться?
Например, если закладывать дублирование всех INSERT UPDATE DELETE запросов внутри самих пхп скриптов неизбежны ошибки (скриптов много, они обновляются не одним человеком), ведущие к образованию "каши" в логике данных.
Может "покидаетесь" еще парой ссылочек в тему? :)

PS. (шепотом) Склоняюсь к подмене mysql_query другой функцией анализирующей тип запроса и выполняющей соответствующие операции при успешном выполнении запроса.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: rembo
Есть лишь два выхода из данной ситуации:
1. MySQL Cluster
А как ты собираешься делать "кластер" из серверов, стоящих на разных площадках (см. исходное сообщение)?

Или просто слово умное понравилось?
 

MpaK69

Новичок
простите, а нельзя ли базу MySQL положить на третий сервер и пускай форумы работают с ним?
 

rembo

Новичок
Автор оригинала: Sad Spirit
А как ты собираешься делать "кластер" из серверов, стоящих на разных площадках (см. исходное сообщение)?

Или просто слово умное понравилось?
Ну я подумал, что можно выделенку от одного до другого провести (сделать чтобы они на "одной" площадке были), но тут же оговорился, что по финансовым и может быть другим соображениям этого сделать невозможно.

Как вам такая, бредовая мысля?
Организуем репликацию, в скриптах юзаем везде вместо mysql_query, скажем, mysql_query2 с примерно, таким содержимым. Если запрос DDL или один из INSERT UPDATE DELETE и выполняется на слейве, то выполняем запрос к удаленной master базе, в случае если запрос успешен, делаем еще раз коннект, тем самым заставляя слейв выполнить следом синхронизацию запроса. В противном случае либо сообщаем что удаелнная база пока недоступна, либо кэшируем запросы до следующего удобного случая. Траффик между серваками "условно бесплатный" и достаточно быстрый, для не многочисленных инсертов. Все манипуляции с б/д напрямую делаем на мастере. Пинайте :)
 

clevel

Новичок
наверное, нет смысла делать моментальные согласования на двух серверах.. есть смысл сделать сохранение запросоов во временные файлы и раз в несколько минут делать согласование..
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: rembo
Как вам такая, бредовая мысля?
Организуем репликацию, в скриптах юзаем везде вместо mysql_query, скажем, mysql_query2 с примерно, таким содержимым. Если запрос DDL или один из INSERT UPDATE DELETE и выполняется на слейве, то выполняем запрос к удаленной master базе, в случае если запрос успешен, делаем еще раз коннект, тем самым заставляя слейв выполнить следом синхронизацию запроса. В противном случае либо сообщаем что удаелнная база пока недоступна, либо кэшируем запросы до следующего удобного случая. Траффик между серваками "условно бесплатный" и достаточно быстрый, для не многочисленных инсертов. Все манипуляции с б/д напрямую делаем на мастере. Пинайте :)
Ещё чуть-чуть и ты "откроешь" нечто под названием two-phase commit.
 

rembo

Новичок
Sad Spirit Интересная штукеция, правда не это ли тот самый MySQL Cluster? А pgsql умеет так?
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: rembo
Sad Spirit Интересная штукеция, правда не это ли тот самый MySQL Cluster? А pgsql умеет так?
Умеет как? Кластеры для pgsql есть, правда денег стоят. Двухфазный commit для него пишется, но к версии 7.5 не успели. Средства multi-master репликации какие-то вроде бы есть, но сам не пробовал, врать не буду.

"MySQL Cluster" --- звучит, конечно, замечательно. Но я не уверен, что и работает так же. И сомневаюсь, что на этом форуме есть кто-нибудь, кто его как следует гонял... ;)
 

rembo

Новичок
Кром не подходит лишь тем, что вызывается по расписанию, а надо чтобы синхронизация была "мгновенной", например для форума.
clevel программа которую посоветовал Кром как раз так и делает
MpaK69 А третий-то зачем? Два хватает.
Sad Spirit Были бы ресурсы давно бы Oracle поставили и никаких проблем :) Вся беда в том, что приходится изгаляться с тем что есть :)
Пойду-ка я все-таки попробую замутить свою идейку, уж больно она мне самому понравилась B) Если не получится последую совету Крома, если и это не поможет буду трясти у заказчика денег на нормальную СУБД. Если кому интересны результаты расскажу и покажу (может даже картинку нарисую).
/me ушел ставить второй тестовый мускул )
 

csa

Guest
Автор оригинала: rembo
Если кому интересны результаты расскажу и покажу (может даже картинку нарисую).
интересны, картинка с подробными комментариями приветствуется (я как-то не особо въехал в идею %) )
 
Сверху