Skip to content
VDS · Databázy

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

  1. Zapni režim údržby alebo zastav aplikáciu na starom serveri.
  2. Urob záverečný dump zmien vykonaných počas prípravy.
  3. Obnov ho na novom stroji.
  4. Prepni pripojovací reťazec aplikácie a reštartuj službu.
  5. 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íznakPríčina
role does not exist počas obnovyRoly sa nepreniesli — použi --no-owner a ručne vytvor roly
Rozsypané znakyNezodpovedajúce kódovania: obnovuj do databázy s utf8mb4 alebo UTF8
Sekvencie začínajú od 1Dump obsahoval len dáta, bez setval
Obnova trvá hodinyIndexy sa vytvárajú za behu; pri veľkých databázach použi pg_restore -j 4
Miesto došlo v poloviciVeľ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.