Сохранение данных на рабочем сервере:
Сохранение базы demo:
$ sudo /bin/su postgres -c "pg_dump -Fc demo" > /home/user/demo_2019-03-14_23-00-11.dump
Сохранение базы zik:
$ sudo /bin/su postgres -c "pg_dump -Fc zik" > /home/user/zik_2019-03-14_23-00-11.dump
Скачиваем файлы.
Подключаем резервный сервер, в процессе или предварительно поменяв пароли.
1. Начнем с пароля usr1cv8
это пароль нам собственно неинтересен, поэтому логично сделать
usr1cv8 резервным паролем sudo
$ sudo usermod -aG sudo usr1cv8
$ sudo passwd usr1cv8
Введите новый пароль UNIX:
Повторите ввод нового пароля UNIX:
passwd: password updated successfully
или
$ sudo echo -e "password\npassword\n" | sudo passwd usr1cv8
Пароль usr1cv8 не на что не влияет
Проверка:
$ su usr1cv8
Изменение пароля postgresql
$ sudo -u postgres psql -U postgres -c "alter user postgres with password 'password';"
После изменения пароля:
Необходимо изменить параметры подключения для каждой информационной базы:
Администратора информационной базы и его пароль взять из информационной базы,
например "Григорьянц А.А. (системный администратор)", может состоять из нескольких слов:
Может быть удобнее, чем менять пароли для баз, удалить кластер сервера 1с
и зарегистрировать базы по новой:
sudo /bin/su usr1cv8 -c "rm -rf /home/usr1cv8/.1cv8/1C/1cv8/*"
Если задействована папка conf , почистить /home/usr1cv8/.1cv8/1C/1cv8/ вручную.
Сменим пароль user
sudo echo -e "password\npassword\n" | sudo passwd user
Меняем настройки для dhcp:
$ sudo nano /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto enp1s0
iface enp1s0 inet dhcp
#iface enp1s0 inet static
#address 192.168.0.43
#netmask 255.255.255.0
#gateway 192.168.0.1
#dns-nameservers 8.8.8.8
#auto enp1s0
Сохранить
Обратить внимание NetBIOS-имена компьютеров могут быть до 15 символов.
Soc-1c-test-239k не будет адресоваться по имени, нужно прописывать hosts на клиентах.
$ sudo nano /etc/hosts
127.0.0.1 localhost Soc-1c-test-239k
#192.168.0.43 test
#192.168.0.43 Soc-1c-test-239k
Сохранить.
$ sudo nano /etc/hostname
#test
Soc-1c-test-239k
Сохранить.
При замене hostname
Если задействована папка conf , почистить /home/usr1cv8/.1cv8/1C/1cv8/ вручную.
либо грохнуть целиком:
sudo /bin/su usr1cv8 -c "rm -rf /home/usr1cv8/.1cv8/1C/1cv8/*"
После гроханья
$ sudo service srv1cv83 stop
$ sudo service srv1cv83 start
$ ss -tlnp | grep :15
Посмотреть базы:
$ sudo /bin/su postgres -c "psql -l"
Грохнуть лишние:
$ sudo /bin/su postgres -c "dropdb demo"
$ sudo /bin/su postgres -c "dropdb zik"
$ sudo /bin/su postgres -c "dropdb demotest"
$ sudo /bin/su postgres -c "dropdb demotest1"
$ sudo /bin/su postgres -c "psql -l"
Создадим базу demo:
$ sudo /bin/su postgres -c "createdb --username postgres -T template0 demo"
Загрузим demo:
$ sudo /bin/su postgres -c "pg_restore -d demo /home/user/demo_2019-03-14_23-00-11.dump"
Размер базы demo
$ sudo su -c "psql -d demo -c \"select pg_size_pretty( pg_database_size('demo'))\"" postgres
Подключим базу demo:
Создадим базу zik:
$ sudo /bin/su postgres -c "createdb --username postgres -T template0 zik"
Загрузим zik:
$ sudo /bin/su postgres -c "pg_restore -d zik /home/user/zik_2019-03-14_23-00-11.dump"
Размер базы demo
$ sudo su -c "psql -d zik -c \"select pg_size_pretty( pg_database_size('zik'))\"" postgres
Подключим базу zik:
Остается настроить backup
Настраиваем:
Скрипт backup postgres 9.6 pg_probackup
$ nano /home/user/backup-pgpro.sh
Вставить текст ниже:
#!/bin/sh
#set -e
#sudo su - postgres
BACKUP_DIR='/backup'
COPY_DIR='/backup/copy'
LOG_DIR='/backup'
LOG_ERR_FILE='err.txt'
INSTANCE='main'
COPY_ID=''
FLAG_BACKUP=false
FLAG_VALIDATE=false
sudo /bin/su - postgres -c "rm -f $LOG_DIR/$LOG_ERR_FILE"
sudo /bin/su - postgres -c "rm -f $LOG_DIR/$LOG_ERR_FILE.rotation"
sudo /bin/su - postgres -c "rm -f $LOG_DIR/pg_probackup.log"
sudo /bin/su - postgres -c "rm -f $LOG_DIR/pg_probackup.log.rotation"
#if false ; then
if true ; then
sudo systemctl stop srv1cv83.service
# Создание полной автономной резервной копии:
echo "INFO: Начинаем создание полной автономной резервной копии!"
LOGINFO=`date +"%Y-%m-%d %H:%M:%S MSK: INFO: Начинаем создание полной автономной резервной копии!"`
sudo /bin/su postgres -c "echo $LOGINFO >> $LOG_DIR/pg_probackup.log"
sudo /bin/su postgres -c "pg_probackup-9.6 backup -B $BACKUP_DIR \
--instance $INSTANCE -b FULL --stream --compress \
--log-directory=$LOG_DIR \
--log-level-file='info' \
--error-log-filename=$LOG_ERR_FILE"
if [ ! -f $LOG_DIR/$LOG_ERR_FILE ]; then
FLAG_BACKUP=true
# нет файла
echo "INFO: Создание полной автономной резервной копии $COPY_ID успешно завершено!"
LOGINFO=`date +"%Y-%m-%d %H:%M:%S MSK: INFO: Создание полной автономной \
резервной копии $COPY_ID успешно завершено!"`
sudo /bin/su postgres -c "echo $LOGINFO >> $LOG_DIR/pg_probackup.log"
else
FLAG_BACKUP=false
# проверку не проводил
# не знаю как смоделировать
# ошибку
#echo "Файл существует!"
echo "закончилось неудачей!"
cat $LOG_DIR/$LOG_ERR_FILE
fi
sudo systemctl start srv1cv83.service
fi
if $FLAG_BAKUP ; then
# Поскольку мы не знаем идентификатор резервной копии
# возьмем последнюю копию, но ее нужно проверить
COPY_ID=$(sudo /bin/su postgres -c "ls /backup/backups/main -1 | tail -1")
#echo $COPY_ID
# без ошибки
#COPY_ID='PNJKHE'
# с ошибкой
#COPY_ID='PNKVZY'
#COPY_ID='PNMWOY'
# короткий
#COPY_ID='PNJKHE'
#sudo /bin/su - postgres -c "rm -f $LOG_DIR/$LOG_ERR_FILE"
#sudo /bin/su - postgres -c "rm -f $LOG_DIR/$LOG_ERR_FILE.rotation"
sudo /bin/su - postgres -c "pg_probackup-9.6 validate -B $BACKUP_DIR \
--instance $INSTANCE \
-i $COPY_ID \
--log-level-file='info' \
--log-directory=$LOG_DIR \
--error-log-filename=$LOG_ERR_FILE"
if [ ! -f $LOG_DIR/$LOG_ERR_FILE ]; then
#echo "Файл не существует!"
FLAG_VALIDATE=true
echo "INFO: Резервная копия $COPY_ID прошла валидацию!"
LOGINFO=`date +"%Y-%m-%d %H:%M:%S MSK: INFO: Резервная копия $COPY_ID прошла валидацию!"`
sudo /bin/su postgres -c "echo $LOGINFO >> $LOG_DIR/pg_probackup.log"
#DATA=`date +"%Y-%m-%d_%H-%M-%S"`
#sudo /bin/su postgres -c "tar -cvzf $COPY_DIR/pg_pro-$DATA.tar.gz \
# $BACKUP_DIR/backups/$INSTANCE/$COPY_ID \
# -C $BACKUP_DIR/backups/$INSTANCE"
else
#echo "Файл существует!"
cat $LOG_DIR/$LOG_ERR_FILE
echo "INFO: Резервная копия $COPY_ID не прошла валидацию удаляем!"
LOGINFO=`date +"%Y-%m-%d %H:%M:%S MSK: INFO: Резервная копия $COPY_ID не прошла валидацию удаляем!"`
sudo /bin/su postgres -c "echo $LOGINFO >> $LOG_DIR/pg_probackup.log"
sudo /bin/su postgres -c "pg_probackup-9.6 delete -B $BACKUP_DIR \
--instance $INSTANCE \
-i $COPY_ID \
--log-directory=$LOG_DIR \
--log-level-file='info' \
--error-log-filename=$LOG_ERR_FILE"
FLAG_VALIDATE=false
fi
fi
#с полными путями
#if $FLAG_VALIDATE ; then
# DATA=`date +"%Y-%m-%d_%H-%M-%S"`
# sudo /bin/su postgres -c "cd $BACKUP_DIR/backups/$INSTANCE; \
# tar -cvzf $COPY_DIR/pg_pro-$DATA.tar.gz \
# $BACKUP_DIR/backups/$INSTANCE/$COPY_ID"
#fi
if $FLAG_VALIDATE ; then
DATA=`date +"%Y-%m-%d_%H-%M-%S"`
sudo /bin/su postgres -c "cd $BACKUP_DIR/backups/$INSTANCE; \
tar -cvzf $COPY_DIR/pg_pro-$DATA.tar.gz $COPY_ID > /dev/null"
echo "INFO: Создан файл $COPY_DIR/pg_pro-$DATA.tar.gz"
LOGINFO=`date +"%Y-%m-%d %H:%M:%S MSK: INFO: Создан файл $COPY_DIR/pg_pro-$DATA.tar.gz"`
sudo /bin/su postgres -c "echo $LOGINFO >> $LOG_DIR/pg_probackup.log"
fi
echo "Очистить каталог резервных копий в соответствии с политикой их сохранения"
echo "INFO: Очищаем каталог резервных копий в соответствии с политикой их сохранения"
LOGINFO=`date +"%Y-%m-%d %H:%M:%S MSK: INFO: Очищаем каталог резервных копий в соответствии с политикой их сохранения"`
sudo /bin/su postgres -c "pg_probackup-9.6 delete -B $BACKUP_DIR \
--instance $INSTANCE --expired \
--log-directory=$LOG_DIR \
--log-level-file='info' \
--error-log-filename=$LOG_ERR_FILE"
DAY=90 #(или ваше число дней)
sudo su -c "find /backup/copy -type f -mtime +$DAY -exec rm -f {} \;"
# full vacuum
#if false ; then
if true ; then
echo "INFO: Начинаем full vacuum"
LOGINFO=`date +"%Y-%m-%d %H:%M:%S MSK: INFO: Начинаем full vacuum"`
sudo /bin/su postgres -c "echo $LOGINFO >> $LOG_DIR/pg_probackup.log"
sudo /bin/su postgres -c "/usr/bin/vacuumdb -zfa >> $LOG_DIR/pg_probackup.log"
fi
LOGINFO=`date +"%Y-%m-%d %H:%M:%S MSK: INFO: Завершение работы"`
sudo /bin/su postgres -c "echo $LOGINFO >> $LOG_DIR/pg_probackup.log"
sudo /bin/su postgres -c "echo 'backup-pgpro' | mutt -s 'backup-pgpro' f1@vt.com -a $LOG_DIR/pg_probackup.log"
Сохранить.
Однократный запуск
$ time sudo sh backup-pgpro.sh
Запуск по расписанию:
$ sudo -i
# crontab -e
Добавить в конец (сработает в 22:40):
# каждые день в 22.40
Смотреть задания:
# crontab -l
Настраиваем:
Скрипт бэкапа postgres pg_dump
$ nano backup-sql.sh
Вставить текст ниже:
#!/bin/sh
# crontab -e
# mkdir -p /home/user/backup/yandex
set -e
BACKUP_DIR="/backup/copy"
DIR_YANDEX="/home/user/backup/yandex"
echo "====================================================================" > $BACKUP_DIR/backup.log
# останавливаем сервер 1С
echo "останавливаем сервер 1С"
sudo systemctl stop srv1cv83.service
echo "состояние сервера 1С" >> $BACKUP_DIR/backup.log
sudo systemctl status srv1cv83.service | grep 'Active:' >> $BACKUP_DIR/backup.log
echo "--------------------------------------------------------------------" >> $BACKUP_DIR/backup.log
# Устанавливаем дату
DATA=`date +"%Y-%m-%d_%H-%M-%S"`
DATA_NAME=`date +"%Y-%m-%d_%H-%M-%S"`
echo "$DATA Size database file: " >> $BACKUP_DIR/backup.log
sudo du -h -s /var/lib/postgresql/9.6/main/base >> $BACKUP_DIR/backup.log
echo "--------------------------------------------------------------------" >> $BACKUP_DIR/backup.log
# делаем backup
DB_BASE=`sudo /bin/su postgres -c "/usr/bin/psql -qAt -c 'SELECT * FROM pg_database;'" | \
cut -d"|" -f1 | /bin/grep -v template | /bin/grep -v postgres`
#DB_BASE="demo test" #конкретные базы
#DB_BASE="" #пропустить
echo $DB_BASE
for DB_NAME in $DB_BASE
do
DATA=`date +"%Y-%m-%d_%H-%M-%S"`
# Записываем информацию в лог с секундами
echo "$DATA Начало backup базы ${DB_NAME}" >> $BACKUP_DIR/backup.log
# Бэкапим базу данных demo и сразу сжимаем
echo "$DATA Начало backup базы ${DB_NAME}"
sudo /bin/su postgres -c "pg_dump -Fc ${DB_NAME}" > $BACKUP_DIR/${DB_NAME}_$DATA_NAME.dump
DATA=`date +"%Y-%m-%d_%H-%M-%S"`
if [ $? -ne 0 ]
then
echo "$DATA Ошибка завершения backup для базы ${DB_NAME}"
echo "$DATA Ошибка завершения backup для для базы ${DB_NAME}" >> $BACKUP_DIR/backup.log
exit
else
echo "$DATA Успешное завершение backup для базы ${DB_NAME}"
echo "$DATA Успешное завершение backup для базы ${DB_NAME}" >> $BACKUP_DIR/backup.log
fi
echo "--------------------------------------------------------------------" >> $BACKUP_DIR/backup.log
done
# запускаем сервер 1С
echo "Запускаем сервер 1С"
sudo systemctl start srv1cv83.service
echo "Состояние сервера 1С" >> $BACKUP_DIR/backup.log
sudo systemctl status srv1cv83.service | grep 'Active:' >> $BACKUP_DIR/backup.log
echo "--------------------------------------------------------------------" >> $BACKUP_DIR/backup.log
echo "Закончено"
# посылаем сообщение
sleep 2
#echo "backup" | mutt -s "backup" f1@vt.com -a $BACKUP_DIR/backup.log
Сохранить.
Однократный запуск:
$ sudo sh backup-sql.sh
Запуск по расписанию:
$ sudo -i
# crontab -e
Добавить в конец (сработает в 23:20):
# каждые день в 23.20
Смотреть задания:
# crontab -l
Сохранение резервных копий на backup сервере:
Сброс пароля в 1с (MSSQL/PostgreSQL)
$ nano backup1с.sh
Вставить текст ниже:
#!/bin/bash
rsync --recursive -v --ignore-existing /backup/copy backup@172.31.2.1::soc_1c date
Сохранить.
Сохранение базы demo:
$ sudo /bin/su postgres -c "pg_dump -Fc demo" > /home/user/demo_2019-03-14_23-00-11.dump
Сохранение базы zik:
$ sudo /bin/su postgres -c "pg_dump -Fc zik" > /home/user/zik_2019-03-14_23-00-11.dump
Скачиваем файлы.
Подключаем резервный сервер, в процессе или предварительно поменяв пароли.
1. Начнем с пароля usr1cv8
это пароль нам собственно неинтересен, поэтому логично сделать
usr1cv8 резервным паролем sudo
$ sudo usermod -aG sudo usr1cv8
$ sudo passwd usr1cv8
Введите новый пароль UNIX:
Повторите ввод нового пароля UNIX:
passwd: password updated successfully
или
$ sudo echo -e "password\npassword\n" | sudo passwd usr1cv8
Пароль usr1cv8 не на что не влияет
Проверка:
$ su usr1cv8
Изменение пароля postgresql
$ sudo -u postgres psql -U postgres -c "alter user postgres with password 'password';"
После изменения пароля:
Необходимо изменить параметры подключения для каждой информационной базы:
Администратора информационной базы и его пароль взять из информационной базы,
например "Григорьянц А.А. (системный администратор)", может состоять из нескольких слов:
Может быть удобнее, чем менять пароли для баз, удалить кластер сервера 1с
и зарегистрировать базы по новой:
sudo /bin/su usr1cv8 -c "rm -rf /home/usr1cv8/.1cv8/1C/1cv8/*"
Если задействована папка conf , почистить /home/usr1cv8/.1cv8/1C/1cv8/ вручную.
Сменим пароль user
sudo echo -e "password\npassword\n" | sudo passwd user
Меняем настройки для dhcp:
$ sudo nano /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto enp1s0
iface enp1s0 inet dhcp
#iface enp1s0 inet static
#address 192.168.0.43
#netmask 255.255.255.0
#gateway 192.168.0.1
#dns-nameservers 8.8.8.8
#auto enp1s0
Сохранить
Обратить внимание NetBIOS-имена компьютеров могут быть до 15 символов.
Soc-1c-test-239k не будет адресоваться по имени, нужно прописывать hosts на клиентах.
$ sudo nano /etc/hosts
127.0.0.1 localhost Soc-1c-test-239k
#192.168.0.43 test
#192.168.0.43 Soc-1c-test-239k
Сохранить.
$ sudo nano /etc/hostname
#test
Soc-1c-test-239k
Сохранить.
При замене hostname
Если задействована папка conf , почистить /home/usr1cv8/.1cv8/1C/1cv8/ вручную.
либо грохнуть целиком:
sudo /bin/su usr1cv8 -c "rm -rf /home/usr1cv8/.1cv8/1C/1cv8/*"
После гроханья
$ sudo service srv1cv83 stop
$ sudo service srv1cv83 start
$ ss -tlnp | grep :15
Посмотреть базы:
$ sudo /bin/su postgres -c "psql -l"
Грохнуть лишние:
$ sudo /bin/su postgres -c "dropdb demo"
$ sudo /bin/su postgres -c "dropdb zik"
$ sudo /bin/su postgres -c "dropdb demotest"
$ sudo /bin/su postgres -c "dropdb demotest1"
$ sudo /bin/su postgres -c "psql -l"
Создадим базу demo:
$ sudo /bin/su postgres -c "createdb --username postgres -T template0 demo"
Загрузим demo:
$ sudo /bin/su postgres -c "pg_restore -d demo /home/user/demo_2019-03-14_23-00-11.dump"
Размер базы demo
$ sudo su -c "psql -d demo -c \"select pg_size_pretty( pg_database_size('demo'))\"" postgres
Подключим базу demo:
Создадим базу zik:
$ sudo /bin/su postgres -c "createdb --username postgres -T template0 zik"
Загрузим zik:
$ sudo /bin/su postgres -c "pg_restore -d zik /home/user/zik_2019-03-14_23-00-11.dump"
Размер базы demo
$ sudo su -c "psql -d zik -c \"select pg_size_pretty( pg_database_size('zik'))\"" postgres
Подключим базу zik:
Остается настроить backup
Настраиваем:
Скрипт backup postgres 9.6 pg_probackup
$ nano /home/user/backup-pgpro.sh
Вставить текст ниже:
#!/bin/sh
#set -e
#sudo su - postgres
BACKUP_DIR='/backup'
COPY_DIR='/backup/copy'
LOG_DIR='/backup'
LOG_ERR_FILE='err.txt'
INSTANCE='main'
COPY_ID=''
FLAG_BACKUP=false
FLAG_VALIDATE=false
sudo /bin/su - postgres -c "rm -f $LOG_DIR/$LOG_ERR_FILE"
sudo /bin/su - postgres -c "rm -f $LOG_DIR/$LOG_ERR_FILE.rotation"
sudo /bin/su - postgres -c "rm -f $LOG_DIR/pg_probackup.log"
sudo /bin/su - postgres -c "rm -f $LOG_DIR/pg_probackup.log.rotation"
#if false ; then
if true ; then
sudo systemctl stop srv1cv83.service
# Создание полной автономной резервной копии:
echo "INFO: Начинаем создание полной автономной резервной копии!"
LOGINFO=`date +"%Y-%m-%d %H:%M:%S MSK: INFO: Начинаем создание полной автономной резервной копии!"`
sudo /bin/su postgres -c "echo $LOGINFO >> $LOG_DIR/pg_probackup.log"
sudo /bin/su postgres -c "pg_probackup-9.6 backup -B $BACKUP_DIR \
--instance $INSTANCE -b FULL --stream --compress \
--log-directory=$LOG_DIR \
--log-level-file='info' \
--error-log-filename=$LOG_ERR_FILE"
if [ ! -f $LOG_DIR/$LOG_ERR_FILE ]; then
FLAG_BACKUP=true
# нет файла
echo "INFO: Создание полной автономной резервной копии $COPY_ID успешно завершено!"
LOGINFO=`date +"%Y-%m-%d %H:%M:%S MSK: INFO: Создание полной автономной \
резервной копии $COPY_ID успешно завершено!"`
sudo /bin/su postgres -c "echo $LOGINFO >> $LOG_DIR/pg_probackup.log"
else
FLAG_BACKUP=false
# проверку не проводил
# не знаю как смоделировать
# ошибку
#echo "Файл существует!"
echo "закончилось неудачей!"
cat $LOG_DIR/$LOG_ERR_FILE
fi
sudo systemctl start srv1cv83.service
fi
if $FLAG_BAKUP ; then
# Поскольку мы не знаем идентификатор резервной копии
# возьмем последнюю копию, но ее нужно проверить
COPY_ID=$(sudo /bin/su postgres -c "ls /backup/backups/main -1 | tail -1")
#echo $COPY_ID
# без ошибки
#COPY_ID='PNJKHE'
# с ошибкой
#COPY_ID='PNKVZY'
#COPY_ID='PNMWOY'
# короткий
#COPY_ID='PNJKHE'
#sudo /bin/su - postgres -c "rm -f $LOG_DIR/$LOG_ERR_FILE"
#sudo /bin/su - postgres -c "rm -f $LOG_DIR/$LOG_ERR_FILE.rotation"
sudo /bin/su - postgres -c "pg_probackup-9.6 validate -B $BACKUP_DIR \
--instance $INSTANCE \
-i $COPY_ID \
--log-level-file='info' \
--log-directory=$LOG_DIR \
--error-log-filename=$LOG_ERR_FILE"
if [ ! -f $LOG_DIR/$LOG_ERR_FILE ]; then
#echo "Файл не существует!"
FLAG_VALIDATE=true
echo "INFO: Резервная копия $COPY_ID прошла валидацию!"
LOGINFO=`date +"%Y-%m-%d %H:%M:%S MSK: INFO: Резервная копия $COPY_ID прошла валидацию!"`
sudo /bin/su postgres -c "echo $LOGINFO >> $LOG_DIR/pg_probackup.log"
#DATA=`date +"%Y-%m-%d_%H-%M-%S"`
#sudo /bin/su postgres -c "tar -cvzf $COPY_DIR/pg_pro-$DATA.tar.gz \
# $BACKUP_DIR/backups/$INSTANCE/$COPY_ID \
# -C $BACKUP_DIR/backups/$INSTANCE"
else
#echo "Файл существует!"
cat $LOG_DIR/$LOG_ERR_FILE
echo "INFO: Резервная копия $COPY_ID не прошла валидацию удаляем!"
LOGINFO=`date +"%Y-%m-%d %H:%M:%S MSK: INFO: Резервная копия $COPY_ID не прошла валидацию удаляем!"`
sudo /bin/su postgres -c "echo $LOGINFO >> $LOG_DIR/pg_probackup.log"
sudo /bin/su postgres -c "pg_probackup-9.6 delete -B $BACKUP_DIR \
--instance $INSTANCE \
-i $COPY_ID \
--log-directory=$LOG_DIR \
--log-level-file='info' \
--error-log-filename=$LOG_ERR_FILE"
FLAG_VALIDATE=false
fi
fi
#с полными путями
#if $FLAG_VALIDATE ; then
# DATA=`date +"%Y-%m-%d_%H-%M-%S"`
# sudo /bin/su postgres -c "cd $BACKUP_DIR/backups/$INSTANCE; \
# tar -cvzf $COPY_DIR/pg_pro-$DATA.tar.gz \
# $BACKUP_DIR/backups/$INSTANCE/$COPY_ID"
#fi
if $FLAG_VALIDATE ; then
DATA=`date +"%Y-%m-%d_%H-%M-%S"`
sudo /bin/su postgres -c "cd $BACKUP_DIR/backups/$INSTANCE; \
tar -cvzf $COPY_DIR/pg_pro-$DATA.tar.gz $COPY_ID > /dev/null"
echo "INFO: Создан файл $COPY_DIR/pg_pro-$DATA.tar.gz"
LOGINFO=`date +"%Y-%m-%d %H:%M:%S MSK: INFO: Создан файл $COPY_DIR/pg_pro-$DATA.tar.gz"`
sudo /bin/su postgres -c "echo $LOGINFO >> $LOG_DIR/pg_probackup.log"
fi
echo "Очистить каталог резервных копий в соответствии с политикой их сохранения"
echo "INFO: Очищаем каталог резервных копий в соответствии с политикой их сохранения"
LOGINFO=`date +"%Y-%m-%d %H:%M:%S MSK: INFO: Очищаем каталог резервных копий в соответствии с политикой их сохранения"`
sudo /bin/su postgres -c "pg_probackup-9.6 delete -B $BACKUP_DIR \
--instance $INSTANCE --expired \
--log-directory=$LOG_DIR \
--log-level-file='info' \
--error-log-filename=$LOG_ERR_FILE"
DAY=90 #(или ваше число дней)
sudo su -c "find /backup/copy -type f -mtime +$DAY -exec rm -f {} \;"
# full vacuum
#if false ; then
if true ; then
echo "INFO: Начинаем full vacuum"
LOGINFO=`date +"%Y-%m-%d %H:%M:%S MSK: INFO: Начинаем full vacuum"`
sudo /bin/su postgres -c "echo $LOGINFO >> $LOG_DIR/pg_probackup.log"
sudo /bin/su postgres -c "/usr/bin/vacuumdb -zfa >> $LOG_DIR/pg_probackup.log"
fi
LOGINFO=`date +"%Y-%m-%d %H:%M:%S MSK: INFO: Завершение работы"`
sudo /bin/su postgres -c "echo $LOGINFO >> $LOG_DIR/pg_probackup.log"
sudo /bin/su postgres -c "echo 'backup-pgpro' | mutt -s 'backup-pgpro' f1@vt.com -a $LOG_DIR/pg_probackup.log"
Сохранить.
Однократный запуск
$ time sudo sh backup-pgpro.sh
Запуск по расписанию:
$ sudo -i
# crontab -e
Добавить в конец (сработает в 22:40):
# каждые день в 22.40
40 22 * * * sh /home/user/backup-pgpro.sh Сохранить.
Смотреть задания:
# crontab -l
Настраиваем:
Скрипт бэкапа postgres pg_dump
$ nano backup-sql.sh
Вставить текст ниже:
#!/bin/sh
# crontab -e
# mkdir -p /home/user/backup/yandex
set -e
BACKUP_DIR="/backup/copy"
DIR_YANDEX="/home/user/backup/yandex"
echo "====================================================================" > $BACKUP_DIR/backup.log
# останавливаем сервер 1С
echo "останавливаем сервер 1С"
sudo systemctl stop srv1cv83.service
echo "состояние сервера 1С" >> $BACKUP_DIR/backup.log
sudo systemctl status srv1cv83.service | grep 'Active:' >> $BACKUP_DIR/backup.log
echo "--------------------------------------------------------------------" >> $BACKUP_DIR/backup.log
# Устанавливаем дату
DATA=`date +"%Y-%m-%d_%H-%M-%S"`
DATA_NAME=`date +"%Y-%m-%d_%H-%M-%S"`
echo "$DATA Size database file: " >> $BACKUP_DIR/backup.log
sudo du -h -s /var/lib/postgresql/9.6/main/base >> $BACKUP_DIR/backup.log
echo "--------------------------------------------------------------------" >> $BACKUP_DIR/backup.log
# делаем backup
DB_BASE=`sudo /bin/su postgres -c "/usr/bin/psql -qAt -c 'SELECT * FROM pg_database;'" | \
cut -d"|" -f1 | /bin/grep -v template | /bin/grep -v postgres`
#DB_BASE="demo test" #конкретные базы
#DB_BASE="" #пропустить
echo $DB_BASE
for DB_NAME in $DB_BASE
do
DATA=`date +"%Y-%m-%d_%H-%M-%S"`
# Записываем информацию в лог с секундами
echo "$DATA Начало backup базы ${DB_NAME}" >> $BACKUP_DIR/backup.log
# Бэкапим базу данных demo и сразу сжимаем
echo "$DATA Начало backup базы ${DB_NAME}"
sudo /bin/su postgres -c "pg_dump -Fc ${DB_NAME}" > $BACKUP_DIR/${DB_NAME}_$DATA_NAME.dump
DATA=`date +"%Y-%m-%d_%H-%M-%S"`
if [ $? -ne 0 ]
then
echo "$DATA Ошибка завершения backup для базы ${DB_NAME}"
echo "$DATA Ошибка завершения backup для для базы ${DB_NAME}" >> $BACKUP_DIR/backup.log
exit
else
echo "$DATA Успешное завершение backup для базы ${DB_NAME}"
echo "$DATA Успешное завершение backup для базы ${DB_NAME}" >> $BACKUP_DIR/backup.log
fi
echo "--------------------------------------------------------------------" >> $BACKUP_DIR/backup.log
done
# запускаем сервер 1С
echo "Запускаем сервер 1С"
sudo systemctl start srv1cv83.service
echo "Состояние сервера 1С" >> $BACKUP_DIR/backup.log
sudo systemctl status srv1cv83.service | grep 'Active:' >> $BACKUP_DIR/backup.log
echo "--------------------------------------------------------------------" >> $BACKUP_DIR/backup.log
echo "Закончено"
# посылаем сообщение
sleep 2
#echo "backup" | mutt -s "backup" f1@vt.com -a $BACKUP_DIR/backup.log
Сохранить.
Однократный запуск:
$ sudo sh backup-sql.sh
Запуск по расписанию:
$ sudo -i
# crontab -e
Добавить в конец (сработает в 23:20):
# каждые день в 23.20
20 23 * * * sh /home/user/backup-sql.sh Сохранить.
Смотреть задания:
# crontab -l
Сохранение резервных копий на backup сервере:
Сброс пароля в 1с (MSSQL/PostgreSQL)
$ nano backup1с.sh
Вставить текст ниже:
#!/bin/bash
rsync --recursive -v --ignore-existing /backup/copy backup@172.31.2.1::soc_1c date
Сохранить.
Комментариев нет:
Отправить комментарий