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

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


ac:vstroennaja_replikacija_fb4

Это старая версия документа!


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

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

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

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.1779130457.txt.gz · Последнее изменение: attid

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki