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