Skip to end of metadata
Go to start of metadata

 

Instrukcja opisująca proces zakładania konta oraz magazynu dla danych, a następnie konfigurowania skryptów do backupowania systemu PlusWorkflow w środowisku Azure

 

1. Logujemy się na konto Azure w terminalu wpisując docker login nazwa_serwera_logowania którą możemy znaleźć w utworzonym rejestrze kontenerów w zakładce Przegląd. Nazwe użytkownik oraz hasło znajdziemy w zakładce Klucze dostępu.

 

2. Tworzymy Wystąpienia kontenerów wraz z Kontem magazynu, w tym celu użyjemy paru komend które musimy zmodyfikować zgodnie z naszym Azure. Parametr wskazujący grupę zasobów należy edytować według własnej nazwy zasobów

 

Parametry
ACI_PERS_RESOURCE_GROUP=Suncode
ACI_PERS_STORAGE_ACCOUNT_NAME=storage$RANDOM
ACI_PERS_LOCATION=westeurope
ACI_PERS_SHARE_NAME=suncodedockerstorage

 

 

Wszystkie te parametry należy skopiowac i wkleić do terminala, a następnie wywołać komende

Tworzenie konta
az storage account create \
   --resource-group $ACI_PERS_RESOURCE_GROUP \
   --name $ACI_PERS_STORAGE_ACCOUNT_NAME \
   --location $ACI_PERS_LOCATION \
   --sku Standard_LRS

następnie

Tworzenie magazynu danych
az storage share create \
  --name $ACI_PERS_SHARE_NAME \
  --account-name $ACI_PERS_STORAGE_ACCOUNT_NAME

 

3. Na stronie Azure możemy zweryfikować utworzenie konta magazynu

4. Na maszynie która chcemy backupować niezbędne jest zainstalowanie komponentów, w tym celu posłuży skrypt który należy pobrać/skopiować na maszynę do nowo stworzonego folderu w którym będziemy przechowywać resztę skryptów. Należy wprowadzić komendę sudo chmod +x install-dependencies.sh, a następnie uruchomić skrypt sudo ./install-dependencies.sh

install-dependencies.sh
apt install python-pip python-dev libffi-dev libssl-dev libxml2-dev libxslt1-dev libjpeg8-dev zlib1g-dev
# Install dependencies
add-apt-repository ppa:duplicity-team/ppa
apt-get update -y
apt-get install duplicity pigz -y
apt-get install python-pip -y
pip install azure==1.0.3 azure-common==1.1.4 azure-mgmt==0.20.2 azure-mgmt-common==0.20.0 azure-mgmt-compute==0.20.1 azure-mgmt-network==0.20.1 azure-mgmt-nspkg==1.0.0 azure-mgmt-resource==0.20.1 azure-mgmt-storage==0.20.0 azure-nspkg==1.0.0 azure-servicebus==0.20.1 azure-servicemanagement-legacy==0.20.2 azure-storage==0.20.3 

5. Tworzymy i uzupełniamy plik konfiguracyjny  ev-backup.config

ev-backup.config
export BAK_SOURCE_FOLDER=/ext_backup/prodsrv //folder ktory chcemy backupować 
export AZURE_CONTAINER=suncodedockerstorage  //parametr ACI_PERS_SHARE_NAME
export AZURE_ACCOUNT_NAME=parametr z punktu 2 ACI_PERS_STORAGE_ACCOUNT_NAME lub w utworzonym koncie magazynu w zakładce Klucz Dostępu
export AZURE_ACCOUNT_KEY= Klucz znajdziemy w utworzonym koncie magazynu w zakładce Klucz Dostępu, jest tam też podana nazwa konta
export PASSPHRASE=Suncode$2020 //duplicityEncryptionKey
export EV_BAK_LOG_FILE=$BAK_SOURCE_FOLDER/ev_backup_log_$(date +"%F").log
export DB_NAME=plusworkflow
export DB_USER=postgres
export DB_HOST=localhost
export DB_BIN_DIR=/usr/lib/postgresql/10/bin  //scieżka do postgresa
export NUM_DAYS_TO_KEEP=7D
export PGPASSWORD="postgres" 

6. Tworzymy skrypty do backupów i każdemu nadajemy uprawnienia sudo chmod +x nazwa_skryptu

ev-backup.sh
#!/bin/bash

########################################
# Backup Script                        #
########################################

