Мастер репликации

Проект DBMeta
Система Репликация

ЦДБ - центральная база данных

Форма «Мастер репликации» открывается в «DBMeta» кнопкой «Мастер репликации»
предназначена для переключения текущей базы данных в режим центральной базы данных.

Настройки всегда включены и недоступны для редактирования

  • Изменение номера центрального подразделения с 0 на 1.
    • Если DEPS содержит только одну запись и DEPS.DEP_ID = 0, то
      1. делаем ее центральной DEPS.DEP_ID = 1
      2. в глобальной настройке Текущее подразделение (GL_DEFDEP_ID) переключаемся на эту запись (GL_DEFDEP_ID=1)
      3. в базу добаляется роль «REPL_ROLE»
  • Переключение глобальной настройки Текущее подразделение.
    • Если DEPS не имеет записей, то создается запись и настройка переключается на нее
    • Если DEPS имеет одну запись Центр, то настройка переключается на нее
    • Если DEPS имеет записей Центр больше одной, то выдается сообщение об ошибке и процесс прерывается
    • Если DEPS имеет записей больше одной и ни одна из них не отмечена как «Центр», то выдается сообщение об ошибке и процесс прерывается
  • Создание репликационной структуры.
  • Подготовка центрального подразделения.
    • Если текущее подразделение типа Центр, то выполняются следующие операции:
      1. Удаление изменений из лога (MST_META_CHANGES)
      2. Добавление всех пользователей в текущее подразделение
      3. Глобальная настройка «ОСНОВНЫЕ: Цены одинаковые во всех подразделениях» (GL_TOVARS_GLOBALPRICE) устанавливается в 0
      4. Глобальная настройка «» (GL_REPL_ACTIVE) устанавливается в 0
      5. Обновляется список ограничений целостности (Foreign keys)
      6. Обновляется список первичных ключей (Primary keys)
      7. Устанавливается «префикс ключа» в 100 независимо от DEPS.DEP_ID
  • Для роли REPL_ROLE поставить GRANT ALL.

Подготовительные операции

  1. Создание копии базы данных
  2. Проверка по дате актуальности DBMeta (При необходимости скачать новую версию из папки Z:\Agbis\_NonVersion\DBMeta.exe).

Кнопки

  • Запуск - запускает процесс создания и настройки ЦДБ,
  • Открыть текущий лог… - открывает в блокноте текущий лог программы,
  • Close - закрывает форму,
  • Помощь - открывает текст с описанием формы.

Создание и настройка ЦДБ

Кнопка Запуск выдает запрос на подтверждение начала процесса настройки ЦБД

После подтверждения процесс не может быть остановлен.
Блокируются возможность изменения настроек и кнопка Запуск.
Индикатор отображает степень выполнения процесса.

1. Включение ЦБД

Считывается список подразделений из таблицы deps

  • Если записей нет, то добавляется новое подразделение, которое назначается центральным.
  • Если запись единственная, то подразделение назначается центральным.
  • Если записей больше одной и центральное подразделение единственное, то это подразделение остается центральным.

Если записей больше одной и центральное подразделение не единственное или нет ни одного центрального подразделение, то процесс прерывается.

Если подразделение единственное, то

  • подразделение назначается центральным,
  • DEP_ID назначается равным 1.
  • добавляется роль REPL_ROLE типа SYSDBA
  • в глобальной настройке Текущее подразделение (GL_DEFDEP_ID) переключаемся на эту запись (GL_DEFDEP_ID=1).

Если подразделение не единственное, то считается что эти настройки уже были сделаны раньше.

2. Создание репликационной структуры

Выполняется корректировка триггеров для

  • добавления записи
  • редактирования записи
  • удаления записи

3. Подготовка центрального подразделения

  • Удаление изменений из лога (MST_META_CHANGES)
  • Добавление всех пользователей в текущее подразделение
  • Глобальная настройка «ОСНОВНЫЕ: Цены одинаковые во всех подразделениях» (GL_TOVARS_GLOBALPRICE) устанавливается в 0
  • Глобальная настройка «» (GL_REPL_ACTIVE) устанавливается в 0
  • Обновляется список ограничений целостности (Foreign keys)
  • Обновляется список первичных ключей (Primary keys)
  • Устанавливается «префикс ключа» (GEN_CUR_DEP_ID) в 100 независимо от DEPS.DEP_ID
  • Устанавливается GEN_IS_CENTR в 1

4. Настройка REPL_ROLE

Для роли REPL_ROLE поставить GRANT ALL

По завершении операции просмотреть логи для проверки успешности проведенных работ (кнопка Открыть текущий лог…)
Файл лога лежит в той же папке, где находится DBMeta.

Дополнительная информация