2010-12-10 29 views
12

मेरे पास रूट पहुंच के साथ दो समर्पित सर्वर हैं। दोनों लिनक्स चल रहे हैं। मैं सर्वर 1 से सर्वर 2 में डेटाबेस आयात करना चाहता हूं। मैंने पहले से ही सर्वर 2 पर एक खाली डेटाबेस बनाया है। मैं लिनक्स कमांड जानना चाहता हूं जिसके माध्यम से मैं सीधे डेटाबेस आयात कर सकता हूं? क्या ऐसी सुविधा है? क्या मैं mysqldump का उपयोग कर सकता हूँ? मैं पहले सर्वर 1 पर डेटाबेस बैकअप लेने से बचाना चाहता हूं, फिर उस फ़ाइल को सर्वर 2 पर ले जाना चाहता हूं, और उसके बाद उस फ़ाइल को आयात करना चाहता हूं। आयात कुछ कमांड का उपयोग कर सीधे किया जा सकता है?एक सर्वर से दूसरे सर्वर पर MySQL डेटाबेस आयात करना

धन्यवाद

+0

+1 मैं उसी संदेश के लिए देख रहा हूं –

उत्तर

13

आप एक फ़ाइल बनाने, यह स्थानांतरित करने, और यह लोड हो रहा से बचने के लिए चाहते हैं, तो आप कर सकते हैं में सिर्फ पाइप mysqldump या तो एक mysql अन्य सर्वर पर चल रहा है, या अन्य सर्वर पर एक ssh mysql।

दूरदराज के बॉक्स से कनेक्ट करने के mysql का उपयोग करना:

mysqldump --all-databases | mysql -h yourserver.com 

ssh का उपयोग अन्य सर्वर

mysqldump --all-databases | ssh [email protected] mysql 

उपयोग mysqldump --all-डेटाबेस से कनेक्ट करने के लिए उन्हें सभी हस्तांतरण करने के लिए, या बस डेटाबेस नाम निर्दिष्ट करें। अधिक विकल्पों के लिए mysqldump documentation का संदर्भ लें।

आप MySQL "प्रतिकृति" सुविधा का भी उपयोग कर सकते हैं, हालांकि इसे सेटअप करने में थोड़ा और समय लगेगा, और यह मुश्किल है। शायद एक ही माइग्रेशन के लिए हर समय और परेशानी के लायक नहीं है।

+0

उत्तर के लिए धन्यवाद लेकिन मुझे थोड़ा उलझन में है कि क्या करना है। क्या आप विस्तार से बता सकते हैं? मेरा मतलब है कि मैं एसएसएच के माध्यम से कनेक्ट करने के बाद सर्वर 1 पर सर्वर कमांड और सर्वर 2 पर दूसरा कमांड चलाऊंगा? – Ali

+1

अली: आप सर्वर 1 पर दोनों आदेश चला सकते हैं। पहला आदेश एक MySQL कनेक्शन को सर्वर 2 खोल देगा (इसका नाम '-h' के बाद रखें)। दूसरा आदेश सर्वर 2 पर एक एसएसएच कनेक्शन खोल देगा, और सर्वर 2 पर 'mysql' के इनपुट के रूप में सर्वर 1 पर' mysqldump' से आउटपुट का उपयोग करके 'mysql' क्लाइंट एप्लिकेशन चलाएगा। इसलिए, डेटाबेस स्थानांतरित करना। – Konerak

1
mysqldump –add-drop-table –extended-insert –force –log-error=error.log -uUSER -pPASS OLD_DB_NAME | ssh -C [email protected] “mysql -uUSER -pPASS NEW_DB_NAME” 

एक संपीड़ित SSH सुरंग के ऊपर एक MySQL डेटाबेस डम्प्स और mysql के लिए इनपुट के रूप में यह उपयोग करता

source

2
पहले सर्वर पर

बंद करो mysqld, डेटा निर्देशिका कॉपी (आमतौर पर/var/lib/mysql) सर्वर 1 से सर्वर 2 तक, दूसरे सर्वर पर mysqld शुरू करें, और यह अब पहले के समान होगा।

यदि आप डेटा फ़ाइलों की प्रतिलिपि बनाते समय सर्वर को रोक सकते हैं तो आपको आयात/निर्यात उपकरण का उपयोग करने की आवश्यकता नहीं है। विशेष रूप से यदि आप उन्हें कॉपी करने से पहले फ़ाइलों को संपीड़ित कर सकते हैं, तो यह सबसे तेज़ तरीका होगा।

+0

यदि आपके पास एक ही संस्करण है तो यह समाधान सबसे अच्छा है। –

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