Sigurnosna kopija i obnova baze podataka PostgreSQL i MySQL | INTROSERV
EUR
european

EUR

usa

USD

Croatia Hr
Ex. VAT Ex. VAT 0%

Sigurnosna kopija i obnova baze podataka PostgreSQL i MySQL

Sigurnosna kopija (backup) jedna je od ključnih procedura koja osigurava sigurnost podataka. Čak i uz pouzdano hosting rješenje, mogu se dogoditi greške u aplikaciji, netočna ažuriranja ili slučajno brisanje podataka.

U ovom vodiču pokazat ćemo kako kreirati i vratiti sigurnosne kopije PostgreSQL i MySQL baza podataka koristeći standardne komandne alate — pg_dump i mysqldump.

1. Sigurnosna kopija PostgreSQL

1.1. Što je pg_dump

pg_dump je standardni PostgreSQL alat za kreiranje logičke sigurnosne kopije baze podataka. Sprema i strukturu (DDL) i podatke (DML) u tekstualnu SQL datoteku koja se kasnije može koristiti za vraćanje.

1.2. Sintaksa naredbe

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

1.3. Primjer sigurnosne kopije

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

Objašnjenje parametara:

  • -U myuser — PostgreSQL korisničko ime;
  • -h localhost — server host (može se navesti IP);
  • -d mydatabase — naziv baze podataka;
  • -F p — izlazni format (plain — običan SQL);
  • -f — putanja do datoteke gdje će se sigurnosna kopija spremiti;
  • $(date +%F) — dodaje trenutni datum u naziv datoteke (npr. 2025-11-03).

1.4. Komprimirana sigurnosna kopija

Za smanjenje veličine datoteke, možete koristiti gzip kompresiju:

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

2. Vraćanje PostgreSQL baze podataka

2.1. Korištenje psql

Za vraćanje baze podataka iz tekstualne sigurnosne kopije, koristite:

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

Ako je sigurnosna kopija komprimirana:

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

2.2. Ako baza podataka ne postoji

Prvo kreirajte novu bazu podataka:

createdb -U myuser newdatabase

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

3. Sigurnosna kopija MySQL

3.1. Što je mysqldump

mysqldump je standardni alat za kreiranje MySQL dumpova. Sprema SQL naredbe potrebne za ponovno kreiranje tablica i umetanje podataka.

3.2. Sintaksa naredbe

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

3.3. Primjer sigurnosne kopije

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

Objašnjenje parametara:

  • -u myuser — MySQL korisničko ime;
  • -p — traži unos lozinke;
  • mydatabase — naziv baze podataka;
  • > — preusmjerava izlaz u datoteku.

3.4. Komprimirani dump

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

4. Vraćanje MySQL baze podataka

4.1. Vraćanje iz SQL datoteke

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

4.2. Ako baza podataka ne postoji

Prvo kreirajte novu bazu podataka prije vraćanja:

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

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

4.3. Vraćanje iz komprimiranog dumpa

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

5. Preporuke za automatizaciju i sigurnost

5.1. Automatizirane sigurnosne kopije s Cronom

Za redovite procese sigurnosne kopije bez ručne intervencije, postavite automatizaciju koristeći cron.

Osnovna postavka crona:

# Otvorite cron editor crontab -e

Dodajte liniju, na primjer:

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

Ova naredba će pokrenuti skriptu svakodnevno u 2:00 ujutro.

Napredni pristup koristeći skriptu. Kreirajte /usr/local/bin/db_backup.sh:

#!/bin/bash DATE=$(date +%F) BACKUP_DIR="/backup/$DATE" mkdir -p $BACKUP_DIR # Sigurnosna kopija PostgreSQL pg_dump -U myuser mydatabase | gzip > $BACKUP_DIR/postgres_mydatabase.sql.gz # Sigurnosna kopija MySQL mysqldump -u myuser -p mydatabase | gzip > $BACKUP_DIR/mysql_mydatabase.sql.gz # Ukloni sigurnosne kopije starije od 7 dana find /backup/ -type f -mtime +7 -delete

Učinite skriptu izvršivom:

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

I dodajte u cron:

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

5.2. Preporuke za sigurnost i pohranu

  • Pohrana izvan servera: pohranite sigurnosne kopije u cloud storage (AWS S3, Google Cloud) ili na vanjske diskove.
  • Kontrola pristupa: ograničite pristup mapi /backups, jer datoteke mogu sadržavati povjerljive podatke.

chmod 700 /backup

chmod 600 /backup/*.sql.gz

  • Provjera integriteta: obavljajte testna vraćanja mjesečno kako biste provjerili funkcionalnost sigurnosne kopije.
  • Povjerljivost: sigurnosne kopije sadrže sadržaj baze podataka — tretirajte ih kao povjerljive informacije.

Zaključak

Korištenje pg_dump i mysqldump je jednostavan, pouzdan i univerzalan način za izradu sigurnosnih kopija PostgreSQL i MySQL baza podataka. Ovi alati su prikladni za ručne sigurnosne kopije kao i za automatizirane procese uz minimalan trud.

Redovite sigurnosne kopije ključ su stabilnosti vašeg projekta i sigurnosti podataka.

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