====== Мастер репликации ======
Проект [[:dbmeta|DBMeta]]\\
Система **[[:Репликация|Репликация]]**\\
**ЦДБ** - центральная база данных
Форма **"Мастер репликации"** открывается в **«DBMeta»** кнопкой **"Мастер репликации"** \\
предназначена для переключения текущей базы данных в режим центральной базы данных.\\
{{:pasted:20200113-131358.png|}}\\
Настройки всегда включены и недоступны для редактирования\\
* **Изменение номера центрального подразделения с 0 на 1**.
* Если DEPS содержит только одну запись и DEPS.DEP_ID = 0, то
- делаем ее центральной DEPS.DEP_ID = 1
- в глобальной настройке **Текущее подразделение** (GL_DEFDEP_ID) переключаемся на эту запись (GL_DEFDEP_ID=1)
- в базу добаляется роль **"REPL_ROLE"**
* **Переключение глобальной настройки Текущее подразделение**.
* Если DEPS не имеет записей, то создается запись и настройка переключается на нее
* Если DEPS имеет одну запись Центр, то настройка переключается на нее
* Если DEPS имеет записей Центр больше одной, то выдается сообщение об ошибке и процесс прерывается
* Если DEPS имеет записей больше одной и ни одна из них не отмечена как "Центр", то выдается сообщение об ошибке и процесс прерывается
* **Создание репликационной структуры**.
* Выполняется корректировка триггеров [[develop:Реализация системы репликации|Реализация системы репликации]] для
* добавления записи
* редактирования записи
* удаления записи
* **Подготовка центрального подразделения**.
* Если текущее подразделение типа Центр, то выполняются следующие операции:
- Удаление изменений из лога (MST_META_CHANGES)
- Добавление всех пользователей в текущее подразделение
- Глобальная настройка "ОСНОВНЫЕ: Цены одинаковые во всех подразделениях" (GL_TOVARS_GLOBALPRICE) устанавливается в 0
- Глобальная настройка "" (GL_REPL_ACTIVE) устанавливается в 0
- Обновляется список ограничений целостности (Foreign keys)
- Обновляется список первичных ключей (Primary keys)
- Устанавливается "префикс ключа" в 100 независимо от DEPS.DEP_ID
* **Для роли REPL_ROLE поставить GRANT ALL**.
===== Подготовительные операции =====
- [[:Отключение_и_переименование_базы|Переименование базы данных]]
- Создание копии базы данных
- Проверка по дате **актуальности DBMeta** (При необходимости скачать новую версию из папки Z:\Agbis\_NonVersion\DBMeta.exe).\\
===== Кнопки =====
* **Запуск** - запускает процесс создания и настройки ЦДБ,
* **Открыть текущий лог...** - открывает в блокноте текущий лог программы,
* **Close** - закрывает форму,
* **Помощь** - открывает текст с описанием формы.
===== Создание и настройка ЦДБ =====
Кнопка **Запуск** выдает запрос на подтверждение начала процесса настройки ЦБД\\
После подтверждения процесс не может быть остановлен.\\
Блокируются возможность изменения настроек и кнопка **Запуск**.\\
Индикатор отображает степень выполнения процесса.\\
==== 1. Включение ЦБД ====
Считывается список подразделений из таблицы [[:deps|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.\\
===== Дополнительная информация =====
[[develop:repl_param_test|Тестирование репликационных параметров БД]] \\
[[:mt_DBMainForm|Главная форма "DBMeta"]]\\
[[:mt_OptReplForm|Мастер репликации]]\\
[[:mt_CopyDepForm|Создание нового подразделения]]\\
[[:mt_DepForm|Подразделение]]\\
[[:Репликация|Репликация]]\\
[[:dbmeta|Назад]]\\