2011-06-08 14 views
10

MySQL स्कीमा (टेबल, डेटा, सब कुछ) को एक सर्वर से दूसरे स्थानांतरित करने का सबसे आसान तरीका क्या है?MySQL - सब कुछ एक नए सर्वर पर ले जाएं

क्या यह एक आसान तरीका है जो एक सर्वर से mysql पर चल रहा है, जो पहले से ही mysql चला रहा है?

+0

निर्यात और आयात? –

+0

ये इन आदेशों में निर्मित हैं? मैं इसके लिए नया ब्रांड हूं। – FozzieBeer

+0

यदि आपके पास उपयोग किए जा रहे सर्वरों पर सीपीनल, प्लसेक इत्यादि जैसे किसी भी प्रकार का कंट्रोल पैनल है, तो संभावना है कि आपके पास phpMyAdmin तक पहुंच है जिसमें निर्यात और आयात सुविधाएं हैं। –

उत्तर

6

डेटाबेस को या तो mysqldump का उपयोग करके या यदि आप PHPMyAdmin का उपयोग कर रहे हैं तो संरचना और डेटा निर्यात करें।

mysqldump के लिए आप कंसोल की आवश्यकता होती है और निम्न आदेश का उपयोग करेगा: अन्य सर्वर में फिर

mysqldump -u <user> -p -h <host> <dbname> > /path/to/dump.sql

:

mysql -u <user> -p <dbname> < /path/to/dump.sql

+0

धन्यवाद है, मैं Google mysqldump – FozzieBeer

+0

पर आपके लिए सिंटैक्स जोड़ चुका हूं - मैं यह जांच दूंगा कि अब – lethalMango

+0

धन्यवाद, मेरे पास खोल पहुंच है। – FozzieBeer

4

आप एक ही वास्तुकला से स्थानांतरित कर रहे हैं एक ही आर्किटेक्चर (x86-> x86, x86_64 -> x86_64) पर, आप बस एक सर्वर से दूसरे सर्वर पर अपने MySQL डेटादिर को rsync कर सकते हैं। जाहिर है, आपको यह नहीं चलाना चाहिए जबकि आपका पुराना MySQL डिमन चल रहा है।

यदि आपके डेटाबेस InnoDB- आधारित हैं, तो आप यह सुनिश्चित करना चाहते हैं कि आपकी InnoDB लॉग फ़ाइलों को शुद्ध कर दिया गया है और फ़ाइलों को कॉपी करने से पहले उनकी सामग्री डिस्क पर विलय हो गई है। आप इसे innodb_fast_shutdown से 0 पर सेट कर सकते हैं (डिफ़ॉल्ट 1 है, जो डिस्क पर लॉग फ़्लश नहीं करेगा), जो अगले सर्वर शटडाउन पर लॉग फ़ाइल को फ़्लश करने का कारण बनता है। आप रूट के रूप में MySQL पर लॉग ऑन करके ऐसा कर सकते, और MySQL खोल में, कार्य करें:

SET GLOBAL innodb_fast_shutdown=0

या अपने my.cnf में विकल्प सेट करने और सर्वर को पुन: प्रारंभ परिवर्तन में खींचने के लिए, तब तक लॉग फ्लश करने के लिए बंद कर दिया।

की तरह कुछ कार्य करें: आप वाकई डेटाबेस बनाने के लिए mysql_upgrade [-p your_root_password] चलाने के लिए चाहते हो सकता है

#On old server (notice the ending slash and lack thereof, it's very important) 
rsync -vrplogDtH /var/mysql [email protected]:/var/mysql/ 
#Get your my.cnf 
scp /etc/my.cnf [email protected]:/etc/my.cnf 

उसके बाद अप-टू-डेट।

मैं कहूंगा कि यह मेरे लिए (हाल ही में) अतीत में (पुराने सर्वर से दूसरे स्थान पर चल रहा है, दोनों फ्रीबीएसडी 8.x) में चल रहा है, लेकिन वाईएमएमवी अतीत में कितने संस्करण थे, इस पर निर्भर करता है।

+0

मैं ऐसा करता हूं, बहुत सी छोटी चीजें हैं जो गलत हो सकती हैं, खासकर अगर इनो डीबी टेबल हैं। मैं इस तरह के एक कार्य के लिए [Percona's xtrabackup] (http://www.percona.com/docs/wiki/percona-xtrabackup:start) का उपयोग करने का सुझाव दूंगा। – Wrikken

+0

अफसोस की बात है कि आर्किटेक्चर अलग है, हालांकि मुझे यकीन है कि अन्य इस सलाह की सराहना करेंगे। – FozzieBeer

+0

@Wrikken क्या आप इस विधि का उपयोग कर ** क्या * गलत हो सकते हैं पर किसी भी दस्तावेज के बारे में जानते हैं? मेरा मानना ​​है कि (बहुत कम चीजें हैं जो _could_ गलत हो जाती हैं), लेकिन मैं सोच रहा था कि इस तरह ऐसा नहीं करने के बारे में एक निश्चित सूची थी या नहीं। – bhamby

10

आप उपयोग कर रहे हैं SSH कुंजियां:

$ mysqldump --all-databases -u[user] -p[pwd] | ssh [host/IP] mysql -u[user] -p[pwd] 

आप SSH कुंजियों का उपयोग नहीं कर रहे हैं:

$ mysqldump --all-databases -u[user] -p[pwd] | ssh [email protected][host/IP] mysql -u[user] -p[pwd] 

चेतावनी: आपको लग रहा से बचने के लिए किसी को भी इस के बाद अपना इतिहास साफ़ करना चाहेंगे कि आपके पासवर्ड।

$ history -c 
+0

यह मेरे लिए एक आकर्षण की तरह काम करता था, सभी नए डेटाबेस को वास्तव में मेरे नए सिस्टम में कॉपी करता था !! –

+0

एसएसबी कुंजी के उपयोग से संबंधित "उपयोगकर्ता @" को कैसे जोड़ रहा है? बस उत्सुक। – Equidamoid

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