Холодный 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
Резервное копирование системы
Сделаем холодный 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
Комментариев нет:
Отправить комментарий