Инструменты пользователя

Инструменты сайта


ac:vstroennaja_replikacija_fb4

Настройка внутренней репликации

основная дока по этому поводу

настройка основной БД

если все в докере то стоит созадть локального пользователя firebird

sudo groupadd -g 84 firebird
sudo useradd -u 84 -g firebird -M -s /usr/sbin/nologin firebird

если в консоли то

isql -user SYSDBA -password $FIREBIRD_ROOT_PASSWORD localhost:/db/ac.fdb
ALTER DATABASE ENABLE PUBLICATION
ALTER DATABASE INCLUDE ALL TO PUBLICATION

после этого настроиваем файл реплики пример -

database = /db/ac.fdb
{
        journal_directory = /db/replic/journal
        journal_archive_directory = /db/replic/journal_archive
}

папки должны быть уже созданы, после этого сервер надо перезапустить.

копирование БД

с рабочей БД лучше всего через блокировку файла и ручное копирование

вызываем

ALTER DATABASE BEGIN BACKUP

Копируем, вызываем

ALTER DATABASE END BACKUP

настройка принимающего сервера

nbackup -f /db/ac.fdb -seq

и одно из двух ниже -

  gfix -replica read_only /db/ac.fdb -- set up database as read-only replica
  gfix -replica read_write /db/ac.fdb -- set up database as read-write replica

вторая нужна если там отчетность и она должна писать в БД.

в конфиг -

database = /db/ac.fdb
{
  journal_source_directory = /db/replic/in
}

синхронизация

на реплике -

adduser replic
adduser replic firebird

убеждаемся что у группы есть право на запись в /db/repic/in

на сервере генерим ключ -

ssh-keygen  

копируем на реплику -

ssh-copy-id replic@192.168.0.257

upload.sh

#!/bin/sh

# Цикл для обработки каждого файла в директории /db/replic/journal_archive
for file in /db/replic/journal_archive/*
do
  # Использование rsync для копирования файла на удаленный сервер
  # -a : Архивный режим, сохраняет разрешения, владельцев и временные метки
  # -v : Вывод подробной информации о процессе копирования
  # -z : Сжатие данных во время передачи
  # --remove-source-files : Удаляет исходный файл после успешной передачи
  rsync -az --remove-source-files "$file" replic@1.6.1.10:/db/replic/in/

  # Проверка статуса выполнения rsync
  if [ $? -eq 0 ]; then
    # Удалите символ комментария ниже для вывода сообщения во время отладки
    # echo "Успешное копирование и удаление: $file"
    :
  else
    echo "Ошибка при копировании файла: $file" >> /db/upload_error.log
  fi
done

в крон -

# upload replic
* * * * * flock -n /db/upload.sh /db/upload.sh

проверка

в случае успешной работы, будет выполняться 3 условия

1 - на основном сервер пустая папка /db/replic/journal_archive

2 - на реплике пустая папка /db/replic/in/

3 - можно сравнивать кол-во записей в bill

Converting the replica to a regular database

Для того чтоб БД вернуть в рабочий режим надо выполнить на отключеной БД:

  gfix -replica none /db/ac.fdb

т.е. выключить отчеты, ядро, кассы и выполнить. если это в рабочей суматохе то это надо делать до того как сменили адрес на сервере на основной если уже сменили, то есть вот такой быстрый хак -

  mv ac.fdb ac_tmp.fdb
  reboot
  gfix -replica none /db/ac_tmp.fdb
  mv ac_tmp.fdb ac.fdb

т.е. переименовать, ребутнуть, выполнить команду, вернуть обратно

ac/vstroennaja_replikacija_fb4.txt · Последнее изменение: attid

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki