1. Instalează
Instalează autorestic de aici: https://autorestic.vercel.app/installation
În tutorialul ăsta folosim următoarea structură de fișiere: /root/backup
pentru parole și configurația autorestic, un folder data
înauntru unde se salvează backup-urile efective (restic repository), și folderul database unde se salvează temporar exportul din baza de date.
1mkdir /root/backup
2mkdir /root/backup/data
3mkdir /root/backup/database
4cd /root/backup
2. Fisier env pentru parole
Creează fisierul environment nano .autorestic.env
și completează datele de access la baza de date:
1AUTORESTIC_LOCAL_RESTIC_PASSWORD=
2
3AUTORESTIC_PROD_DB_MYSQL_HOST=localhost
4AUTORESTIC_PROD_DB_MYSQL_PORT=3306
5AUTORESTIC_PROD_DB_MYSQL_DATABASE=
6AUTORESTIC_PROD_DB_MYSQL_USER=
7AUTORESTIC_PROD_DB_MYSQL_PASS=
Completează la AUTORESTIC_LOCAL_RESTIC_PASSWORD
o cheie/parolă random generată. Cu parola asta o să fie encriptate toate backup-urile. Salvează această cheie în alt loc (password manager sau în alt fișier undeva sigur).
3. Script pentru MySQL backup
Creeaza scriptul bash pentru backup MySQL: nano backup-db-hook.sh
1#!/usr/bin/bash
2BACKUP_PATH=./database
3mkdir $BACKUP_PATH
4
5export $(cat .autorestic.env | xargs)
6MYSQL="$(which mysql)"
7MYSQLDUMP="$(which mysqldump)"
8GZIP="$(which gzip)"
9MYSQL_PERMS=" --protocol tcp "
10MYSQL_PERMS+=" -h $(echo $AUTORESTIC_PROD_DB_MYSQL_HOST) "
11MYSQL_PERMS+=" -P $(echo $AUTORESTIC_PROD_DB_MYSQL_PORT) "
12MYSQL_PERMS+=" -u $(echo $AUTORESTIC_PROD_DB_MYSQL_USER) "
13DB="$AUTORESTIC_PROD_DB_MYSQL_DATABASE"
14export MYSQL_PWD="$AUTORESTIC_PROD_DB_MYSQL_PASS"
15DUMP_OPTIONS="--single-transaction --no-tablespaces"
16
17echo "$(date +"%d-%m-%Y %H:%M:%S") Backing up $DB to $BACKUP_PATH"
18TABLES="$($MYSQL $MYSQL_PERMS $DB -Bse 'SHOW TABLES FROM '$DB)"
19for TABLE in $TABLES ; do
20 echo "$(date +"%d-%m-%Y %H:%M:%S") Backing up $TABLE"
21 FILE="$BACKUP_PATH/${TABLE}.sql.gz"
22 $MYSQLDUMP $MYSQL_PERMS $DUMP_OPTIONS $DB $TABLE | $GZIP -9 > $FILE
23done
24echo "$(date +"%d-%m-%Y %H:%M:%S") ...done!"
(script de backup în fișiere separate pentru tabele copiat de la jeremyharris/backup.sh )
4. Configurație Autorestic
Creează fișierul config pentru autorestic: nano auto.yml
1version: 2
2
3backends:
4 local:
5 type: local
6 path: /root/backup/data # aici se salveaza backup-urile in sine
7
8global:
9 forget:
10 keep-daily: 7
11 keep-weekly: 4
12
13locations:
14 prod:
15 from: /var/www/html # calea catre fisierele site
16 to: local
17 cron: '0 1 * * *' # backup fisiere la ora 01:00
18 forget: "yes" # sau "prune". Optiunea "Yes" trebuie să fie în ghilimele, altfel este boolean
19 options:
20 backup:
21 exclude:
22 - 'vendor'
23
24 prod-db:
25 from: /root/backup/database/
26 to: local
27 cron: '0 0 * * *' # backup baza de date la ora 00:00
28 forget: "yes"
29 hooks:
30 before:
31 - bash backup-db-hook.sh
Notă: Numele backend-ului trebuie să fie la fel ca în numele cheii din env: (cum e
EXAMPLE
)
AUTORESTIC_EXAMPLE
_RESTIC_PASSWORD=
backends:
example
:
type: local
5. Inițializează folderul cu comanda
1autorestic -c auto.yml -v check
Comanda asta validează configurația și inițiază un nou repository in folderul destinație.
6. Cron Job
Adaugă cron job ca să facă automat backup și purge. Autorestic recomandă cron jobul să fie setat la 5 minute.
crontab -e
1*/5 * * * * cd /root/backup; /usr/local/bin/autorestic -c /root/backup/auto.yml --ci cron --lean
Note:
- Salvează cheia (
RESTIC_PASSWORD
din env) undeva extern, în afara serverului, într-un password manager sau ceva similar. Dacă pierzi cheia backup-urile sunt inutile, nu le poți decripta. - Ca să vezi lista de backup-uri intră în folderul
/root/backup
și scrie comandaautorestic exec -av snapshots
1## lista backup-urilor
2autorestic -c auto.yml exec -av snapshots
3
4## alege un snapshot id, afișează toate fișierele din acesta
5autorestic -c auto.yml exec -av -- ls --long 041c88da
6
7## acum poți alege să restaurezi doar un fișier, de exemplu, in folderul ./restore/
8autorestic -c auto.yml exec -av -- restore --target=./restore/ --include=/root/backup/database/example.sql.gz 041c88da
Ultima modificare la 2024-11-18