Нужен совет по поводу репликации нескольких БД MySQL в одну.

MySQL/PostgreSQL/SQLite/Oracle/M$SQL/....

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Lazy caT
мл. сержант
Сообщения: 101
Зарегистрирован: 2008-09-11 9:59:17
Откуда: Местные мы...
Контактная информация:

Нужен совет по поводу репликации нескольких БД MySQL в одну.

Непрочитанное сообщение Lazy caT » 2014-12-24 15:33:19

Здравствуйте народ.

Есть схема:
Изображение
Тут по подробнее...
Есть центральный офис с внутренним web-сервером, юзер на сервере может произвести настройку своего добавочного, номера (перевод звонка на другой добавочный или сотовый и т.д.), данные хранятся в MySQL в центральном офисе и реплицируется (master-slave) на локальные БД в филиалах, откуда данные считываются Asterisk'ом и выполняются определенные действия при входящем звонке. В свою очередь, в филиалах Asterisk'и пишут информацию о всех звонках в локальные БД.

Хочу все данные из филиальных БД перекидывать в БД в центральном офисе, чтобы статистику по звонкам можно было бы прикрутить к тому же web-серверу
где пользователи настраивают свои добавочные.

Есть одно НО!. Время отклика до некоторых филиалов может достигать 200-500 ms, поэтому предложения по поводу, "заставить писать филиальные asterisk'и непосредственно в БД ЦО" отпадают, т.к. в момент записи данных в БД, филиальный aster начинает безбожно тупить и звонок увеличивает продолжительность на 5-8-10 сек. Вроде и не много но, очень утомительно, кстати, именно поэтому была настроена репликация из ЦО в филиалы, чтобы астеры на местах не простаивали при поиске данных в БД ЦО.

Что можете посоветовать на счет обратного перемещения данных?

У меня есть мысль, запускать в cron'е mysqldump и выходной файл передавать на сервер в ЦО. Теоретически, периодичность выполнения скрипта не имеет значения, лучше, конечно, меньше чтобы хоть немножко на realtime было бы похоже но, и период в 5-10-15-20 минут тоже пойдут. :smile:

Думал на счет репликации master-master но, проблема в том что в таблицах могут дублироваться uniqueid, а это не есть гуд... :pardon: да и с автоинкрементом не совсем правильно получается...

Есть проект spider for mysql но, что-то я не догоняю, как там что делается, да и, мне кажется, не то это... :unknown:

Так как, что в этом случае можно придумать?

Спасибо всем заранее за идеи.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alvares
прапорщик
Сообщения: 485
Зарегистрирован: 2008-07-10 12:48:08
Откуда: Воронеж
Контактная информация:

Re: Нужен совет по поводу репликации нескольких БД MySQL в о

Непрочитанное сообщение Alvares » 2014-12-24 17:23:07

А для каждого подразделения свой ключ ввести и по нему сливать/раздавать данные в таблицах?
Бог создал людей сильными и слабыми. Сэмюэл Кольт сделал их равными...

Аватара пользователя
Lazy caT
мл. сержант
Сообщения: 101
Зарегистрирован: 2008-09-11 9:59:17
Откуда: Местные мы...
Контактная информация:

Re: Нужен совет по поводу репликации нескольких БД MySQL в о

Непрочитанное сообщение Lazy caT » 2014-12-24 20:28:36

Alvares писал(а):А для каждого подразделения свой ключ ввести и по нему сливать/раздавать данные в таблицах?
Спасибо за предложение... :) Как я понимаю, предложение касается репликации типа master-master?...
В этом случае вопрос. Как грамотно организовать репликацию типа master-master, несколькими мастерами и одним слэйвом?
В филиальских БД, думаю, я смогу добавить какой-нибудь признак (к примеру, поле в таблице, которое будет идентифицировать записи БД)
Хотя, хотя... не, может не сработать... Астер пишет в БД вполне определенный набор данных. Я, конечно, попробую их подменить в момент
записи в БД но, не уверен что это сработает.

Аватара пользователя
Alvares
прапорщик
Сообщения: 485
Зарегистрирован: 2008-07-10 12:48:08
Откуда: Воронеж
Контактная информация:

Re: Нужен совет по поводу репликации нескольких БД MySQL в о

Непрочитанное сообщение Alvares » 2014-12-26 9:00:18

Да не, зачем? Я предлагал проще - в филиале выгружается содержимое таблицы в файл, жать, пересылать в ГО и инсертить в базу ГО. Своего рода отложенная репликация, да еще и с бекапом. Только выгружать и инсертить можно не всё подряд, а только необходимые данные. Я так понимаю, просто для статистики?
Бог создал людей сильными и слабыми. Сэмюэл Кольт сделал их равными...

Аватара пользователя
Lazy caT
мл. сержант
Сообщения: 101
Зарегистрирован: 2008-09-11 9:59:17
Откуда: Местные мы...
Контактная информация:

Re: Нужен совет по поводу репликации нескольких БД MySQL в о

Непрочитанное сообщение Lazy caT » 2015-01-02 9:40:29

Спасибо всем за участие... Настроил всё без обратной репликации в MySQL.

В Asterisk есть возможность отложенного сохранения данных CDR. Я настроил запись CDR каждые 5-10 минут, непосредственно в БД центрального офиса.

Практическое применение показало, проблем при работе asterisk не замечено, даже при больших задержках в сети. И нечего было мудрить с обратной репликацией. :unknown:

Видимо я изначально не совсем корректно выразился... Астер начинает безбожно тупить когда читает данные из MySQL. Пишет он данные нормально.