среда, 16 октября 2019 г.

Холодный backup

Холодный backup кластера postgresql
Резервное копирование системы

Сделаем холодный backup кластера main:

$ sudo pg_ctlcluster 9.6 main stop
$ sudo sudo systemctl status postgresql@9.6-main.service 
$ sudo pg_ctlcluster 9.6 beta stop
$ sudo sudo systemctl status postgresql@9.6-beta.service

$ sudo /bin/su postgres -c "rm -rf /var/lib/postgresql/9.6/beta/*"

$ sudo su - postgres
$ cd /var/lib/postgresql/9.6/main
$  cp -R * /var/lib/postgresql/9.6/beta
$ exit
$ sudo pg_ctlcluster 9.6 main start
$ sudo sudo systemctl status postgresql@9.6-main.service 
$ sudo pg_ctlcluster 9.6 beta start
$ sudo sudo systemctl status postgresql@9.6-beta.service

$ sudo pg_ctlcluster 9.6 main stop
$ time sudo /bin/su postgres -c "tar -cvzf  /var/lib/postgresql/base-$(date +%Y-%m-%d_%H-%M-%S).tar.gz -C /var/lib/postgresql/9.6/main ."
$ sudo pg_ctlcluster 9.6 main start


$ sudo pg_ctlcluster 9.6 beta stop
$ sudo sudo systemctl status postgresql@9.6-beta.service
$ sudo /bin/su postgres -c "rm -rf /var/lib/postgresql/9.6/beta/*"
$ sudo -u postgres tar -xvC /var/lib/postgresql/9.6/beta -f /var/lib/postgresql/base-2019-02-13_18-15-11.tar.gz
$ sudo pg_ctlcluster 9.6 beta start
$ sudo sudo systemctl status postgresql@9.6-beta.service



$ sudo pg_ctlcluster 9.6 main stop
$ sudo su postgres -c "tar -cvzf  /var/lib/postgresql/base-$(date +%Y-%m-%d_%H-%M-%S).tar.gz -C /var/lib/postgresql/9.6/main ."
$ sudo pg_ctlcluster 9.6 main start

$ sudo  mkdir -p /backup/main
$ sudo chown -R postgres:postgres /backup/main

$ nano backup_main.sh

#!/bin/sh -e
PG=9.6
CLASTER=main
#должна быть папка:
DIR=/backup/$CLASTER
#должны быть права
#sudo chown -R postgres:postgres /backup/main
DATEST=`date +"%Y-%m-%d %H-%M-%S"`
sudo su postgres -c "echo '$DATEST ---------------------------------' >> $DIR/$CLASTER.log"
DATA=`date +"%Y-%m-%d_%H-%M-%S"`
sudo pg_ctlcluster $PG $CLASTER stop
sudo su postgres -c "tar -cvzf  $DIR/$CLASTER-$DATA.tar.gz \
     -C /var/lib/postgresql/$PG/$CLASTER . > /dev/null 2>&1"
if [ $? -ne 0 ]
then
     echo "$CLASTER-$DATA.tar.gz неудачное завершение"
     sudo su postgres -c "echo '$CLASTER-$DATA.tar.gz неудачное завершение' >>  \
          $DIR/$CLASTER.log"
else
     echo "$CLASTER-$DATA.tar.gz удачное завершение"
     sudo su postgres -c "echo '$CLASTER-$DATA.tar.gz удачное завершение' >>  \
          $DIR/$CLASTER.log"
fi
DATEEND=`date +"%Y-%m-%d %H-%M-%S"`
sudo su postgres -c "echo '$DATEEND ---------------------------------' >> $DIR/$CLASTER.log"
sudo su postgres -c "echo '-----------------------------------------------------' >> $DIR/$CLASTER.log"
sudo pg_ctlcluster $PG $CLASTER start

Сохранить.

$ time sh backup_main.sh

Восстановление

$ sudo su postgres -c "ls /backup/main"
main-2019-10-17_18-03-23.tar.gz  main.log

$ sudo pg_ctlcluster 9.6 main stop
$ sudo su postgres -c "rm -rf /var/lib/postgresql/9.6/main/*"
$ time sudo su postgres -c "tar xvzf  /backup/main/main-2019-10-17_18-03-23.tar.gz -C /var/lib/postgresql/9.6/main/"
$ sudo pg_ctlcluster 9.6 main start

Комментариев нет:

Отправить комментарий