2009-03-29 14 views
8

डेटाबेस निषिद्ध रूप से बड़े (> 400 एमबी) हैं, इसलिए डंप> एससीपी> स्रोत घंटों और घंटों का काम साबित हो रहा है।एक बॉक्स से दूसरे बॉक्स में एक MySQL सर्वर माइग्रेट करना

वहाँ एक आसान तरीका है? क्या मैं सीधे डीबी से कनेक्ट कर सकता हूं और नए सर्वर से आयात कर सकता हूं?

उत्तर

12

आप बस पूरे/डेटा फ़ोल्डर की प्रतिलिपि बना सकते हैं।

मैं mysql के साथ ऐसा करने के साथ कोई अनुभव नहीं है High Performance MySQL - transferring large files

+0

चीयर्स, यह बहुत बेहतर है। –

+0

वह लिंक मृत प्रतीत होता है। हालांकि, मैंने जो किया है वह यहां है। स्रोत पर टर्मिनल में कूदें और 'my.cnf का पता लगाएं' टाइप करें। फ़ाइल को अपने एफएवी टेक्स्ट एडिटर (vi /etc/mysql/my.cnf) में खोलें और "datadir =" पंक्ति ठीक करें। तो आपको बस इतना करना है कि इसे अपने लक्षित सर्वर पर दोहराएं। अब आपको स्रोत पर उस फ़ोल्डर की सामग्री को संपीड़ित करना चाहिए और इसे लक्ष्य पर FTP करना चाहिए। फिर इसे डेटा डीआईआर में बस अनजिप करें। – Jason

0

पर एक नज़र डालें, लेकिन मेरे लिए यह टोंटी वास्तविक डेटा स्थानांतरित कर रहा है लगता है?

4oo एमबी है कि बहुत कुछ। लेकिन अगर डंप -> एससीपी धीमा है, तो मुझे नहीं लगता कि हटाए गए बॉक्स से डीबी सर्वर से कनेक्ट करना कोई तेज़ होगा?

मैं डंपिंग, संपीड़न, फिर नेटवर्क पर प्रतिलिपि बनाने या डिस्क पर जलने और डेटा को मैन्युअल रूप से स्थानांतरित करने का सुझाव दूंगा। इस तरह के डंप को संपीड़ित करने से आपको काफी अच्छा संपीड़न दर मिल जाएगी, सबसे अधिक संभावना है कि बहुत सारे दोहराव वाले डेटा हैं।

4

आप सेटअप एक MySQL दास प्रतिकृति सकता है और MySQL डेटा की प्रतिलिपि, और फिर गुलाम नया मास्टर

1

mysql कंसोल का उपयोग कर नए सर्वर पर डंप आयात करने का प्रयास करते हैं, न कि एक auxiliar सॉफ्टवेयर

0

यदि आप केवल सर्वर के सभी डेटाबेस कॉपी कर रहे हैं, तो संपूर्ण /data निर्देशिका कॉपी करें।

  1. नए सर्वर में खाली डेटाबेस, उपयोगकर्ताओं आदि के लिए
  2. अनुमतियां सेट अप बनाने कॉपी:

    तुम सिर्फ एक या अधिक डेटाबेस को कॉपी करने और उन्हें एक मौजूदा mysql सर्वर से जोड़ रहे हैं नए सर्वर /data/databasename

2

400M के लिए /data/databasename में डेटाबेस के लिए फ़ोल्डर वास्तव में एक बड़ी डेटाबेस नहीं है, इसे किसी अन्य मशीन में स्थानांतरित करने से केवल 100 एमबी नेटवर्क पर कुछ मिनट लगेंगे। यदि आपके मशीनों के बीच 100 एम नेटवर्क नहीं हैं, तो आप एक बड़ी परेशानी में हैं!

यदि वे MySQL का सटीक संस्करण चला रहे हैं और समान (या समान ENOUGH) my.cnf है और आप बस पूरे डेटा की प्रतिलिपि चाहते हैं, तो सर्वर की संपूर्ण डेटा निर्देशिका को कॉपी करना सुरक्षित है (दोनों उदाहरण स्पष्ट रूप से बंद कर दिए गए हैं)। आपको निश्चित रूप से लक्ष्य मशीन की डेटा निर्देशिका को हटाना होगा, लेकिन आपको शायद इसकी परवाह नहीं है।

बैकअप/पुनर्स्थापना आमतौर पर फ़ाइल प्रतिलिपि के बजाय तालिका संरचना को पुनर्निर्माण करने के लिए बहाली द्वारा धीमा कर दिया जाता है। सीधे डेटा फ़ाइलों की प्रतिलिपि बनाकर, आप इससे बचें (ऊपर वर्णित सीमाओं के अधीन)।

+0

वे दुखद रूप से एक ही कोलो में नहीं हैं। –

+0

