Sigurnosno kopiranje PostgreSQL/MySQL u pohranu u oblaku
Uvod
Sigurnosno kopiranje baza podataka jedan je od najvažnijih postupaka za osiguranje sigurnosti i pouzdanosti web stranica i aplikacija. Gubitak podataka može se dogoditi iz mnogo razloga: kvar poslužitelja, pogreška administratora, problemi s ažuriranjima, zlonamjerni softver ili jednostavno ljudska pogreška. Redovita sigurnosna kopiranja omogućuju vam brzu obnovu vašeg projekta bez gubitka podataka.
Ovaj vodič objašnjava kako izraditi sigurnosne kopije baza podataka PostgreSQL i MySQL, kako pohraniti sigurnosne kopije na udaljeni Linux poslužitelj pomoću alata rsync ili scp te kako ih prenijeti u pohranu u oblaku pomoću alata rclone.
PostgreSQL sigurnosno kopiranje
PostgreSQL pruža standardnu utilitu pg_dump, koja omogućuje izradu potpune kopije baze podataka kao SQL datoteke.
Primjer izrade sigurnosne kopije:
pg_dump -U myuser -h localhost mydatabase > /backup/mydatabase_$(date +%F).sql
Objašnjenje parametara:
-U myuser— korisničko ime baze podataka-h localhost— adresa poslužitelja (može se izostaviti ako je lokalna)mydatabase— naziv baze podataka/backup/...— putanja odredišta$(date +%F)— dodaje trenutni datum u naziv datoteke
Kako biste uštedjeli prostor, odmah komprimirajte sigurnosnu kopiju:
pg_dump -U myuser mydatabase | gzip > /backup/mydatabase_$(date +%F).sql.gz
Za izradu sigurnosne kopije svih baza podataka na poslužitelju:
pg_dumpall -U myuser | gzip > /backup/postgres_all_$(date +%F).sql.gz
MySQL sigurnosna kopija
Za MySQL i MariaDB koristite alat mysqldump.
Primjer sigurnosne kopije jedne baze podataka:
mysqldump -u myuser -p mydatabase > /backup/mydatabase_$(date +%F).sql
Kada pokrenete ovu naredbu, sustav će zatražiti korisničku lozinku.
Za sigurnosno kopiranje svih baza podataka:
mysqldump -u myuser -p --all-databases | gzip > /backup/mysql_all_$(date +%F).sql.gz
Za uključivanje pohranjenih procedura i okidača dodajte opcije --routines --triggers.
Sigurnosno kopiranje u CloudBox
CloudBox tvrtke INTROSERV rješenje je za pohranu u oblaku koje podržava više protokola povezivanja (uključujući rsync, scp, rsync putem SSH-a i WebDAV). Jednostavnost korištenja CloudBoxa značajno pojednostavljuje zadatke učitavanja, upravljanja i dohvaćanja podataka.
Možete ga koristiti kao udaljenu lokaciju za pohranu sigurnosnih kopija baza podataka. Ispod su detalji postavke i primjeri skripti.
Korak 1. Dobivanje pristupa CloudBoxu
Naručite jedan od dostupnih CloudBox planova na našoj web-stranici — introserv.com
Nakon uplate usluga postaje dostupna u roku od nekoliko minuta. Nakon aktivacije usluge primit ćete podatke za povezivanje:
- adresa poslužitelja (
box#####.introserv.cloud) - korisničko ime (
box#####) i lozinku
Korak 2. Povezivanje i sinkronizacija pomoću rsync-a ili scp-a
Korištenje rsync-a (preporučeno):
rsync -avz -e "ssh -p 22" /backup/ user@cloudbox-server:/path_to_cloudbackups/
Gdje:
korisnik— korisničko ime za CloudBoxcloudbox-server— adresa veze/path_to_cloudbackups/— putanja na CloudBoxu
Za automatizirano djelovanje preporučljivo je postaviti SSH ključeve:
- Generirajte javni ključ:
ssh-keygen -t rsa - Kopirajte sadržaj datoteke javnog ključa, npr.
/root/.ssh/id_rsa.pub, u međuspremnik. - Idite u odjeljak "Profil" (pređite mišem preko ikone korisnika u gornjem desnom kutu), dodajte sadržaj ključa u polje "Javni ključevi" i spremite postavke.


Nakon toga će rsync raditi bez upita za lozinku, što je praktično za cron zadatke.
Alternativa — scp:
scp /backup/mysql_mydatabase.sql.gz user@cloudbox-server:/path_to_cloudbackups/
Korak 3. Povezivanje i sinkronizacija pomoću rclonea
Ako želite koristiti rclone za interakciju s CloudBoxom, konfigurirajte ga na sljedeći način:
- Instalirajte rclone:
sudo apt install rclone - Početak konfiguracije:
rclone config
Tijekom postavljanja odaberite:
n— za stvaranje novog udaljenog- naziv, npr.
cloudbox - vrstu pohrane — odaberite
sftpilissh - unesite adresu poslužitelja u formatu
box#####.introserv.cloud, korisničko ime u formatubox#####, priključak (u ovom slučaju SSH priključak — zadano 22), putanju do direktorija - izvršite autorizaciju (ako je potrebno)
Testirajte vezu:
rclone ls cloudbox:/path_to_cloudbackups/
Kopirajte sigurnosne podatke:
rclone copy /backup/ cloudbox:/db-backups/ --progress
Sinkronizirajte s brisanjem datoteka koje nedostaju lokalno:
rclone sync /backup/ cloudbox:/db-backups/ --progress
Ako je potrebno — šifrirajte datoteke prije prijenosa:
rclone copy /backup/ cloudbox:/db-backups/ --progress --crypt
Korak 4. Primjer skripte za automatizaciju s CloudBoxom
Napravite skriptu /usr/local/bin/db_backup_cloudbox.sh, na primjer:
#!/bin/bash DATE=$(date +%F) BACKUP_DIR="/backup/$DATE" mkdir -p $BACKUP_DIR # PostgreSQL pg_dump -U myuser mydatabase | gzip > $BACKUP_DIR/postgres_mydatabase.sql.gz # MySQL mysqldump -u myuser -p mydatabase | gzip > $BACKUP_DIR/mysql_mydatabase.sql.gz # Upload to CloudBox rsync -avz -e "ssh -p 22" $BACKUP_DIR/ user@cloudbox-server:/path_to_cloudbackups/$DATE/ # Upload to CloudBox (rclone option, uncomment if used) # rclone copy $BACKUP_DIR/ cloudbox:/db-backups/$DATE/ --progress # Remove backups older than 7 days find /backup/ -type f -mtime +7 -delete
Zatim dodajte cron zadatak (u primjeru se skripta pokreće svakodnevno u 2:00):
0 2 * * * /usr/local/bin/db_backup_cloudbox.sh
Važne napomene:
- Osigurajte stabilnu vezu s CloudBoxom i dovoljnu propusnost.
- Postavite nadzor: provjerite kopiraju li se datoteke.
- Periodično testirajte vraćanje iz sigurnosnih kopija na CloudBoxu.
- Prilikom korištenja povjerljivih podataka — razmislite o šifriranju sigurnosnih kopija.
Kopiranje na udaljeni Linux poslužitelj putem SSH-a
Ako želite pohranjivati sigurnosne kopije ne samo lokalno nego i na drugom poslužitelju, upotrijebite rsync ili scp.
Korištenje rsync-a (preporučeno, jer kopira samo promjene):
rsync -avz -e "ssh -p 22" /backup/ [email protected]:/remote_backups/
Objašnjenje parametara:
user— korisničko ime na udaljenom poslužiteljuremote.server— IP adresa ili naziv domene udaljenog poslužitelja/remote_backups/— putanja za pohranu sigurnosnih kopija
Za rad bez unosa lozinke konfigurirajte SSH ključeve:
# Generate SSH keys: ssh-keygen -t rsa # Copy key to remote server: ssh-copy-id [email protected]
Nakon toga će rsync raditi bez upita za lozinku, što je praktično za cron zadatke.
Alternativa rsyncu — korištenje scp-a:
scp /backup/mysql_mydb.sql.gz [email protected]:/remote_backups/
Kopiranje u pohranu u oblaku putem rclonea
Ako trebate pohranjivati sigurnosne kopije u oblaku (Google Drive, Dropbox, Amazon S3 itd.), upotrijebite rclone — univerzalni alat za sinkronizaciju podataka s raznim uslugama u oblaku.
Instalacija:
sudo apt install rclone
Konfiguracija:
rclone config
Slijedite interaktivne korake postavljanja:
- Odaberite
nza stvaranje nove veze - Unesite naziv, npr.
remote - Odaberite vrstu pohrane (npr.
s3,disk,dropbox) - Unesite pristupne ključeve ili autorizirajte putem preglednika
Provjerite vezu:
rclone ls remote:path
Primjer učitavanja sigurnosnih kopija u oblak:
rclone copy /backup/ remote:db-backups/ --progress
Naredba za sinkronizaciju (uklanja datoteke koje nedostaju lokalno):
rclone sync /backup/ remote:db-backups/ --progress
Također možete enkriptirati datoteke prije prijenosa:
rclone copy /backup/ remote:db-backups/ --progress --crypt
Sigurnost i kontrola
- Pohranjujte sigurnosne kopije na najmanje dvije lokacije — lokalno i udaljeno.
- Redovito provjeravajte jesu li sigurnosne kopije uspješno izradene i prenesene.
- Obavljajte testne obnove barem jednom mjesečno.
- Šifrirajte datoteke koje sadrže osjetljive podatke ako koristite javna oblaka:
gpg -c /backup/mysql_mydatabase.sql.gz - Osigurajte ispravna dozvole za datoteke u
/backupi zaštitite vjerodajnice vaše baze podataka.
Obnova iz sigurnosne kopije
PostgreSQL:
gunzip < backup.sql.gz | psql -U myuser -d mydatabase
MySQL:
gunzip < backup.sql.gz | mysql -u myuser -p mydatabase
Zaključak
Izrada sigurnosnih kopija baza podataka PostgreSQL i MySQL jednostavan je, ali iznimno važan postupak. Čak ni najpouzdanija infrastruktura ne može vas zaštititi od ljudske pogreške ili tehničkog kvara. Najbolja strategija je redovita automatska izrada sigurnosnih kopija pohranjenih na najmanje jednom vanjskom poslužitelju i u oblaku, uz periodično testiranje oporavka.
Korištenjem kombinacije alata pg_dump, mysqldump, rsync, rclone i cron možete izgraditi pouzdan, potpuno automatiziran sustav za izradu sigurnosnih kopija bez ikakvog plaćenog softvera trećih strana. Ovaj je pristup jednostavan za implementaciju i pogodan za sve Linux sustave.