Может возникнуть ситуация при которой файл .dt будет выгружаться средствами 1с,
но при обратной загрузке или загрузке в файловую базу, загружаться не будет (при ошибках в базе).
Файл .dt может считаться бэкапом только при условии проверки загрузки!
Поэтому необходимо организовать бэкап средствами базы данных.
/home/user/test/ - папка с доступом по ftp (test test) (ранее подготовлена)
/home/user/test/backup - здесь будем складывать dump
Бэкап с архивированием:
$ sudo /bin/su postgres -c "pg_dump -Fc demo" > /home/user/test/backup/demo
$ sudo /bin/su postgres -c "createdb --username postgres -T template0 demotest"
$ sudo /bin/su postgres -c "pg_restore -d demotest /home/user/test/backup/demo"
Вариант для всех баз
$ sudo /bin/su postgres -c "pg_dumpall -c" > /home/user/test/backup/baseall
$ sudo /bin/su postgres -c "pg_restore -d demotest" /home/user/test/backup/demo
$ sudo /bin/su postgres -c "psql -l"
$ sudo /bin/su postgres -c "dropdb demotest"
Размер базы demo
$ sudo su -c "psql -d demo -c \"select pg_size_pretty( pg_database_size('demo'))\"" postgres
Размер базы demo
$ sudo su -c "psql -c \"select pg_size_pretty( pg_database_size('demo'))\"" postgres
#!/bin/sh
set -e
echo "====================================================================" >> /home/user/test/backup/backup.log
# останавливаем сервер 1С
echo "останавливаем сервер 1С"
sudo systemctl stop srv1cv83.service
#systemctl status srv1cv83.service >> /home/user/test/backup/backup.log
echo "состояние сервера 1С" >> /home/user/test/backup/backup.log
sudo systemctl status srv1cv83.service | grep 'Active:' >> /home/user/test/backup/backup.log
echo "--------------------------------------------------------------------" >> /home/user/test/backup/backup.log
# Устанавливаем дату
DATA=`date +"%Y-%m-%d_%H-%M"`
echo "`date +"%Y-%m-%d_%H-%M-%S"` Size database file: " >> /home/user/test/backup/backup.log
sudo du -h -s /var/lib/postgresql/9.6/main/base >> /home/user/test/backup/backup.log
echo "--------------------------------------------------------------------" >> /home/user/test/backup/backup.log
# Записываем информацию в лог с секундами
echo "`date +"%Y-%m-%d_%H-%M-%S"` Start backup, restore, vacuum базы demo" >> /home/user/test/backup/backup.log
# Бэкапим базу данных demo и сразу сжимаем
echo "`date +"%Y-%m-%d_%H-%M-%S"` Start backup, restore, vacuum базы demo"
#cd /home/user/test/backup/
sudo /bin/su postgres -c "dropdb demotest" >/dev/null 2>/dev/null || true
sudo /bin/su postgres -c "pg_dump -Fc demo" > /home/user/test/backup/demo_$DATA && \
sudo /bin/su postgres -c "createdb --username postgres -T template0 demotest" && \
sudo /bin/su postgres -c "pg_restore -d demotest /home/user/test/backup/demo_$DATA" && \
sudo /bin/su postgres -c "/usr/bin/vacuumdb --analyze --full --quiet \
--username postgres --dbname=demo" && \
sudo /bin/su postgres -c "dropdb demotest"
#echo $?
if [ $? -ne 0 ]
then
echo "`date +"%Y-%m-%d_%H-%M-%S"` Ошибка завершения для базы demo"
echo "`date +"%Y-%m-%d_%H-%M-%S"` Ошибка завершения для для базы demo" >> /home/user/test/backup/backup.log
else
echo "`date +"%Y-%m-%d_%H-%M-%S"` Успешное завершение для базы demo"
echo "`date +"%Y-%m-%d_%H-%M-%S"` Успешное завершение для базы demo" >> /home/user/test/backup/backup.log
fi
echo "--------------------------------------------------------------------" >> /home/user/test/backup/backup.log
# Записываем информацию в лог с секундами
echo "`date +"%Y-%m-%d_%H-%M-%S"` Start backup, restore, vacuum базы kamin" >> /home/user/test/backup/backup.log
# Бэкапим базу данных demo и сразу сжимаем
echo "`date +"%Y-%m-%d_%H-%M-%S"` Start backup, restore, vacuum базы kamin"
#cd /home/user/test/backup/
sudo /bin/su postgres -c "dropdb kamintest" >/dev/null 2>/dev/null || true
sudo /bin/su postgres -c "pg_dump -Fc kamin" > /home/user/test/backup/kamin_$DATA && \
sudo /bin/su postgres -c "createdb --username postgres -T template0 kamintest" && \
sudo /bin/su postgres -c "pg_restore -d kamintest /home/user/test/backup/kamin_$DATA" && \
sudo /bin/su postgres -c "/usr/bin/vacuumdb --analyze --full --quiet \
--username postgres --dbname=kamin" && \
sudo /bin/su postgres -c "dropdb kamintest"
#echo $?
if [ $? -ne 0 ]
then
echo "`date +"%Y-%m-%d_%H-%M-%S"` Ошибка завершения для базы kamin"
echo "`date +"%Y-%m-%d_%H-%M-%S"` Ошибка завершения для для базы kamin" >> /home/user/test/backup/backup.log
else
echo "`date +"%Y-%m-%d_%H-%M-%S"` Успешное завершение для базы kamin"
echo "`date +"%Y-%m-%d_%H-%M-%S"` Успешное завершение для базы kamin" >> /home/user/test/backup/backup.log
fi
echo "--------------------------------------------------------------------" >> /home/user/test/backup/backup.log
# запускаем сервер 1С
echo "запускаем сервер 1С"
sudo systemctl start srv1cv83.service
#systemctl status srv1cv83.service >> /home/user/test/backup/backup.log
echo "состояние сервера 1С" >> /home/user/test/backup/backup.log
sudo systemctl status srv1cv83.service | grep 'Active:' >> /home/user/test/backup/backup.log
echo "--------------------------------------------------------------------" >> /home/user/test/backup/backup.log
echo "закончено"
Сохранить.
Однократный запуск:
$ sudo sh backup-sql.sh
Запуск по расписанию:
$ sudo -i
# crontab -e
Добавить в конец (сработает в 18:01):
# каждые день в 18.00
Смотреть задания:
# crontab -l
но при обратной загрузке или загрузке в файловую базу, загружаться не будет (при ошибках в базе).
Файл .dt может считаться бэкапом только при условии проверки загрузки!
Поэтому необходимо организовать бэкап средствами базы данных.
/home/user/test/ - папка с доступом по ftp (test test) (ранее подготовлена)
/home/user/test/backup - здесь будем складывать dump
Бэкап с архивированием:
$ sudo /bin/su postgres -c "pg_dump -Fc demo" > /home/user/test/backup/demo
$ sudo /bin/su postgres -c "createdb --username postgres -T template0 demotest"
$ sudo /bin/su postgres -c "pg_restore -d demotest /home/user/test/backup/demo"
Вариант для всех баз
$ sudo /bin/su postgres -c "pg_dumpall -c" > /home/user/test/backup/baseall
$ sudo /bin/su postgres -c "pg_restore -d demotest" /home/user/test/backup/demo
$ sudo /bin/su postgres -c "psql -l"
$ sudo /bin/su postgres -c "dropdb demotest"
Размер базы demo
$ sudo su -c "psql -d demo -c \"select pg_size_pretty( pg_database_size('demo'))\"" postgres
Размер базы demo
$ sudo su -c "psql -c \"select pg_size_pretty( pg_database_size('demo'))\"" postgres
$ nano backup-sql.sh
#!/bin/sh
set -e
echo "====================================================================" >> /home/user/test/backup/backup.log
# останавливаем сервер 1С
echo "останавливаем сервер 1С"
sudo systemctl stop srv1cv83.service
#systemctl status srv1cv83.service >> /home/user/test/backup/backup.log
echo "состояние сервера 1С" >> /home/user/test/backup/backup.log
sudo systemctl status srv1cv83.service | grep 'Active:' >> /home/user/test/backup/backup.log
echo "--------------------------------------------------------------------" >> /home/user/test/backup/backup.log
# Устанавливаем дату
DATA=`date +"%Y-%m-%d_%H-%M"`
echo "`date +"%Y-%m-%d_%H-%M-%S"` Size database file: " >> /home/user/test/backup/backup.log
sudo du -h -s /var/lib/postgresql/9.6/main/base >> /home/user/test/backup/backup.log
echo "--------------------------------------------------------------------" >> /home/user/test/backup/backup.log
# Записываем информацию в лог с секундами
echo "`date +"%Y-%m-%d_%H-%M-%S"` Start backup, restore, vacuum базы demo" >> /home/user/test/backup/backup.log
# Бэкапим базу данных demo и сразу сжимаем
echo "`date +"%Y-%m-%d_%H-%M-%S"` Start backup, restore, vacuum базы demo"
#cd /home/user/test/backup/
sudo /bin/su postgres -c "dropdb demotest" >/dev/null 2>/dev/null || true
sudo /bin/su postgres -c "pg_dump -Fc demo" > /home/user/test/backup/demo_$DATA && \
sudo /bin/su postgres -c "createdb --username postgres -T template0 demotest" && \
sudo /bin/su postgres -c "pg_restore -d demotest /home/user/test/backup/demo_$DATA" && \
sudo /bin/su postgres -c "/usr/bin/vacuumdb --analyze --full --quiet \
--username postgres --dbname=demo" && \
sudo /bin/su postgres -c "dropdb demotest"
#echo $?
if [ $? -ne 0 ]
then
echo "`date +"%Y-%m-%d_%H-%M-%S"` Ошибка завершения для базы demo"
echo "`date +"%Y-%m-%d_%H-%M-%S"` Ошибка завершения для для базы demo" >> /home/user/test/backup/backup.log
else
echo "`date +"%Y-%m-%d_%H-%M-%S"` Успешное завершение для базы demo"
echo "`date +"%Y-%m-%d_%H-%M-%S"` Успешное завершение для базы demo" >> /home/user/test/backup/backup.log
fi
echo "--------------------------------------------------------------------" >> /home/user/test/backup/backup.log
# Записываем информацию в лог с секундами
echo "`date +"%Y-%m-%d_%H-%M-%S"` Start backup, restore, vacuum базы kamin" >> /home/user/test/backup/backup.log
# Бэкапим базу данных demo и сразу сжимаем
echo "`date +"%Y-%m-%d_%H-%M-%S"` Start backup, restore, vacuum базы kamin"
#cd /home/user/test/backup/
sudo /bin/su postgres -c "dropdb kamintest" >/dev/null 2>/dev/null || true
sudo /bin/su postgres -c "pg_dump -Fc kamin" > /home/user/test/backup/kamin_$DATA && \
sudo /bin/su postgres -c "createdb --username postgres -T template0 kamintest" && \
sudo /bin/su postgres -c "pg_restore -d kamintest /home/user/test/backup/kamin_$DATA" && \
sudo /bin/su postgres -c "/usr/bin/vacuumdb --analyze --full --quiet \
--username postgres --dbname=kamin" && \
sudo /bin/su postgres -c "dropdb kamintest"
#echo $?
if [ $? -ne 0 ]
then
echo "`date +"%Y-%m-%d_%H-%M-%S"` Ошибка завершения для базы kamin"
echo "`date +"%Y-%m-%d_%H-%M-%S"` Ошибка завершения для для базы kamin" >> /home/user/test/backup/backup.log
else
echo "`date +"%Y-%m-%d_%H-%M-%S"` Успешное завершение для базы kamin"
echo "`date +"%Y-%m-%d_%H-%M-%S"` Успешное завершение для базы kamin" >> /home/user/test/backup/backup.log
fi
echo "--------------------------------------------------------------------" >> /home/user/test/backup/backup.log
# запускаем сервер 1С
echo "запускаем сервер 1С"
sudo systemctl start srv1cv83.service
#systemctl status srv1cv83.service >> /home/user/test/backup/backup.log
echo "состояние сервера 1С" >> /home/user/test/backup/backup.log
sudo systemctl status srv1cv83.service | grep 'Active:' >> /home/user/test/backup/backup.log
echo "--------------------------------------------------------------------" >> /home/user/test/backup/backup.log
echo "закончено"
Сохранить.
Однократный запуск:
$ sudo sh backup-sql.sh
Запуск по расписанию:
$ sudo -i
# crontab -e
Добавить в конец (сработает в 18:01):
# каждые день в 18.00
0 18 * * * sh /home/user/backup-sql.sh Сохранить.
Смотреть задания:
# crontab -l
Комментариев нет:
Отправить комментарий