400 एमबी बड़ा नहीं है, और एससीपी संपीड़न प्रदान करता है। अभ्यास में यह लगभग 2 × तेज है। –

6

उपयोग एसएसएच का उपयोग सीधे इंटरनेट पर अपने डेटा को पाइप करने के लिए कर सकते हैं। पहले पासवर्ड-कम लॉगिन के लिए एसएसएच कुंजी सेट अप करें।इसके बाद, कुछ इस तरह का प्रयास करें:

$ mysqldump -u db_user -p some_database | gzip | ssh [email protected] 'gzip -d | mysql -u db_user --password=db_pass some_database' 

नोट्स:

  • मूल विचार है कि आप बस सीधे दूसरी तरफ एक आदेश है, जो SSH लिए एकदम सही है में मानक आउटपुट डंपिंग कर रहे हैं।
  • यदि आपको एन्क्रिप्शन की आवश्यकता नहीं है तो आप नेटकैट का उपयोग कर सकते हैं लेकिन शायद यह इसके लायक नहीं है
  • एसक्यूएल टेक्स्ट डेटा वायर संपीड़ित हो जाता है!
  • जाहिर है, उपयोगकर्ता डेटाबेस और some_database पर अपने उपयोगकर्ता के लिए db_user बदलें। someuser (लिनक्स) सिस्टम उपयोगकर्ता है, MySQL उपयोगकर्ता नहीं।
  • आपको --password का लंबा सफर तय करना होगा क्योंकि mysql संकेत होने पर आपको बहुत सी सिरदर्द होगी।
+2

आपको एसएसएच का उपयोग करने की आवश्यकता नहीं है। आप बस कर सकते हैं: mysqldump -u db_user -p some_database | mysql -u db_user -p -h newserver some_database –

+0

अच्छा बिंदु, धन्यवाद! – JasonSmith

+1

लेकिन माइस्क्ल में दूरस्थ पहुंच अक्षम करना आम है, कम से कम जहां से मैं हूं। जबकि एसएसएच आसानी से उपलब्ध है। सिद्धांत में यह सही अनुदान दिया जा सकता है, लेकिन एसएसएच जवाब मेरे लिए सबसे यथार्थवादी उपयोग मामला है। –

2

यदि आप किसी सर्वर माइग्रेट कर रहे हैं:

डंप फ़ाइलों बहुत बड़ा हो सकता है, तो यह बेहतर है भेजने से पहले यह सेक या SCP की -सी झंडा उपयोग करने के लिए। फ़ाइलों को स्थानांतरित करने की हमारी पद्धति एक पूर्ण डंप बनाने के लिए है, जिसमें वृद्धिशील लॉग फ़्लश किए जाते हैं (उपयोग --master-data = 2 --flush लॉग, कृपया जांचें कि यदि आपके पास है तो आप किसी भी गुलाम होस्ट को गड़बड़ नहीं करते हैं)। फिर हम डंप की प्रतिलिपि बनाते हैं और इसे खेलते हैं। इसके बाद हम फिर से लॉग फ़्लश करते हैं (mysqladmin फ्लश-लॉग), हालिया वृद्धिशील लॉग लें (जो बहुत बड़ा नहीं होना चाहिए) और केवल इसे खेलें। आखिरी वृद्धिशील लॉग बहुत छोटा होने तक इसे जारी रखें ताकि आप मूल मशीन पर डेटाबेस को रोक सकें, अंतिम वृद्धिशील लॉग की प्रतिलिपि बनाएँ और फिर इसे चलाएं - इसमें केवल कुछ मिनट लग सकते हैं।

तुम सिर्फ एक सर्वर से दूसरे में डेटा कॉपी करना चाहते हैं:

mysqldump -C --host=oldhost --user=xxx --database=yyy -p | mysql -C --host=newhost --user=aaa -p 

आप db उपयोगकर्ताओं को ठीक से सेट और बाह्य मेजबान के लिए पहुँच प्रदान करने की आवश्यकता होगी।

0

मुझे पुराने सर्वर से अपने डेटाबेस को निर्यात करने के बाद बिगडंप: स्टैगर्डेड माइस्क्ल डंप आयातक का उपयोग करना पसंद है।

http://www.ozerov.de/bigdump/

एक बात हालांकि नोट करने के लिए, आप निर्यात विकल्प (अर्थात् बनाया प्रश्नों की अधिकतम लंबाई) लोड अपने नए सर्वर संभाल कर सकते हैं करने के लिए संबंधित सेट नहीं है, यह सिर्फ असफल और आप करेंगे विभिन्न मानकों के साथ फिर से प्रयास करना होगा। व्यक्तिगत रूप से, मैंने लगभग 25,000 तक मेरा सेट किया, लेकिन यह सिर्फ मुझे है। इसे थोड़ा सा परीक्षण करें और आपको इसका लटका मिल जाएगा।

संबंधित मुद्दे