Подготовка БД к репликации
Материал из FrigatWiki
Инструкция по использованию модуля для подготовки БД к репликации.
Данная инструкция предназначена для «разведения» БД на 2 удалённых рабочих места по схеме «полная» (один в один).
Содержание |
ВНИМАНИЕ!!!
ПЕРЕД НАЧАЛОМ ВЫПОЛНЕНИЯ НИЖЕСЛЕДУЮЩИХ ДЕЙСТВИЙ ВСЕ ПОЛЬЗОВАТЕЛИ, КРОМЕ ПОЛЬЗОВАТЕЛЯ, ОСУЩЕСТВЛЯЮЩЕГО ПРОЦЕСС ПОДГОТОВКИ БАЗЫ ДАННЫХ К РЕПЛИКАЦИИ, ДОЛЖНЫ ВЫЙТИ ИЗ ПРОГРАММЫ.
ВСЕ НИЖЕПЕРЕЧИСЛЕННЫЕ ДЕЙСТВИЯ ДОЛЖНЫ ВЫПОЛНЯТЬСЯ ПОЛЬЗОВАТЕЛЕМ ПРОГРАММЫ ФРЕГАТ ПОД УЧЁТНОЙ ЗАПИСЬЮ SYSDВA.
ОБЯЗАТЕЛЬНО ПЕРЕД ЗАПУСКОМ МОДУЛЯ ПОДГОТОВКИ К РЕПЛИКАЦИИ В КОПИЮ ПРОИЗВЕСТИ ДЕФРАГМЕНТАЦИЮ БАЗЫ ДАННЫХ.
Действия по «разведению» базы данных
- Запустить программу Фрегат.
- В программе Фрегат запустить команду
Главное Меню - Службы - Модули - Модуль подготовки базы данных для репликации в копию. - После окончания работы модуля выйти из программы и после этого скопировать файл базы данных(БД).
- Подключить скопированный файл БД через Фрегат Консоль.
- В меню ПУСК - ПРОГРАММЫ - ФРЕГАТ - ИНСТРУМЕНТЫ запустить IBX SQL.
- В IBX SQL подключить скопированный файл БД.
- В IBX SQL набрать команду: update sys$info set ip='9-ти значное число'
(Например: update sys$info set ip='123456789')
Выполнить её, нажав молнию на панели инструментов.
Подтвердить транзакцию, нажав вторую кнопку справа на панели инструментов.
Зайти во Фрегат, подключиться к скопированной базе данных.
В Фрегате Главное Меню - Службы - Обмен_Данными, код узла должен быть тот, который установлен командой update sys$info set ip='9-ти значное число'. - В каждой из БД создать по узлу. В качестве кода при создании узла указывать код того узла, которому предназначается пакет. В разделе Что передавать указать то, что необходимо передавать.
- В меню ПУСК - ПРОГРАММЫ - ФРЕГАТ - ИНСТРУМЕНТЫ запустить IBX SQL.
- В IBX SQL подключить скопированный файл БД.
- В IBX SQL набрать команду: update xchgnodes set send_time='сегоднящняя дата'
(Например: update xchgnodes set send_time='19.01.2005 или update xchgnodes set send_time=’now’)
Дата(число,месяц,год) в обеих базах должна быть одинаковой!!!.
Выполнить её, нажав молнию на панели инструментов.
Подтвердить транзакцию, нажав вторую кнопку справа на панели инструментов.
Для контроля, что всё прошло успешно, выполнить запрос:
SELECT send_time FROM XCHGNODES
и в результате выполнения посмотреть поле send_time - там должна стоять дата, которая была указана в send_time='сегодняшняя дата'. - В IBX SQL отключить скопированный файл БД.
- В IBX SQL подключить исходный файл БД.
- В IBX SQL набрать команду: update xchgnodes set send_time='сегоднящняя дата'
(Например: update xchgnodes set send_time='19.01.2005' 2005 или update xchgnodes set send_time=’now’)
Дата (число,месяц,год) в обеих базах должна быть одинаковой!!!
Выполнить её.
Подтвердить транзакцию.
Для контроля, что всё прошло успешно, выполнить запрос:
SELECT send_time FROM XCHGNODES
и в результате выполнения посмотреть поле send_time - там должна стоять дата, которая была указана в команде update xchgnodes send_time='сегодняшняя дата'.
Базы данных готовы к обмену данными.
Проверка
- Выйти из программы Фрегат.
- Скопировать полученные базы данных и на этих копиях произвести следующие действия:
- Для проверки создать накладные в каждой базе.
- Обменяться пакетами.
После обмена пакетами накладные, созданные в каждой из БД, должны присутствовать в обеих базах.
Если накладные появились, базы готовы к работе. Копии баз данных, созданные ранее, можно удалить
Ситуация с задвоением товара.
Примечание. Сценарий репликации не стандартный, а написан самостоятельно.
Когда товар или документ передаётся по репликации, то ему в момент передачи присваивается уникальный идентификатор, называемый GUID. Если эти GUID отличаются в двух базах, то происходит задвоение товаров и документов. В результате в базе-приёмнике есть два абсолютно одинаковых товара, у которых одинаково всё, кроме поля ID. Каждый товар имеет свою товарную историю.
Предпосылки возникновения такой ситуации:
- Неуникальность товара по имени (например, товары уникальны по артикулу, а называются одинаково)
- База-приёмник сделана с копии Базы-источника путем репликации - заведен GUID на товар в базе-приёмнике, и при передаче из источника на этот товар генерируется НОВЫЙ УНИКАЛЬНЫЙ GUID