Skip to content
VDS · डेटाबेस

दूसरे सर्वर से डेटाबेस शिफ्ट करना

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;), और ऐप्लिकेशन को टेस्ट मोड में नए डेटाबेस पर चलाएँ।

स्विचओवर

  1. पुराने सर्वर पर मेंटेनेंस मोड चालू करें या ऐप्लिकेशन बंद करें।
  2. तैयारी के दौरान हुए बदलावों का अंतिम डंप लें।
  3. इसे नई मशीन पर रीस्टोर करें।
  4. ऐप्लिकेशन का कनेक्शन स्ट्रिंग बदलें और सर्विस रीस्टार्ट करें।
  5. पुराने सर्वर को डेटा डिलीट किए बिना एक हफ़्ते और चलता रहने दें।

पाँचवाँ स्टेप न छोड़ें: तीन दिन बाद कोई टेबल गायब मिलना आम बात है।

आम गलतियाँ

लक्षणकारण
रीस्टोर के दौरान role does not existरोल माइग्रेट नहीं हुए — --no-owner के साथ मैन्युअल रोल क्रिएशन इस्तेमाल करें
अक्षर बिगड़े हुएएनकोडिंग में अंतर: utf8mb4 या UTF8 वाले डेटाबेस में रीस्टोर करें
सीक्वेंस 1 से शुरू हो रहे हैंडंप में सिर्फ़ डेटा था, setval नहीं
रीस्टोर में घंटों लग रहे हैंइंडेक्स तुरंत बन रहे हैं; बड़े डेटाबेस के लिए pg_restore -j 4 इस्तेमाल करें
बीच में स्पेस खत्म हो गयाडेटा के साथ डंप के साइज़ का हिसाब नहीं रखा गया

माइग्रेट करने से पहले जाँचें कि नया डेटाबेस सिर्फ़ 127.0.0.1 पर लिसन करता है। “माइग्रेशन के दौरान” इसे सार्वजनिक रूप से खोलने की ज़रूरत नहीं है — ट्रांसफ़र SSH के ज़रिए होता है, देखें रिमोट एक्सेस।