Kopia zapasowa i odtworzenie systemu eDokumenty (DRAFT)

Domyślne skrypty umieszczone są w lokalizacji /etc/cron.daily/backup_db. Przykładowe skrypty znajdują się pod poniższym linkiem. Zrzuty bazy są wykonywane do katalogu /mnt/backup/<DZIEŃ_TYGODNIA>/edokumenty.sql.gz poniższym poleceniem:

# 1 opcja - w kastomowym formacie postgresa
su - postgres -c "pg_dump -O -Fc -Z9 edokumenty" > edokumenty.dump

# 2 opcja - w formacie SQL (z kompresją gzip)
su - postgres -c "pg_dump -c edokumenty -f ${DST}/edokumenty.sql"
gzip -f ${DST}/edokumenty.sql

Ręcznie zrzut bazy wykonujemy poleceniem:

pg_dump -U postgres -f edokumenty.sql edokumenty

gdzie -f edokumenty.sql to nazwa pliku bazy danych a następne edokumenty to nazwa bazy danych z której wykonujemy zrzut.

Do odtworzenia systemu w nowej lokalizacji jeśli chcemy odtworzyć całość będziemy potrzebowali zawartości całego katalogu /home/edokumenty/ ze wszystkimi pod katalogami. Do testowego odtworzenia bazy wystarczy nam tylko public_html znajdujący się w powyższej lokalizacji. Spakowanie folderu public_html wykonujemy następującym poleceniem. Polecenie zawiera wykluczenie dla folderu plików tymczasowych, te nie będą nam potrzebne. Zalecane jest czyszczenie folderu plików tymczasowych.

#przechodzimy do katalogu użytkownika
su - edokumenty

#tworzymy archiwum (bez zawartości katalogu tmp)
tar -cvzf plik_archiwum.tar.gz --exclude 'public_html/apps/edokumenty/var/tmp/*' public_html

Odtwarzanie będzie zatem wymagało procedury zależnej od formatu:

#1 - dla formatu kastom (można również przez PgAdmin)
pg_restore -F c --dbname=edokumenty -U postgres edokumenty.backup

#2 - dla formatu sql
gzip -d edokumenty.sql.gz
psql -U edokumenty -f edokumenty.sql edokumenty

Procedura odtworzenia systemu

Należy wykonywać testowo co przynajmniej rok, w celu weryfikacji. Początkowe etapy zależne od infrastruktury. Procedura zakłada że nośnikiem jest dysk USB widoczny w systemie jako /dev/sdb1

  • Montaż nowej maszyny
  • Instalacja systemu operacyjnego (może być z kopii ghostem)

1. Podmontowanie nośnika z kopią zapasową

mount /dev/sdb1 /mnt/usbdisk

2. Przywrócenie konfiguracji systemu

Kopiujemy wszystkie pliki z katalogu system na system plików: Zawartość /mnt/usbdisk/system/ do głównego systemu plików.

Odtwarzamy środowisko bazy danych.

# Tworzenie użytkowników bazy danych (wszyscy z opcjami N)
sudo -u postgres createuser --no-superuser --no-createdb --no-createrole http
sudo -u postgres createuser --no-superuser --no-createdb --no-createrole edokumenty

# Tworzenie baz danych
sudo -u postgres createdb -E UTF8 edokumenty -O edokumenty
sudo -u postgres createlang -d edokumenty plpgsql

Restart usług postgres, apache.

3. Odtworzenie aplikacji eDokumenty

Kod źródłowy oraz pliki konfiguracyjne są już odtworzone - skopiowane zostały z katalogu system. Pozostaje odtworzyć pliki załączników oraz bazę danych:

3.1 Odtworzenie plików

cp -rp /mnt/usbdisk/files /home/edokumenty/

3.2 Odtworzenie bazy danych

Przechodzimy do katalogu z ostatnią kopią

cd /mnt/usbdisk/db/3
gzip -d edokumenty.sql.gz
sudo -u postgres psql -U postgres -f edokumenty.sql edokumenty

3.3 Przywrócenie repozytorium

#cp /backup/repos.dump /home/edokumenty/repos.dump
#chown www-data /home/edokumenty/repos.dump
#su - www-data
$cd /home/edokumenty
$svnadmin create repos  #(jeśli nie zostało założone - czyli brak katalogu repos)
$svnadmin load --force-uuid repos < repos.dump

Dodatkowe informacje

Dla długotrwałych czynności, aby nie blokować konsoli i uniknąć rozłączenia należy użyć polecenia screen, które pozwala utworzyć niezależny terminal.

#screen 
#su - www-data
$svnadmin load ... (lub inne długo wykonywalne polecenia)
$importowanie ...
$plik 1
$plik 2

Ctrl-A D
[Detached] 

W czasie wyświetlania dowolnych komunikatów można użyć sekwencji sterujących: Ctrl-A D (Wcisnąć Control-A, puścić a następnie nacisnąć klawisz D), wyświetlony zostanie komunikat [Detached]. Następnie można zamknąć konsolę główną (np. konsole, putty) bez obawy o przerwanie procesu.

Jeżeli chcemy skontrolować proces wówczas w dowolnej innej sesji można użyć polecenia screen -r (ewentualnie screen -ls i screen -r id.host, jeżeli mamy kilka sesji screen)

Komendy dla WIN

Aby stworzyć kopię bazy należy wpisać w konsoli

 pg_dump -U postgres -f NazwaPliku.sql NazwaBazyZapisywanej

Aby kopię bazy odtworzyć należy wpisać w konsoli

  
 psql -U postgres -f NazwaPliku.sql NazwaBazyWktórąOdtwarzamy