[Репликация] многоуровневая репликация архитектура
От: Ortrix http://www.ortrix.com/
Дата: 12.08.09 11:25
Оценка:
Репликация MS SQL Express 2008 <-> MS SQL 2008 <-> MySQL (многоуровневая репликация архитектура)
Рабочая обстановка, которая будет:
Клиенты(рабочая машина пользователя, приложение .NET) -> MS SQL Express 2008. (до 10 машин).
Сервер (оффис) -> MS SQL 2008
Удаленный Web-сервер -> MySQL (от 100-1000 удаленных MS SQL 2008 серверов, репликация разных однотипных БД)
Задача-Логика: У клиентов стоит приложения, в случае если вылетает основной сервер, клиентам нужно продолжить работу оффлайн с последним набором данных. Есть центральное хранилище данных MS SQL 2008 в качестве средств репликации выбран механизм распределённых транзакций.
Есть удаленный сервер, на котором стоит веб-морда PHP с СУБД MySQL – нужно опять же заставить это добро функционировать но только в том случае если есть доступ к MS SQL. В MySQL должна так же храниться актуальная версия данных.
Это добро так, же должно функционировать в режиме более или мене приближенном к реальному.
Возникли такие мысли и вопросы:
1. Если вылетает сеть или сервер (локалка), то те данные, которые были изменены на клиентах – при восстановление сети, серверов будут ли автоматически сброшены на Сервер и раскиданы по клиентам?
2. Как сделать (и можно ли), так что если упадет сервер, то ведущая машина становиться другая доступная, скажем в одном кабинете 10 машин падает сеть между ними и сервером: остается 3 машины, 2 машины + сервер, 5 машин – вот одна из тех 5ти машин становится на время сервером и 5 клиентов могут работать, остальные пока отдыхают?
3. Как реплицировать это дело с MySQL <-> а именно центрального хранилища, как предусмотреть в веб приложение ответ о том, что у нас упал доступ к серверу и в данный момент услуга не оказывается по техническим причинам?
4. Логика репликации – написание демона Linux (MySQL <-> MySQL). Который бедт опрашивать две БД. Но как быть с коллизиями? Т.е. первоначально нужно зарезервировать себе запись таблицы – если действие прошло… так?
5. Как сообщить центральной БД что в данный момент клиенты офлайн, т.е. сеть упала и мы не реплицируемся пока с MySql – как вариант сервисная таблица с пометкой 0/1 на MSSQL сервере – но как ему узнать что, пока с ним не работают, ведь если выключен один из клиентов то также репликации нет и это как сбой?
6. Как обойти коллизии? Может, как вариант при запросе проверять и резервировать таблицу – т.е. в каждой таблице поле 0/1 и назначением, первоначально мы делам Insert 0/1 и назначения – остальное Update –ом?
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.