Создание резервных перед закрытием периода в биллинге
Коротко
$ sudo nohup /data/agis/agis-script/agis_backup_lvm_xfs > /dev/null 2>&1& $ tail -f /var/log/agis_backup.log $ nohup /data/agis/agis-script/agis-mongo-dump-period-close.sh > /dev/null 2>&1& $ tail -n 10 -f agis-mongo-db-bil-2021-01-23_05-36.log
Подробно
Перед закрытием периода надо запускать
Первый этап, начало
$ sudo nohup /data/agis/agis-script/agis_backup_lvm_xfs > /dev/null 2>&1&
Возможны модификации для отдельных клиентов, например:
$ sudo nohup /data/script/agis_backup_lvm_xfs-client > /dev/null 2>&1&
Дождаться выполнение первого этапа
$ tail -f /var/log/agis_backup.log
Должны выйти след строки:
$ tail -f /var/log/agis_backup.log 2022-10-02 16:13:38 Creation of the lvm snapshot successfully 2022-10-02 16:13:38 Mount snapshot successfully 2022-10-02 16:35:17 Done /backup/agis-2022-10-02_16-13-36.tgz 2022-10-02 16:35:21 Snaphost has been removed successfully 2022-10-02 16:57:02 TGZ file /backup/agis-2022-10-02_16-13-36.tgz created successfully 2022-10-02 16:57:02 Move backup agis-2022-10-02_16-13-36.tgz to /backup/day successfully 2022-10-02 16:57:02 Delete files in /backup/day more than 2 days 2022-10-02 16:57:02 Delete files in /backup/day/../week more than 31 days 2022-10-02 16:57:03 Telegram bot sended. Please check telegram 2022-10-02 16:57:03 Finish backup
Здесь главное, чтобы появилось ключевое слово – Finish backup. Тогда первый этап будет завершен.
Второй этап, начало
$ nohup /data/agis/agis-script/agis-mongo-dump-period-close.sh > /dev/null 2>&1&
Если возникнет ошибка
$ nohup: failed to open 'nohup.out': Permission denied
надо удалить в текщей директории файл nohup.out следующим образом
$sudo rm ./nohup.out
или сментить текущую диреторию, например
$ cd /tmp
После завершения в папке /backup/dumps_period_close будут созданы два файла:
- agis-mongo-db-bil-2021-01-23_05-36.arch-dump – это сам backup
- agis-mongo-db-bil-2021-01-23_05-36.log – файл истории создания backup
При этом 2021-01-23_05-36 – это метка времени создания backup. Т.е. это дата и время начала создания backup, например в данном случае backup был запущен 23 января 2021 года, время 05 часов, 36 минут.
Для проверки текущего состояния процесса выполнения backup сделать следующее:
$ cd /backup/agis/dumps_period_close $ ls -lt total 115648116 drwxr-xr-x 4 bill bill 4096 Jan 29 17:30 . drwxr-xr-x 7 root root 4096 Dec 27 06:40 .. -rw-rw-r-- 1 bill bill 60639619976 Jan 23 07:33 agis-mongo-db-bil-2021-01-23_05-36.arch-dump -rw-rw-r-- 1 bill bill 438872 Jan 23 07:33 agis-mongo-db-bil-2021-01-23_05-36.log $ cat agis-mongo-db-bil-2021-01-23_05-36.log
Если в конце файла log Вы увидите следующие строки, то процесс backup был успешно завершен 2021-01-23 07:33:20 и этап 2 завершен
..... 2021-01-23 07:33:20 Резервная копия agis-mongo-db-bil сделана 2021-01-23 07:33:20 Finish mongodump agis-mongo-db-bil --gzip --archive
Или видите статус в on-line следующей командой
$ tail -n 10 -f agis-mongo-db-bil-2021-01-23_05-36.log
Параметр -n – сколько строчек показывать на экране
Дополнительно:
nohup – UNIX-утилита, запускающая указанную команду с игнорированием сигналов потери связи (SIGHUP). Таким образом, команда будет продолжать выполняться в фоновом режиме и после того, как пользователь выйдет из системы. Запустили команду – вышли из ssh, пошли пить чай!
Скрипт /data/agis/agis-script/gis-mongo-dump-period-close.sh
Тут есть два параметра
BACKUPDIR=”/backup/dumps_period_close” – папка, куда будет сохранен архив mongodump
BACKUPCONT=”agis-mongo-db-bil” – название контейнера базы данных mongo
В папке $BACKUPDIR будет создан log file содержащий историю выполнения mongodump
Пример:
agis-mongo-db-bil-2021-01-23_05-36.arch-dump – Сам архив
agis-mongo-db-bil-2021-01-23_05-36.log – log файл
$ cat agis-mongo-dump-period-close.sh #!/bin/bash # agis-mongo-dump-period-close.sh # Thi script is written to backup mongo billing container with log file # 30 Dec 2020 15:41:23 PM +06 # Author Kazdayev Nurlan #Settings BACKUPDIR="/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.log echo $(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 fi echo $(date +"%Y-%m-%d %H:%M:%S") " Finish mongodump $BACKUPCONT --gzip --archive" >> $LOGFILE