Narzędzia użytkownika

Narzędzia witryny


wiki:backup

Spis treści

Backup

Różne pomysły i zapiski.

Borg

Scenariusz kopii zapasowych opartych o borgbackup:

  • SRVA posiada przestrzeń na kopie zapasowe
  • SRVB ma ważne pliki, które trzeba kopiować

Serwer SRVA posiada dysk na kopie zapasowe:

sdb               8:16   0  600G  0 disk 
└─data-backup   253:2    0  550G  0 lvm  /mnt/data/backup

Oraz użytkownika zapas:

zapas:x:1501:1501::/mnt/data/backup/zapas:/bin/bash

Jako użytkownik zapas przygotowano przestrzeń na kopie zapasowe na serwerze SRVA:

mkdir -p pliki/srvb
cd pliki/srvb
borg init --encryption none .

Na serwerze SRVB przygotowano klucze SSH dla użytkownika root:

ssh-keygen

ze wszystkimi domyślnymi opcjami. Następnie skopiowano zawartość pliku /root/.ssh/id_rsa.pub z serwera SRVB do pliku /mnt/data/backup/zapas/.ssh/authorized_keys na serwerze SRVA.

Potwierdzono możliwość logowania z serwera SRVB na serwer SRVA:

ssh zapas@SRVA

Wykonanie kopii zapasowych na serwerze SRVB:

borg create ssh://zapas@SRVA:22/mnt/data/backup/zapas/pliki/srvb::{fqdn}-etc-{now} /etc
borg create ssh://zapas@SRVA:22/mnt/data/backup/zapas/pliki/srvb::{fqdn}-www-{now} /var/www

W katalogu srvb na serwerze SRBA pojawi się kilka plików:

$ tree srvb/
srvb/
├── config
├── data
│   └── 0
│       ├── 0
│       ├── 1
│       ├── 2
│       ├── 3
│       ├── 4
│       ├── 5
│       ├── 6
│       ├── 7
│       ├── 8
│       └── 9
├── hints.9
├── index.9
├── integrity.9
└── README

Katalogów numerycznych będzie z czasem przybywać.

Każde następne utworzenie backupu na serwerze SRVA będzie traktowane jako przyrostowe. Można to sprawdzić na serwerze SRVB listując backupy:

borg list ssh://zapas@SRVA:22/mnt/data/backup/zapas/pliki/srbv
SRVB-etc-2022-09-10T13:57:47 Sat, 2022-09-10 13:57:49 [3d72c22d8d1a6d27e1556854c3065261cfc12cc2acd5fd2a052c4fccf173a57b]
SRVB-www-2022-09-10T13:58:26 Sat, 2022-09-10 13:58:27 [95bc01266ef2a75a44ecdb2428239a2ab96a349ae584f0313f5196a70bb053ed]
SRVB-etc-2022-09-15T04:22:11 Thu, 2022-09-15 04:22:11 [f7ecc4fd1b440c4046ed3fd9c25bdc9ade83b437989cf8fd421e930fae41a2be]
SRVB-www-2022-09-15T04:22:18 Thu, 2022-09-15 04:22:18 [3254377dd11ff0e100041715205e00faf36b3da47a7670456d0b46b4bdbea3a1]

oraz porównując ich zawartość:

borg diff ssh://zapas@SRVA:22/mnt/data/backup/zapas/pliki/srbv::SRVB-etc-2022-09-10T13:57:47 SRVB-etc-2022-09-15T04:22:11

Odzyskiwanie kopii zapasowych

Na serwerze SRVB utworzono punkt montowania:

mkdir /root/restore

oraz zamontowano zdalne repozytorium borga:

borg mount ssh://zapas@SRVA:22/mnt/data/backup/zapas/pliki/srvb /root/restore/

Można przeglądać ten katalog jak każdy inny oraz kopiować z niego pliki.

borgfs on /root/restore type fuse (ro,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions)

Po zakończeniu prac z odzyskiwaniem plików można odmontować repozytorium:

borg umount /root/restore/

Możliwe problemy

  • Podczas przeglądania zawartości kopii zapasowej w katalogu z repozytorium tworzony jest plik w formacie json o nazwie lock.roster. Jeżeli nie zostanie usunięty, kolejne kopie zapasowe nie będą wykonywane. Należy go wówczas ręcznie usunąć, lub zmienić jego nazwę.

Monitorowanie Borga

Skrypty do monitorowania Borga za pomocą nrpe i Nagoisa:

#!/usr/bin/bash

repo=$1
wynik=`borg check -v -p /mnt/data/backup/zapas/pliki/${repo} &> /mnt/data/backup/zapas/stan/${repo}`
chmod 644 /mnt/data/backup/zapas/stan/${repo}
#!/usr/bin/bash

if [[ `find /mnt/data/backup/zapas/ -type f -name lock.roster` ]] ;
then
  echo 'CRITICAL lock exists'
  exit 2
else
  echo 'OK no lock file'
  exit 0
fi
#!/usr/bin/bash

repo=$1
if [[ `cat /mnt/data/backup/zapas/stan/${repo}` == *'Archive consistency check complete, no problems found.'* ]] ; then
  echo "OK backup ${repo}"
  exit 0
else
  echo "CRITICAL backup ${repo} not consistent"
  exit 2
fi

Wykluczanie katalogów

Wykluczanie katalogów updater, na przykładzie katalogu z plikami aplikacji Nextcloud:

borg create ssh://zapas@SRVA:22/mnt/data/backup/zapas/pliki/srvb::{fqdn}-www-{now} /var/www --exclude /var/www/nextcloud/public_html/data/updater-*

Wykluczanie katalogów technicznych aplikacji znacznie zmniejsza poszczególne kopie przyrostowe.

MariaDB

Najprostszy zrzut bazy MariaDB:

mysqldump bazadanych | bzip2 > bazadanych-$(date +%F).db.bz2

Skrypty do sprawdzenia kopii baz danych dla nrpe i Nagiosa:

#!/usr/bin/bash

baza=$1

if [[ -e /mnt/data/backup/zapas/bazydanych/${baza}-$(date +%F).db.bz2 ]] ; then
  echo "OK backup bazy ${baza}" ;
  exit 0
else
  echo "CRITICAL backup bazy ${baza} nie istnieje"
  exit 1
fi
#!/usr/bin/bash

baza=$1
size=$2

if [[ `du /mnt/data/backup/zapas/bazydanych/${baza}-$(date +%F).db.bz2 | cut -d$'\t' -f1` -ge ${size} ]] ; then
  echo "OK backup bazy ${baza}" ;
  exit 0
else
  echo "CRITICAL backup bazy ${baza} jest za maly"
  exit 1
fi
wiki/backup.txt · ostatnio zmienione: 2022/10/04 13:20 przez lukasz

Wszystkie treści w tym wiki, którym nie przyporządkowano licencji, podlegają licencji: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki