Varnostno kopiranje podatkov iz PostgreSQL/MySQL v oblačno shranjevanje
Uvod
Varnostno kopiranje podatkovnih baz je eden najpomembnejših postopkov za zagotavljanje varnosti in zanesljivosti spletnih strani ter aplikacij. Do izgube podatkov lahko pride zaradi številnih razlogov: okvare strežnika, napake skrbnika, težav pri posodobitvah, zlonamerne programske opreme ali preprosto človeške napake. Redno varnostno kopiranje vam omogoča hitro obnovitev projekta brez izgube podatkov.
V tem vodniku je pojasnjeno, kako narediti varnostno kopijo podatkovnih baz PostgreSQL in MySQL, kako varnostne kopije shraniti na oddaljen Linux strežnik z uporabo rsync ali scp ter kako jih naložiti v oblačno shranjevališče z uporabo rclone.
Varnostno kopiranje PostgreSQL
PostgreSQL ponuja standardno orodje pg_dump, ki omogoča ustvarjanje popolne kopije baze podatkov v obliki datoteke SQL.
Primer izdelave varnostne kopije:
pg_dump -U myuser -h localhost mydatabase > /backup/mydatabase_$(date +%F).sql
Razlaga parametrov:
-U myuser— uporabniško ime za bazo podatkov-h localhost— naslov strežnika (se lahko izpusti, če je lokalna)mydatabase— ime baze podatkov/backup/...— ciljna pot$(date +%F)— doda trenutni datum k imenu datoteke
Da prihranite prostor, varnostno kopijo takoj stisnite:
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 pripomoček mysqldump.
Primer varnostne kopije ene baze podatkov:
mysqldump -u myuser -p mydatabase > /backup/mydatabase_$(date +%F).sql
Ko izvedete to ukazno vrstico, vas bo sistem zaprosil za geslo uporabnika.
Za varnostno kopiranje vseh baz podatkov:
mysqldump -u myuser -p --all-databases | gzip > /backup/mysql_all_$(date +%F).sql.gz
Če želite vključiti shranjene postopke in sprožilce, dodajte možnosti --routines --triggers.
Varnostno kopiranje v CloudBox
CloudBox podjetja INTROSERV je rešitev za shranjevanje v oblaku, ki podpira več protokolov povezave (vključno z rsync, scp, rsync prek SSH, WebDAV). Enostavna uporaba CloudBoxa znatno poenostavi nalaganje, upravljanje in pridobivanje podatkov.
Lahko ga uporabite kot oddaljeno mesto za shranjevanje varnostnih kopij baz podatkov. Spodaj so navedene podrobnosti o nastavitvah in primeri skriptov.
Korak 1. Pridobitev dostopa do CloudBoxa
Naročite enega od razpoložljivih paketov CloudBox na naši spletni strani — introserv.com
Po plačilu bo 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
Z uporabo rsync (priporočeno):
rsync -avz -e "ssh -p 22" /backup/ user@cloudbox-server:/path_to_cloudbackups/
Kjer:
user— uporabniško ime CloudBoxcloudbox-server— naslov povezave/path_to_cloudbackups/— pot v CloudBoxu
Za avtomatizirano delovanje je priporočljivo nastaviti SSH ključe:
- Ustvarite javni ključ:
ssh-keygen -t rsa - Kopirajte vsebino ustvarjene datoteke z javnim ključem, npr.
/root/.ssh/id_rsa.pub, v odložišče. - Pojdite v razdelek »Profil« (preletite z miško nad ikono uporabnika v zgornjem desnem kotu), vsebino ključa dodajte v polje »Javni ključi« in shranite nastavitve.


