Varnostna kopija baze podatkov: PostgreSQL, MySQL, rsync, rclone, CloudBox
Varnostna kopija baze podatkov je eden najpomembnejših postopkov za zagotavljanje varnosti in zanesljivosti spletnih strani in aplikacij. Izguba podatkov se lahko zgodi iz več razlogov: okvara strežnika, napaka skrbnika, težave z nadgradnjo, zlonamerna programska oprema ali preprosto človeška napaka. Redne varnostne kopije vam omogočajo hitro obnovitev projekta brez izgube podatkov.
Ta vodnik pojasnjuje, kako varnostno kopirati baze podatkov PostgreSQL in MySQL, kako shraniti varnostne kopije na oddaljenem strežniku Linux z uporabo rsync ali scp ter kako jih naložiti v oblak z uporabo rclone.
Varnostna kopija PostgreSQL
PostgreSQL ponuja standardno orodje pg_dump, ki omogoča ustvarjanje celotne kopije baze podatkov kot SQL datoteko.
Primer ustvarjanja varnostne kopije:
pg_dump -U myuser -h localhost mydatabase > /backup/mydatabase_$(date +%F).sql
Pojasnilo parametrov:
- -U myuser — uporabniško ime baze podatkov;
- -h localhost — naslov strežnika (lahko se izpusti, če je lokalni);
- mydatabase — ime baze podatkov;
- /backup/... — pot do cilja;
- $(date +%F) — doda trenutni datum v ime datoteke.
Za prihranek prostora takoj stisnite varnostno kopijo:
pg_dump -U myuser mydatabase | gzip > /backup/mydatabase_$(date +%F).sql.gz
Za varnostno kopiranje vseh baz podatkov na strežniku:
pg_dumpall -U myuser | gzip > /backup/postgres_all_$(date +%F).sql.gz
Varnostna kopija MySQL
Za MySQL in MariaDB uporabite orodje mysqldump.
Primer varnostne kopije ene baze podatkov:
mysqldump -u myuser -p mydatabase > /backup/mydatabase_$(date +%F).sql
Ko zaženete ta ukaz, bo sistem zahteval geslo uporabnika.
Za varnostno kopiranje vseh baz podatkov:
mysqldump -u myuser -p --all-databases | gzip > /backup/mysql_all_$(date +%F).sql.gz
Za vključitev shranjenih postopkov in sprožilcev dodajte možnosti --routines --triggers.
Varnostna kopija v CloudBox
CloudBox iz INTROSERV je rešitev za shranjevanje v oblaku, ki podpira več protokolov povezave (vključno z rsync, scp, rsync preko SSH, WebDAV). Enostavnost uporabe CloudBoxa bistveno poenostavi naloge nalaganja, upravljanja in pridobivanja podatkov.
Uporabite ga lahko kot oddaljeno lokacijo za shranjevanje varnostnih kopij baze podatkov. Spodaj so podrobnosti o nastavitvi in primeri skriptov.
Korak 1. Pridobitev dostopa do CloudBoxa
Naročite enega od razpoložljivih načrtov CloudBox na naši spletni strani — https://introserv.com/solutions/cloudbox/
Po plačilu je storitev na voljo v nekaj minutah. Po aktivaciji storitve boste prejeli podatke za povezavo:
- naslov strežnika (box$$$$$.introserv.cloud)
- uporabniško ime (box$$$$$) in geslo
Korak 2. Povezava in sinhronizacija z uporabo rsync ali scp
Uporaba rsync (priporočeno):
rsync -avz -e "ssh -p 22" /backup/ user@cloudbox-server:/path_to_cloudbackups/
Kjer:
- user — uporabniško ime CloudBox;
- cloudbox-server — naslov povezave;
- /path_to_cloudbackups/ — pot na CloudBoxu.
Za avtomatizirano delovanje je priporočljivo nastaviti SSH ključe.
1) Ustvarite javni ključ:
ssh-keygen -t rsa
2) Kopirajte vsebino ustvarjene datoteke javnega ključa, npr. /root/.ssh/id_rsa.pub v odložišče.
3) Pojdite v razdelek "Profil" (z miško se pomaknite nad ikono uporabnika v zgornjem desnem kotu), dodajte vsebino ključa v polje "Javni ključi" in shranite nastavitve.


