Относится к стандартной установке
Настройки могут меняться в зависимости от конфигурации системы. Необходмо получить пояснения от авторизированного установщика системы
Настройка создания резервных копий (LVM)
Проводиться полное копирование данных и системы АГИС с использованием технологии LVM. Время и частота запуска резервного копирования определяется в файле /etc/crontab
Резервные копии храняться в директориях:
/data/backup/day – ежедневные бакапы. По умолчанию, храняться архивы за последние 7 дней. Все архивы, созданные ранее 7 дней удаляются
/data/backup/week – недельные бакапы, по истечении 30 дней удаляются
/data/backup/ – месячные бакапы, не удаляются
Настройка
Добавить в конец файла /etc/crontab
В 0-50 и 1-00, каждый день будет запускаться процесс резервного копирования. Возможно изменить время запуска процесса
# Do not forget # /usr/bin/systemctl restart cron 50 0 * * * agis /data/agis/agis-script/agis-config-tgz 0 1 * * * root /data/agis/agis-script/agis_backup_lvm_xfs
В результате получится:
$ cat /etc/crontab # /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file # and files in /etc/cron.d. These files also have username fields, # that none of the other crontabs do. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) # Do not forget # /usr/bin/systemctl restart cron 50 0 * * * agis /data/agis/agis-script/agis-config-tgz 0 1 * * * root /data/agis/agis-script/agis_backup_lvm_xfs
Выполнить для обновления планировщика заданий cron
# /usr/bin/systemctl restart cron
Просмотр логов проведения бакапов
cat – выводит файл целиком
tail – выводит последние 10 строк файла и обновляется в терминале. -n 50 – будет выводить послдение 50 строк
$ cat /var/log/agis_backup.log --------------------------------------------------------------------------------------------- 2021-05-13 01:00:01 Start LVM backup. File system xfs 2021-05-13 01:00:01 1 System:agis From:agis 2021-05-13 01:00:02 Creation of the lvm snapshot successfully 2021-05-13 01:00:02 Mount snapshot successfully 2021-05-13 01:05:57 Done /backup/agis-2021-05-13_01-00-01.tgz 2021-05-13 01:05:58 Snaphost has been removed successfully 2021-05-13 01:07:05 TGZ file /backup/agis-2021-05-13_01-00-01.tgz created successfully 2021-05-13 01:07:50 Copy backup agis-2021-05-13_01-00-01.tgz to /data/backup/day successfully 2021-05-13 01:07:50 Remove agis-2021-05-13_01-00-01.tgz from temporary backup directory successfully 2021-05-13 01:07:50 Delete files in /data/backup/day more than 10 days 2021-05-13 01:07:50 Finish backup $ tail -f /var/log/agis_backup.log 2021-05-14 03:47:13 1 System:agis From:agis 2021-05-14 03:47:14 Creation of the lvm snapshot successfully 2021-05-14 03:47:14 Mount snapshot successfully 2021-05-14 03:53:03 Done /backup/agis-2021-05-14_03-47-13.tgz 2021-05-14 03:53:04 Snaphost has been removed successfully 2021-05-14 03:54:07 TGZ file /backup/agis-2021-05-14_03-47-13.tgz created successfully 2021-05-14 03:54:48 Copy backup agis-2021-05-14_03-47-13.tgz to /data/backup/day successfully 2021-05-14 03:54:48 Remove agis-2021-05-14_03-47-13.tgz from temporary backup directory successfully 2021-05-14 03:54:50 Delete files in /data/backup/day more than 10 days 2021-05-14 03:54:50 Finish backup
Не рекомендуется установка системы без LVM
Настройка создания резервных копий без LVM
Если не используется LVM, то будет проводиться резрвное копирование базы данных mongo стандратными средствами самой mongo. Будет копироваться база agis-mongo-db
Добавить в конец файла /etc/crontab
В 0-50 и 1-00, каждый день будет запускаться процесс резервного копирования. Возможно изменить время запуска процесса
# Do not forget # /usr/bin/systemctl restart cron 50 0 * * * agis /data/agis/agis-script/agis-config-tgz 0 1 * * * agis /data/agis/agis-script/agis-mongo-postgis-backup.sh
В результате получится:
$ cat /etc/crontab # /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file # and files in /etc/cron.d. These files also have username fields, # that none of the other crontabs do. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) # Do not forget # /usr/bin/systemctl restart cron 50 0 * * * agis /data/agis/agis-script/agis-config-tgz 0 1 * * * agis /data/agis/agis-script/agis-mongo-postgis-backup.sh
Выполнить для обновления планировщика заданий cron
# /usr/bin/systemctl restart cron
Просмотр логов проведения бакапов
$ cat /data/backup/agis-dump/agis-YYYY-MM-DD-HHMM-mongo.log $ cat /data/backup/agis-dump/agis-YYYY-MM-DD-HHMM-postgis.log
или
$ tail -f /data/backup/agis-dump/agis-YYYY-MM-DD-HHMM-mongo.log $ tail -f /data/backup/agis-dump/agis-YYYY-MM-DD-HHMM-postgis.log
YYYY-год
MM-месяц
DD-день
HHMM-час минута
Например, 2021 год, 12 мая, 3 часа 26 минут, время UTC.
/data/backup/agis-dump/agis-2021-05-12-0326-mongo.log /data/backup/agis-dump/agis-2021-05-12-0326-postgis.log
mongo-postgis-backup.sh
$ cat /data/script/agis-mongo-postgis-backup.sh #!/bin/bash APP_NAME="agis" TIMESTAMP=`date +%F-%H%M` BACKUPS_DIR="/data/backup/agis-dump" BACKUP_NAME="$APP_NAME-$TIMESTAMP" echo "$(date +"%Y-%m-%d %H:%M:%S") Start mongodump --gzip --archive" > $BACKUPS_DIR/$BACKUP_NAME.log /usr/bin/docker exec agis-mongo-db sh -c "mongodump --gzip --archive" > $BACKUPS_DIR/$BACKUP_NAME.tgz 2>>$BACKUPS_DIR/$BACKUP_NAME.log if [ $? = 0 ]; then echo "Резервная копия сделана" >> $BACKUPS_DIR/$BACKUP_NAME.log else echo "Ошибка при создании резрвной копии" >> $BACKUPS_DIR/$BACKUP_NAME.log fi
Если в БД установлен пароль, то для бакапа нужен пользователь agis-dump с ролью backup
Если база с паролем, то нужно добавить в файл /data/script/agis-mongo-postgis-backup.sh
--username=agis-dump --password=i99xfeiyZ1kF
/usr/bin/docker exec agis-mongo-db sh -c "mongodump --username=agis-dump --password=i99xfeiyZ1kF --gzip --archive"
Backup mongo billing container with log
Запуск
$ nohup /data/agis/agis-script/agis-mongo-dump-period-close.sh &
Сам скрипт:
#Settings
BACKUPDIR="/data/backup/dumps_period_close" # name of the directory where backup have to save
BACKUPCONT="agis-mongo-db-bil"
# ----------------------------------------------------------------------------------------------TIMESTAMP=$(date +"%Y-%m-%d_%H-%M")
LOGFILE=$BACKUPDIR/$BACKUPCONT-$TIMESTAMP.logecho $(date +"%Y-%m-%d %H:%M:%S") "Start mongodump $BACKUPCONT --gzip --archive" > $LOGFILE
/usr/bin/docker exec $BACKUPCONT sh -c "mongodump --gzip --archive" > $BACKUPDIR/$BACKUPCONT-$TIMESTAMP.arch-dump 2>>$LOGFILE
if [ $? = 0 ]; then
echo $(date +"%Y-%m-%d %H:%M:%S") "Резервная копия $BACKUPCONT сделана" >> $LOGFILE
else
echo $(date +"%Y-%m-%d %H:%M:%S") "Ошибка при создании $BACKUPCONT резервной копии" >> $LOGFILE
fiecho $(date +"%Y-%m-%d %H:%M:%S") " Finish mongodump $BACKUPCONT --gzip --archive" >> $LOGFILE
Дополнительно
Для копирования резервных копий на дисковых хранилищах (NAS), необходимо запускать на дисковых хранилищах скрипты rsync
#!/bin/bash echo "---------------------" >> /volume1/Backup/clients/client_backup.log echo $(date +"%d-%m-%Y %T") START >> /volume1/Backup/clients/client_backup.log echo $(date +"%d-%m-%Y %T") AGIS >> /volume1/Backup/agis_dump/agis_dump_backup.log /usr/bin/rsync -aze "ssh -p 22" user@192.168.60.18:/data/backup /volume1/Backup/agis_dump/ echo $(date +"%d-%m-%Y %T") Finish >> /volume1/Backup/clients/client_backup.log echo "---------------------" >> /volume1/Backup/clients/client_backup.log echo " " >> /volume1/Backup/clients/client_backup.log