|
Синхронизация структуры БД (Informix Dynamic Server 11.5)
|
|||
---|---|---|---|
#18+
Здраваствуйте уважаемые форумчане, Есть n-нное количество БД практически одинаковой структуры, одна из них центральная все остальные локальные и развернуты в регионах. Работает репликация по принципу "все данные в центр",периодически в центральной базе добавляются какие-то поля и таблицы, возникла необходимость производить репликацию данных определенных таблиц менеджмента в регионы, но так как структура таблиц разная, возникают проблемы. Вопрос: Как можно производить синхронизацию структур локальных баз с центром? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2013, 10:00 |
|
Синхронизация структуры БД (Informix Dynamic Server 11.5)
|
|||
---|---|---|---|
#18+
Юрий Шакуда, ответ зависит от частоты репликации данных. Если итерация раз в сутки, обновление структур можно проводить "вручную". Вариант 1 (изменение структуры в центре - упорядоченное) Все изменения структур в центральной БД выполнять sql-скриптами. Хранить порядок выполнения данных sql-скриптов (например, в названии файла записывать и дату/время ГГГГ-ММ-ДД-ЧЧ-ММ-СС). Cкрипты отправлять в регионы вместе с данными для репликации. В регионах перед загрузкой данных должны запускать скрипты обновления структуры, если они есть. Вариант 2 (истории изменения центральной БД нет) При передаче данных в регион передаётся вся структура (во внутреннем формате или просто выгруженная dbschema). В регионе должна быть утилита, сверяющая структуру полученную с структурой местной БД и генерирующая скрипт для устранения расхождений. Сверять можно как полученный файл, так и создать тестовую БД с этой структурой и сравнивать структуры этих БД. Утилиту можно написать самому, либо искать на просторах инета (зависит от целей и ограничений). ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2013, 11:10 |
|
Синхронизация структуры БД (Informix Dynamic Server 11.5)
|
|||
---|---|---|---|
#18+
Вся проблема в том что репликация работает постоянно и круглосуточно,хотелось бы что то, что постоянно смотрит структуру центральной и сразу делает апдейт локальной.Просто локальных баз около 20 и там некому запускать скрипты и руками обновлять.В самом Informix ничего такого нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2013, 14:29 |
|
Синхронизация структуры БД (Informix Dynamic Server 11.5)
|
|||
---|---|---|---|
#18+
Какими именно средствами работает ваша репликация? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2013, 15:43 |
|
Синхронизация структуры БД (Informix Dynamic Server 11.5)
|
|||
---|---|---|---|
#18+
Есть созданные скрипты с репликациями и упакованые в реплсеты,через dbaccess запустил инициализацию сервера репликации "cdr define server" и соответственно "cdr start replset", во все остальные детали вдаватся думаю нет смысла)) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2013, 22:40 |
|
Синхронизация структуры БД (Informix Dynamic Server 11.5)
|
|||
---|---|---|---|
#18+
"Из коробки" у Informix такая фича есть в 11.70. Если выберете мой вариант 1 (т.е. добьётесь упорядоченного внесения изменений в DDL центрального сервера), то при наличии связи с региональными серверами, времени и чуть-чуть головы несложно организовать запуски скриптов удалённо по ssh на каждом сервере. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2013, 10:39 |
|
Синхронизация структуры БД (Informix Dynamic Server 11.5)
|
|||
---|---|---|---|
#18+
А можно немного поподробнее, а то что то я слабо представляю все это, в смысле одновременный запуск скриптов на всех БД с каким то возвратом об удачном завершении процесса в центр. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2013, 14:45 |
|
Синхронизация структуры БД (Informix Dynamic Server 11.5)
|
|||
---|---|---|---|
#18+
Написал с третьего раза, первые два варианта вытер :). Юрий, кто вы? Программист? Системный администратор? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2013, 19:20 |
|
Синхронизация структуры БД (Informix Dynamic Server 11.5)
|
|||
---|---|---|---|
#18+
В основном системный администратор,но приходится делать все по немногу,и администрирование бд и кодить иногда,но с последним дружу меньше всего ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2013, 23:07 |
|
Синхронизация структуры БД (Informix Dynamic Server 11.5)
|
|||
---|---|---|---|
#18+
1. Администратору сети и администратору БД очень полезны знания и умение использовать скриптовые языки. Linux/Unix - shell-скрипты. Windows - VBScript, batch-файлы. 2. Вам нужно решить, что вы будете делать в ситуациях, если: 2.1) на каком-то региональном сервере часть DDL-команд в скрипте выполнится, а часть - нет; 2.2) на одном из региональных сервере весь скрипт выполнился, а на другом - нет. 3. А дальше научиться, как автоматически : 3.1) доставить sql-скрипт по обновлению БД на региональный сервер; 3.2) запустить shell-скриптом удалённо (ssh) уже доставленный sql-скрипт (dbaccess'ом) на региональном сервере; 3.3) отлавливать в shell-скрипте ошибки выполнения dbaccess и решить, что вы с ними будете делать; 3.4) если вас не устраивает последовательное обновление серверов: а) как выполнить в скрипте без ожидания их завершения несколько команд ("параллельный" запуск задач на серверах). б) что делать дополнительно, если произошла ситуация 2.1) или 2.2): 3.5) возможно, останавливать и запускать репликацию на центральном сервере. 4. Скриптовый язык позволит склеить это всё в одну программу. 5. Вопросы? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2013, 14:39 |
|
Синхронизация структуры БД (Informix Dynamic Server 11.5)
|
|||
---|---|---|---|
#18+
Все очень сложно и не очень красиво, точно так же я могу и dbaccess'ом прямо с центра тем же скриптом запускать апдейты локальных баз, но вот это хранение и строго последователь ручной запуск скриптов обновления (я про то что допиливает базу в центре не один человек а несколько, и соответственно все эти обновления надо запускать в том же порядке) это все равно человеческий фактор что не очень хорошо. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2013, 14:54 |
|
Синхронизация структуры БД (Informix Dynamic Server 11.5)
|
|||
---|---|---|---|
#18+
Эту проблему можно решать организационно, подкрепляя технически, а можно решать чисто технически. Вариант 1, организационный: есть админ БД, через которого пропускаются все изменения БД в центральной БД 1.1) Программисты проверяют работоспособность скриптов на тестовых БД, перед тем как "отдать" (положить в систему контроля версий - СКВ) для запуска на центральной БД. 1.2) Админ лично запускает DDL-скрипты, взяв их из СКВ. Один админ уже более организуем , чем толпа программеров, а значит человеческий фактор не так критичен :). Тем более если это вы, и проблема печёт вас :). Вариант 2, технический: программисты "неуправляемы" и изменяют структуру как хотят и когда хотят и какими им только заблагорассудится инструментами (неужели это правда? ). Если это правда, то у вас такие пути: а) всё DDL-изменения в центральной БД отлавливать аудитом и переносить в регионы; б) всё DDL-изменения в центральной БД отлавливать аудитом, анализировать (какие важны для репликации), переносить в регионы; в) запускать "инструмент сравнения" схем БД периодически ; г) запускать "инструмент сравнения" схем БД после возникновения ошибок репликации. в) и г) - с инструментом возможны варианты: 1) Мы для себя писали утилиту, которая коннектилась к двум БД, через таблицы системного каталога сравнивала структуры и генерировала скрипт обновления для второй БД. 2) Можно воспользоваться кучей специализированных утилит для этой задачи, инет в руки. Возможно, вам для нужд репликации достаточно будет сравнивалки, которая работает через ODBC с любой БД, и проверяет только таблицы и поля с типами данных, игнорируя констрейнты, триггеры, взгляды и хранимые процедуры... 3) можно воспользоваться универсальными серьёзными инструментами типа PowerDesigner: реверс-инжиниринг структур обеих БД, генерация DDL-скрипта для устранения отличий. Но универсальность тоже может потребовать доработки напильником. Теперь посмотрите на эти варианты, подумайте и скажите - вы точно за технический вариант решения задачи? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2013, 15:28 |
|
Синхронизация структуры БД (Informix Dynamic Server 11.5)
|
|||
---|---|---|---|
#18+
Юрий ШакудаВсе очень сложно и не очень красиво, ...это все равно человеческий фактор что не очень хорошо. Мне тоже иногда проще утилитку найти, чем с людьми договориться. Профессиональная деформация личности, так сказать. Но всегда ли утилитка лучше? Вы точно хотите делать сами много тупой работы вместо того, чтобы один раз организовать процесс? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2013, 15:32 |
|
Синхронизация структуры БД (Informix Dynamic Server 11.5)
|
|||
---|---|---|---|
#18+
Почему то у меня все проблемы связаны с синхронизацией то данных, то структуры:)Подскажите пожалуйста как решить такую задачку: " Есть две бд, между ними репликация, назовем их DB1 и DB2 репликация работает с DB2 на DB1, так вот на DB2 репликация упала и говорит что все плохо, запустите " cdr cleanstar t" ну а потом синхронизируйте. И здесь возникла проблема, надо произвести синхронизацию данных (тех что описаны в репликах) с DB2 на DB1 так чтоб все что есть на DB1 осталось не тронутым, а все новое дописалось.Попробую показать пример: есть таблица "mgt_user" с полями "'ID', 'First_name', 'Last_name', 'Login'" ('Иванов', 'Иван', 'Иванович', 'Ivanov' ) на DB1 в поле 'Login' есть значение 'Ivanov' а в DB2 там null,и при вот такой команде синхронизации " cdr check replicateset --replser=replset --master=DB2 --all --extratargetrows=keep -repair" на DB1 'Login' становится null, а надо чтобы осталось 'Ivanov'." ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2013, 15:55 |
|
Синхронизация структуры БД (Informix Dynamic Server 11.5)
|
|||
---|---|---|---|
#18+
Юрий ШакудаПочему то у меня все проблемы связаны с синхронизацией то данных, то структуры:) Лучше создайте отдельный топик с соотв. темой, а здесь отпишитесь, что со структурой-то решили? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2013, 16:49 |
|
Синхронизация структуры БД (Informix Dynamic Server 11.5)
|
|||
---|---|---|---|
#18+
Проблема с синхронизацией БД, решилась следующим образом. Было принято решение написать утилиту которая смотрит маппинги сервера приложений(того который использует центральную БД) находит различия и генерит скрипты для (пока только добавления полей или таблиц). Спасибо АнатоЛой за полезные советы) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2013, 07:57 |
|
|
start [/forum/topic.php?fid=44&msg=38375938&tid=1607024]: |
0ms |
get settings: |
23ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
306ms |
get tp. blocked users: |
2ms |
others: | 306ms |
total: | 704ms |
0 / 0 |