Po tem bo rsync deloval brez zahtev po geslu, kar je priročno za cron naloge.
Alternativa — scp:
scp /backup/mysql_mydatabase.sql.gz user@cloudbox-server:/path_to_cloudbackups/
Korak 3. Povezava in sinhronizacija z rclone
Če želite za komunikacijo s CloudBoxom uporabljati rclone, ga nastavite na naslednji način:
- Namestite rclone:
sudo apt install rclone - Začnite z nastavitvami:
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 (v tem primeru SSH vrata — privzeto 22), pot do imenika - izvedite avtorizacijo (če je potrebno)
Preizkusite povezavo:
rclone ls cloudbox:/path_to_cloudbackups/
Kopirajte varnostne kopije podatkov:
rclone copy /backup/ cloudbox:/db-backups/ --progress
Sinhronizirajte z izbrisom datotek, ki lokalno manjkajo:
rclone sync /backup/ cloudbox:/db-backups/ --progress
Po potrebi — šifrirajte datoteke pred prenosom:
rclone copy /backup/ cloudbox:/db-backups/ --progress --crypt
Korak 4. Primer skripta za avtomatizacijo z CloudBoxom
Ustvarite skript /usr/local/bin/db_backup_cloudbox.sh, na primer:
#!/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
Nato dodajte cron nalogo (v primeru se skript izvaja vsak dan ob 2:00 zjutraj):
0 2 * * * /usr/local/bin/db_backup_cloudbox.sh
Pomembna opozorila:
- Prepričajte se, da je povezava s CloudBoxom stabilna in da je pasovna širina zadostna.
- Nastavite spremljanje: preverite, ali se datoteke dejansko kopirajo.
- Redno preizkušajte obnovo iz varnostnih kopij CloudBox.
- Pri uporabi zaupnih podatkov razmislite o šifriranju varnostnih kopij.
Kopiranje na oddaljeni strežnik Linux prek SSH
Če želite varnostne kopije shraniti ne le lokalno, ampak tudi na drugem strežniku, uporabite rsync ali scp.
Uporaba rsync (priporočljivo, saj kopira le spremembe):
rsync -avz -e "ssh -p 22" /backup/ [email protected]:/remote_backups/
Razlaga parametrov:
user— uporabniško ime na oddaljenem strežnikuremote.server— IP-naslov ali domensko ime oddaljenega strežnika/remote_backups/— pot za shranjevanje varnostnih kopij
Če želite delati brez vnašanja gesla, nastavite SSH ključe:
# Generate SSH keys: ssh-keygen -t rsa # Copy key to remote server: ssh-copy-id [email protected]
Po tem bo rsync deloval brez pozivov za geslo, kar je priročno za cron naloge.
Alternativa rsync — uporaba scp:
scp /backup/mysql_mydb.sql.gz [email protected]:/remote_backups/
Kopiranje v oblačno shranjevanje prek rclone
Če želite varnostne kopije shraniti 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
Nastavitev:
rclone config
Sledite interaktivnim korakom nastavitve:
- Izberite
n, da ustvarite novo povezavo - Vnesite ime, npr.
remote - Izberite vrsto shranjevanja (npr.
s3,drive,dropbox) - Vnesite ključe za dostop ali se avtorizirajte prek 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 lokalno manjkajo):
rclone sync /backup/ remote:db-backups/ --progress
Datoteke lahko pred nalaganjem tudi šifrirate:
rclone copy /backup/ remote:db-backups/ --progress --crypt
Varnost in nadzor
- Varnostne kopije shranjujte na vsaj dveh mestih – lokalno in na daljavo.
- Redno preverjajte, ali so varnostne kopije uspešno ustvarjene in naložene.
- Vsaj enkrat na mesec izvedite testno obnovitev.
- Če uporabljate javne oblake, šifrirajte datoteke, ki vsebujejo občutljive podatke:
gpg -c /backup/mysql_mydatabase.sql.gz - Zagotovite ustrezna dovoljenja za datoteke v mapi
/backupin zavarujte svoje podatke za dostop do baze podatkov.
Obnavljanje 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 podatkovnih baz PostgreSQL in MySQL je preprost, a izredno pomemben postopek. Tudi najbolj zanesljiva infrastruktura vas ne more zaščititi pred človeškimi napakami ali tehničnimi okvarami. Najboljša strategija je redno avtomatsko varnostno kopiranje, shranjeno na vsaj enem zunanjem strežniku in v oblaku, skupaj z rednim preizkušanjem obnovitve.
Z uporabo kombinacije orodij pg_dump, mysqldump, rsync, rclone in cron lahko vzpostavite zanesljiv, popolnoma avtomatiziran sistem varnostnega kopiranja brez kakršne koli plačljive programske opreme tretjih ponudnikov. Ta pristop je enostaven za izvedbo in primeren za vse sisteme Linux.