BASEDIR=$(dirname "$0")
## Initialize config parameters ##
. $BASEDIR/ev-backup.config
echo "Backing up from $BAK_SOURCE_FOLDER" >>$EV_BAK_LOG_FILE 2>&1

## Do a Postgresql dump ##
. $BASEDIR/postgre-dump.sh

# Check to see if we're at the first of the month.
# If we are on the 1st day of the month, then run
# a full backup.  If not, then run an incremental
# backup.
date==`date '+%d'`
#echo "Date is $date"
#if [[ $date = 06 ]];
#then
    echo "Running Full backup: duplicity --full-if-older-than $NUM_DAYS_TO_KEEP $BAK_SOURCE_FOLDER azure://$AZURE_CONTAINER" >>$EV_BAK_LOG_FILE 2>&1
    duplicity --full-if-older-than $NUM_DAYS_TO_KEEP $BAK_SOURCE_FOLDER azure://$AZURE_CONTAINER >>$EV_BAK_LOG_FILE 2>&1
#else
#    echo "Running Incremental backup: duplicity $BAK_SOURCE_FOLDER azure://$AZURE_CONTAINER" >>$EV_BAK_LOG_FILE 2>&1
#    duplicity $BAK_SOURCE_FOLDER azure://$AZURE_CONTAINER >>$EV_BAK_LOG_FILE 2>&1
#fi

## Remove backups older than $NUM_DAYS_TO_KEEP Days ##
echo "Running duplicity remove-older-than $NUM_DAYS_TO_KEEP --force azure://$AZURE_CONTAINER" >>$EV_BAK_LOG_FILE 2>&1
duplicity remove-older-than $NUM_DAYS_TO_KEEP --force azure://$AZURE_CONTAINER >>$EV_BAK_LOG_FILE 2>&1


# Unset environment variables used by backup script
unset BAK_SOURCE_FOLDER
unset AZURE_CONTAINER
unset AZURE_ACCOUNT_NAME
unset AZURE_ACCOUNT_KEY
unset PASSPHRASE
unset EV_BAK_LOG_FILE
unset PGPASSWORD

 

 

ev-list-backups.sh
BASEDIR=$(dirname "$0")
. $BASEDIR/ev-backup.config
duplicity collection-status azure://$AZURE_CONTAINER

 

 

ev-restore.sh
. /scieżka do pliku ev_backup.config/ev-backup.config
duplicity azure://$AZURE_CONTAINER $BAK_SOURCE_FOLDER/restore

 

 

postgres-dump.sh
bak_folder=$BAK_SOURCE_FOLDER/ev_sql_backup
mkdir $bak_folder

#Dump DB to SQL File:
$DB_BIN_DIR/pg_dump $DB_NAME -U $DB_USER -h $DB_HOST --no-password > $bak_folder/$DB_NAME-backup.sql 

#zip the backup
pigz --best -f $bak_folder/$DB_NAME-backup.sql

7. Pierwsze uruchomienie skryptu backupującego, należy uruchomić ev-backup.sh, skrypt wykona backup danych oraz sam wywoła wcześniej stworzony skrypt do backupu bazy danych

8. Poprawność wykonywania backupy możemy zweryfikować na portalu Azure, po paru minutach powinniśmy widze przesyłane pliki w naszym koncie magazynu, zakładce Eksplorator usługi Strorage

9. Po skończonym backupie lub w przypadku błedu w lokalziacji zdefiniowanej w ev-backup.config w parametrze BAK_SOURCE_FOLDER powinien utworzyć się plik z logami

10. Liste backupów,a w tym date ostatniego pełnego backupu możemy rownież sprawdzić wywołując skrypt ev-list-backups.sh, pownien zwrócić wartosć podobną do:

11. Jeśli wszystko przebiegło pomyślnie to możemy zautomatyzowac procec backupów dodając skrypt ev-backup.sh do crontab, poleceniem sudo crontab -e, dodając now wpis np.

5 0 * * * /bin/bash /home/amilewski/ev-backup.sh

to ustawienie spowoduje wykonywanie backupu codziennie o 00:05

12. Jeśli chcemy przywrócić backupowane dane należy użyć skryptu ev-restore.sh, dane zostaną przywrócone do lokalizacji BAK_SOURCE_FOLDER zdefiniowanej w ev-backup.config do folderu restore. WAŻNE należy sprawdzić czy w danej lokalizacji BAK_SOURCE_FOLDER/restore istnieje folder restore, jeśli nie to należy przejść do niej i stworzyć folder restore komendą sudo mkdir restore

 

 

 

  • No labels