Po tem bo rsync deloval brez pozivov za geslo, kar je priročno za cron opravila.
Alternativa — scp:
scp /backup/mysql_mydatabase.sql.gz user@cloudbox-server:/path_to_cloudbackups/
Korak 3. Povezava in sinhronizacija z uporabo rclone
Če želite uporabiti rclone za interakcijo s CloudBoxom, ga konfigurirajte na naslednji način.
1) Namestite rclone:
sudo apt install rclone
2) Začnite konfiguracijo:
rclone config
Med nastavitvijo izberite:
- n — za ustvarjanje novega oddaljenega;
- ime, npr.
cloudbox; - vrsta shranjevanja — izberite
sftpalissh; - vnesite naslov strežnika v obliki
box$$$$$.introserv.cloud, uporabniško ime v oblikibox$$$$$, vrata (SSH — privzeto 22), pot do imenika; - izvedite avtorizacijo (če je potrebno).
Preizkusite povezavo:
rclone ls cloudbox:/path_to_cloudbackups/
Kopirajte podatke varnostne kopije:
rclone copy /backup/ cloudbox:/db-backups/ --progress
Sinhronizirajte z brisanjem datotek, ki manjkajo lokalno:
rclone sync /backup/ cloudbox:/db-backups/ --progress
Če je potrebno — šifrirajte datoteke pred prenosom:
rclone copy /backup/ cloudbox:/db-backups/ --progress --crypt
Korak 4. Primer avtomatiziranega skripta s CloudBoxom
Ustvarite skript /usr/local/bin/db_backup_cloudbox.sh:
#!/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 # Naloži v CloudBox rsync -avz -e "ssh -p 22" $BACKUP_DIR/ user@cloudbox-server:/path_to_cloudbackups/$DATE/ # Naloži v CloudBox (možnost rclone, odkomentirajte, če uporabljate) # rclone copy $BACKUP_DIR/ cloudbox:/db-backups/$DATE/ --progress # Odstrani varnostne kopije starejše od 7 dni find /backup/ -type f -mtime +7 -delete
Nato dodajte cron opravilo (skript se izvaja vsak dan ob 2:00 zjutraj):
0 2 * * * /usr/local/bin/db_backup_cloudbox.sh
Pomembna razmišljanja:
- Zagotovite, da je povezava s CloudBoxom stabilna in pasovna širina zadostna.
- Nastavite nadzor: preverite, ali se datoteke dejansko kopirajo.
- Periodično preizkusite obnovitev iz varnostnih kopij CloudBox.
- Pri uporabi zaupnih podatkov — razmislite o šifriranju varnostnih kopij.
Kopiranje na oddaljen strežnik Linux preko SSH
Če želite shraniti varnostne kopije ne samo lokalno, ampak tudi na drugem strežniku, uporabite rsync ali scp.
Uporaba rsync (priporočeno, saj kopira samo spremembe):
rsync -avz -e "ssh -p 22" /backup/ [email protected]:/remote_backups/
Pojasnilo parametrov:
- user — uporabniško ime na oddaljenem strežniku;
- remote.server — IP naslov ali ime domene oddaljenega strežnika;
- /remote_backups/ — pot za shranjevanje varnostnih kopij.
Za delo brez vnosa gesla konfigurirajte SSH ključe.
Ustvarite SSH ključe:
ssh-keygen -t rsa
Kopirajte ključ na oddaljeni strežnik:
ssh-copy-id [email protected]
Po tem bo rsync deloval brez pozivov za geslo, kar je priročno za cron opravila.
Alternativa — uporaba scp:
scp /backup/mysql_mydb.sql.gz [email protected]:/remote_backups/
Kopiranje v oblak preko rclone
Če morate shraniti varnostne kopije v oblaku (Google Drive, Dropbox, Amazon S3 itd.), uporabite rclone — univerzalno orodje za sinhronizacijo podatkov z različnimi oblačnimi storitvami.
Namestitev:
sudo apt install rclone
Konfiguracija:
rclone config
Sledite interaktivnim korakom nastavitve:
- Izberite n za ustvarjanje nove povezave;
- Vnesite ime, npr.
remote; - Izberite vrsto shranjevanja (npr.
s3,drive,dropbox); - Vnesite dostopne ključe ali avtorizirajte preko brskalnika.
Preverite povezavo:
rclone ls remote:path
Primer nalaganja varnostnih kopij v oblak:
rclone copy /backup/ remote:db-backups/ --progress
Ukaz za sinhronizacijo (odstrani datoteke, ki manjkajo lokalno):
rclone sync /backup/ remote:db-backups/ --progress
Datoteke lahko tudi šifrirate pred nalaganjem:
rclone copy /backup/ remote:db-backups/ --progress --crypt
Varnost in nadzor
- Shranite varnostne kopije na vsaj dveh lokacijah — lokalno in oddaljeno.
- Redno preverjajte, da se varnostne kopije ustvarjajo in uspešno nalagajo.
- Izvedite testne obnove vsaj enkrat na mesec.
- Šifrirajte datoteke, ki vsebujejo občutljive podatke, če uporabljate javne oblake:
gpg -c /backup/mysql_mydatabase.sql.gz
- Zagotovite ustrezna dovoljenja za datoteke za
/backupin zaščitite svoje poverilnice za bazo podatkov.
Obnova iz varnostne kopije
PostgreSQL:
gunzip < backup.sql.gz | psql -U myuser -d mydatabase
MySQL:
gunzip < backup.sql.gz | mysql -u myuser -p mydatabase
Zaključek
Varnostno kopiranje baz podatkov PostgreSQL in MySQL je preprost, a kritično pomemben postopek. Tudi najbolj zanesljiva infrastruktura vas ne more zaščititi pred človeškimi napakami ali tehničnimi okvarami. Najboljša strategija so redne avtomatizirane varnostne kopije, shranjene na vsaj enem zunanjem strežniku in v oblaku, s periodičnim testiranjem obnove.
Z uporabo kombinacije pg_dump, mysqldump, rsync, rclone in cron lahko zgradite zanesljiv, popolnoma avtomatiziran sistem varnostnega kopiranja brez plačljive programske opreme tretjih oseb. Ta pristop je enostaven za implementacijo in primeren za vse Linux sisteme.