Presun databázy z iného servera
Postup migrácie databázy na Millida VDS: príprava, prenos dumpu po sieti, kontrola integrity a prepnutie aplikácie s minimálnym výpadkom.
Aktualizované 23. augusta 2026
Migrácia databázy sa nepokazí na príkazoch — pokazí sa na poradí krokov: ľudia najprv prepnú doménu a až potom zistia, že polovica dát sa nikdy nepreniesla. Nižšie je postup, ktorý tomu zabráni.
Príprava
Na novom stroji nainštaluj rovnakú alebo novšiu verziu databázového servera — PostgreSQL alebo MySQL. Downgrade nie je podporovaný.
psql --version
mysql --version
df -h /
Potrebuješ približne 2,5-násobok veľkosti databázy vo voľnom mieste: dump, rozbalené dáta a ešte nejakú rezervu. Na VDS-1 je to spolu 40 GB, tak si to naplánuj vopred.
Vytvor používateľa a prázdnu databázu s rovnakým kódovaním ako na starom serveri.
Presun dát
Najjednoduchšia cesta je dump cez SSH, bez medzisúborov:
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
Pre MySQL:
ssh root@OLD 'mysqldump --single-transaction --routines --events -u root shop' \
| mysql -u root shop
Roly a používatelia nie sú súčasťou dumpu databázy — exportuješ ich zvlášť: pg_dumpall --roles-only, alebo ich vytvoríš ručne — pozri používatelia a oprávnenia.
Šírka pásma je až 500 Mbps, takže 20 GB databáza sa presunie za pár minút; úzkym hrdlom je zvyčajne zápis na disk, ktorý je obmedzený tarifom.
Overenie pred prepnutím
Kontroluj čísla, nie len to, že „stránka sa načítala“:
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';
Porovnaj počty riadkov v kľúčových tabuľkách so starým serverom, skontroluj, či sa sekvencie neresetovali (SELECT last_value FROM users_id_seq;), a spusti aplikáciu proti novej databáze v testovacom režime.
Prepnutie
- Zapni režim údržby alebo zastav aplikáciu na starom serveri.
- Urob záverečný dump zmien vykonaných počas prípravy.
- Obnov ho na novom stroji.
- Prepni pripojovací reťazec aplikácie a reštartuj službu.
- Nechaj starý server bežať ešte týždeň a nemaž dáta.
Nevynechaj piaty krok: zistiť o tri dni neskôr, že chýba tabuľka, je úplne bežné.
Časté chyby
| Príznak | Príčina |
|---|---|
role does not exist počas obnovy | Roly sa nepreniesli — použi --no-owner a ručne vytvor roly |
| Rozsypané znaky | Nezodpovedajúce kódovania: obnovuj do databázy s utf8mb4 alebo UTF8 |
| Sekvencie začínajú od 1 | Dump obsahoval len dáta, bez setval |
| Obnova trvá hodiny | Indexy sa vytvárajú za behu; pri veľkých databázach použi pg_restore -j 4 |
| Miesto došlo v polovici | Veľkosť dumpu popri dátach sa nezohľadnila |
Pred migráciou skontroluj, či nová databáza počúva len na
127.0.0.1. Netreba ju zverejňovať „na čas migrácie“ — prenos ide cez SSH, pozri vzdialený prístup.