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
As simple as this:
gfix -replica none /db/ac.fdb
ac/vstroennaja_replikacija_fb4.txt · Последнее изменение: — attid
