Varnostno kopiranje in obnova podatkovnih baz PostgreSQL in MySQL | INTROSERV
EUR
european

EUR

usa

USD

Slovenia Sl
Ex. VAT Ex. VAT 0%

Varnostno kopiranje in obnova podatkovnih baz PostgreSQL in MySQL

Varnostna kopija je eden ključnih postopkov, ki zagotavlja varnost podatkov. Tudi pri zanesljivem gostovanju lahko pride do napak v aplikacijah, nepravilnih posodobitev ali nenamernega brisanja podatkov.

V tem vodniku bomo pokazali, kako ustvariti in obnoviti varnostne kopije podatkovnih baz PostgreSQL in MySQL z uporabo standardnih ukaznih orodij — pg_dump in mysqldump.

1. Varnostna kopija PostgreSQL

1.1. Kaj je pg_dump

pg_dump je standardno orodje PostgreSQL za ustvarjanje logične varnostne kopije baze podatkov. Shrani tako strukturo (DDL) kot podatke (DML) v besedilno SQL datoteko, ki jo je mogoče kasneje uporabiti za obnovitev.

1.2. Sintaksa ukaza

pg_dump -U <user> -h <host> -p <port> -d <database> -F p -f <path_to_file.sql>

1.3. Primer varnostne kopije

pg_dump -U myuser -h localhost -d mydatabase -F p -f /backups/mydatabase_$(date +%F).sql

Pojasnilo parametrov:

  • -U myuser — uporabniško ime PostgreSQL;
  • -h localhost — gostitelj strežnika (lahko se določi IP);
  • -d mydatabase — ime baze podatkov;
  • -F p — izhodni format (plain — navaden SQL);
  • -f — pot do datoteke, kjer bo varnostna kopija shranjena;
  • $(date +%F) — doda trenutni datum v ime datoteke (npr. 2025-11-03).

1.4. Stisnjena varnostna kopija

Za zmanjšanje velikosti datoteke lahko uporabite stiskanje gzip:

pg_dump -U myuser mydatabase | gzip > /backups/mydatabase_$(date +%F).sql.gz

2. Obnavljanje baze podatkov PostgreSQL

2.1. Uporaba psql

Za obnovitev baze podatkov iz besedilne varnostne kopije uporabite:

psql -U myuser -d mydatabase -f /backups/mydatabase_2025-11-03.sql

Če je varnostna kopija stisnjena:

gunzip -c /backups/mydatabase_2025-11-03.sql.gz | psql -U myuser -d mydatabase

2.2. Če baza podatkov ne obstaja

Najprej ustvarite novo bazo podatkov:

createdb -U myuser newdatabase

psql -U myuser -d newdatabase -f /backups/mydatabase_2025-11-03.sql

3. Varnostna kopija MySQL

3.1. Kaj je mysqldump

mysqldump je standardno orodje za ustvarjanje MySQL izpiskov. Shrani SQL ukaze, potrebne za ponovno ustvarjanje tabel in vstavljanje podatkov.

3.2. Sintaksa ukaza

mysqldump -u <user> -p -h <host> <database> > <path_to_file.sql>

3.3. Primer varnostne kopije

mysqldump -u myuser -p mydatabase > /backups/mydatabase_$(date +%F).sql

Pojasnilo parametrov:

  • -u myuser — uporabniško ime MySQL;
  • -p — zahteva geslo;
  • mydatabase — ime baze podatkov;
  • > — preusmeri izhod v datoteko.

3.4. Stisnjen izpis

mysqldump -u myuser -p mydatabase | gzip > /backups/mydatabase_$(date +%F).sql.gz

4. Obnavljanje baze podatkov MySQL

4.1. Obnavljanje iz SQL datoteke

mysql -u myuser -p mydatabase < /backups/mydatabase_2025-11-03.sql

4.2. Če baza podatkov ne obstaja

Pred obnovitvijo ustvarite novo bazo podatkov:

mysql -u myuser -p -e "CREATE DATABASE newdatabase;"

mysql -u myuser -p newdatabase < /backups/mydatabase_2025-11-03.sql

4.3. Obnavljanje iz stisnjenega izpisa

gunzip -c /backups/mydatabase_2025-11-03.sql.gz | mysql -u myuser -p mydatabase

5. Priporočila za avtomatizacijo in varnost

5.1. Avtomatizirane varnostne kopije s Cron

Za redne postopke varnostnega kopiranja brez ročnega posredovanja nastavite avtomatizacijo z uporabo cron.

Osnovna nastavitev cron:

# Odpri urejevalnik cron crontab -e

Dodajte vrstico, na primer:

0 2 * * * /usr/local/bin/db_backup.sh

Ta ukaz bo skript zagnal vsak dan ob 2:00 zjutraj.

Napreden pristop z uporabo skripta. Ustvarite /usr/local/bin/db_backup.sh:

#!/bin/bash DATE=$(date +%F) BACKUP_DIR="/backup/$DATE" mkdir -p $BACKUP_DIR # Varnostna kopija PostgreSQL pg_dump -U myuser mydatabase | gzip > $BACKUP_DIR/postgres_mydatabase.sql.gz # Varnostna kopija MySQL mysqldump -u myuser -p mydatabase | gzip > $BACKUP_DIR/mysql_mydatabase.sql.gz # Odstrani varnostne kopije starejše od 7 dni find /backup/ -type f -mtime +7 -delete

Naredite skript izvedljiv:

chmod +x /usr/local/bin/db_backup.sh

In dodajte v cron:

0 2 * * * /usr/local/bin/db_backup.sh

5.2. Priporočila za varnost in shranjevanje

  • Shranjevanje izven strežnika: shranjujte varnostne kopije v oblak (AWS S3, Google Cloud) ali na zunanje diske.
  • Nadzor dostopa: omejite dostop do mape /backups, saj lahko datoteke vsebujejo zaupne podatke.

chmod 700 /backup

chmod 600 /backup/*.sql.gz

  • Preverjanje integritete: mesečno izvajajte testne obnove za preverjanje funkcionalnosti varnostnih kopij.
  • Zaupnost: varnostne kopije vsebujejo vsebino baze podatkov — obravnavajte jih kot zaupne informacije.

Zaključek

Uporaba pg_dump in mysqldump je enostaven, zanesljiv in univerzalen način za varnostno kopiranje podatkovnih baz PostgreSQL in MySQL. Ta orodja so primerna tako za ročne varnostne kopije kot za avtomatizirane procese z minimalnim naporom.

Redne varnostne kopije so ključ do stabilnosti vašega projekta in varnosti podatkov.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA