Skip to content
VDS · Baze podataka

Premeštanje baze podataka sa drugog servera

Postupak za migraciju baze podataka na Millida VDS: priprema, prenošenje dumpa preko mreže, provera integriteta i prebacivanje aplikacije uz minimalan downtime.

Ažurirano 23. avgust 2026.

Migracija baze podataka ne pada na komandama — pada na redosledu koraka: ljudi prvo prebace domen i tek onda otkriju da pola podataka nikad nije preneto. Ispod je redosled koji to sprečava.

Priprema

Na novoj mašini instaliraj istu ili noviju verziju servera baze podataka — PostgreSQL ili MySQL. Vraćanje na stariju verziju nije podržano.

psql --version
mysql --version
df -h /

Potrebno ti je otprilike 2,5 puta više slobodnog prostora od veličine baze: dump, raspakovani podaci i malo rezerve. Na VDS-1 to je ukupno 40 GB, pa planiraj unapred.

Napravi korisnika i praznu bazu sa istim kodiranjem kao na starom serveru.

Premeštanje podataka

Najjednostavniji put je dump preko SSH, bez posrednih fajlova:

ssh root@OLD 'pg_dump -Fc -U shop shop' > /srv/shop.dump
pg_restore -U postgres -d shop --no-owner --role=shop /srv/shop.dump

Za MySQL:

ssh root@OLD 'mysqldump --single-transaction --routines --events -u root shop' \
  | mysql -u root shop

Role i korisnici nisu deo dumpa baze — izvoziš ih odvojeno: pg_dumpall --roles-only, ili ih napravi ručno — vidi korisnici i dozvole.

Propusnost je do 500 Mbps, pa se baza od 20 GB prenese za nekoliko minuta; usko grlo je obično upis na disk, koji je ograničen tierom.

Proveri pre prebacivanja

Proveri brojeve, ne samo „sajt se učitao”:

SELECT relname, n_live_tup FROM pg_stat_user_tables ORDER BY n_live_tup DESC LIMIT 20;
SELECT table_name, table_rows FROM information_schema.tables WHERE table_schema='shop';

Uporedi broj redova u ključnim tabelama sa starim serverom, proveri da se sekvence nisu resetovale (SELECT last_value FROM users_id_seq;) i pokreni aplikaciju nad novom bazom u test režimu.

Prebacivanje

  1. Uključi režim održavanja ili zaustavi aplikaciju na starom serveru.
  2. Napravi završni dump promena nastalih tokom pripreme.
  3. Vrati ga na novu mašinu.
  4. Prebaci connection string aplikacije i restartuj servis.
  5. Ostavi stari server da radi još nedelju dana bez brisanja podataka.

Ne preskači peti korak: da tri dana kasnije otkriješ da neka tabela nedostaje — to je redovna pojava.

Česte greške

SimptomUzrok
role does not exist tokom vraćanjaRole nisu migrirane — koristi --no-owner uz ručno kreiranje rola
Izobličeni znakoviNeusklađena kodiranja: vraćaj u bazu sa utf8mb4 ili UTF8
Sekvence počinju od 1Dump je sadržao samo podatke, bez setval
Vraćanje traje satimaIndeksi se grade u letu; za velike baze koristi pg_restore -j 4
Nestalo prostora na polaVeličina dumpa uz podatke nije uračunata

Pre migracije proveri da nova baza sluša samo na 127.0.0.1. Nema potrebe da je izlažeš javno „dok traje migracija” — prenos ide preko SSH, vidi udaljeni pristup.