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
- Uključi režim održavanja ili zaustavi aplikaciju na starom serveru.
- Napravi završni dump promena nastalih tokom pripreme.
- Vrati ga na novu mašinu.
- Prebaci connection string aplikacije i restartuj servis.
- 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
| Simptom | Uzrok |
|---|---|
role does not exist tokom vraćanja | Role nisu migrirane — koristi --no-owner uz ručno kreiranje rola |
| Izobličeni znakovi | Neusklađena kodiranja: vraćaj u bazu sa utf8mb4 ili UTF8 |
| Sekvence počinju od 1 | Dump je sadržao samo podatke, bez setval |
| Vraćanje traje satima | Indeksi se grade u letu; za velike baze koristi pg_restore -j 4 |
| Nestalo prostora na pola | Velič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.