మరొక సర్వర్ నుండి డేటాబేస్ను తరలించడం
Millida VDSకు డేటాబేస్ను మైగ్రేట్ చేసే విధానం: సన్నాహం, నెట్వర్క్ ద్వారా డంప్ బదిలీ, సమగ్రత తనిఖీ, కనిష్ట డౌన్టైమ్తో అప్లికేషన్ మార్చడం.
23 ఆగస్టు, 2026న నవీకరించబడింది
డేటాబేస్ మైగ్రేషన్ కమాండ్ల వద్ద విఫలం కాదు — అది స్టెప్పుల క్రమం వద్ద విఫలమవుతుంది: చాలామంది మొదట డొమైన్ను మారుస్తారు, ఆ తర్వాతే సగం డేటా బదిలీ కాలేదని గుర్తిస్తారు. దాన్ని నివారించే క్రమం క్రింద ఉంది.
సన్నాహం
కొత్త మెషీన్పై అదే లేదా కొత్త వెర్షన్ డేటాబేస్ సర్వర్ను ఇన్స్టాల్ చేయండి — PostgreSQL లేదా MySQL. డౌన్గ్రేడ్కు మద్దతు లేదు.
psql --version
mysql --version
df -h /
మీకు డేటాబేస్ సైజు సుమారు 2.5 రెట్లు ఖాళీ స్థలం అవసరం: డంప్, అన్ప్యాక్ చేసిన డేటా, కొంత అదనపు స్థలం. VDS-1లో అది మొత్తం 40 GB, కాబట్టి ముందుగానే ప్లాన్ చేయండి.
పాత సర్వర్లోని అదే ఎన్కోడింగ్తో యూజర్ మరియు ఖాళీ డేటాబేస్ను సృష్టించండి.
డేటాను బదిలీ చేయడం
అత్యంత సులభమైన మార్గం SSH ద్వారా డంప్, మధ్యలో ఫైల్స్ అవసరం లేదు:
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
MySQL కోసం:
ssh root@OLD 'mysqldump --single-transaction --routines --events -u root shop' \
| mysql -u root shop
రోల్స్ మరియు యూజర్లు డేటాబేస్ డంప్లో చేర్చబడవు — వాటిని విడిగా ఎక్స్పోర్ట్ చేయండి: pg_dumpall --roles-only, లేదా వాటిని మాన్యువల్గా సృష్టించండి — యూజర్లు మరియు గ్రాంట్లు చూడండి.
బ్యాండ్విడ్త్ 500 Mbps వరకు ఉంటుంది, కాబట్టి 20 GB డేటాబేస్ కొన్ని నిమిషాల్లో మైగ్రేట్ అవుతుంది; సాధారణంగా బాటిల్నెక్ డిస్క్ రైట్స్, అవి టియర్ ద్వారా పరిమితం చేయబడతాయి.
మార్చే ముందు ధృవీకరించండి
"సైట్ లోడ్ అయింది" అని మాత్రమే కాకుండా సంఖ్యలను తనిఖీ చేయండి:
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';
కీలక టేబుల్స్లోని రో కౌంట్లను పాత సర్వర్తో పోల్చండి, సీక్వెన్స్లు రీసెట్ కాలేదని తనిఖీ చేయండి (SELECT last_value FROM users_id_seq;), మరియు టెస్ట్ మోడ్లో కొత్త డేటాబేస్పై అప్లికేషన్ను రన్ చేయండి.
మార్పిడి
- పాత సర్వర్పై మెయింటెనెన్స్ మోడ్ను ఎనేబుల్ చేయండి లేదా అప్లికేషన్ను ఆపండి.
- సన్నాహం సమయంలో చేసిన మార్పుల చివరి డంప్ తీసుకోండి.
- దాన్ని కొత్త మెషీన్పై రీస్టోర్ చేయండి.
- అప్లికేషన్ కనెక్షన్ స్ట్రింగ్ను మార్చి సర్వీస్ను రీస్టార్ట్ చేయండి.
- డేటాను తొలగించకుండా పాత సర్వర్ను మరో వారం రన్ చేయండి.
ఐదో స్టెప్పును దాటవేయవద్దు: మూడు రోజుల తర్వాత ఒక టేబుల్ మిస్ అయిందని తెలియడం సాధారణం.
సాధారణ తప్పులు
| లక్షణం | కారణం |
|---|---|
రీస్టోర్ సమయంలో role does not exist | రోల్స్ మైగ్రేట్ చేయలేదు — --no-owner మరియు మాన్యువల్ రోల్ సృష్టిని ఉపయోగించండి |
| అస్పష్టమైన అక్షరాలు | ఎన్కోడింగ్లు సరిపోలలేదు: utf8mb4 లేదా UTF8 ఉన్న డేటాబేస్లో రీస్టోర్ చేయండి |
| సీక్వెన్స్లు 1 నుండి ప్రారంభమవుతాయి | డంప్లో setval లేకుండా డేటా మాత్రమే ఉంది |
| రీస్టోర్ గంటలు పడుతుంది | ఇండెక్స్లు ఆన్-ది-ఫ్లై బిల్డ్ అవుతున్నాయి; పెద్ద డేటాబేస్ల కోసం pg_restore -j 4 ఉపయోగించండి |
| మధ్యలో స్థలం అయిపోయింది | డేటాతో పాటు డంప్ సైజు లెక్కించలేదు |
మైగ్రేట్ చేసే ముందు కొత్త డేటాబేస్
127.0.0.1పై మాత్రమే వినిపిస్తుందని తనిఖీ చేయండి. "మైగ్రేషన్ కాలం పాటు" దాన్ని పబ్లిక్గా ఎక్స్పోజ్ చేయాల్సిన అవసరం లేదు — బదిలీ SSH ద్వారా జరుగుతుంది, రిమోట్ యాక్సెస్ చూడండి.