2009-07-03 16 views
28

का उपयोग कर mysql डेटाबेस का पूरा बैकअप कैसे लें Isqldump का उपयोग कर mysql डेटाबेस का पूर्ण बैकअप कैसे बना सकता हूं? जब मैं बैकअप बना रहा हूं, निर्दिष्ट डेटाबेस से मेरी टेबल केवल बैक अप ले रही हैं। प्रक्रियाओं और कार्यों नहीं हैं।mysqldump कमांड लाइन उपयोगिता

यहाँ बैकअप आदेश मैं उपयोग कर रहा हूँ है:
(ऑपरेटिंग सिस्टम विंडोज विस्टा है।)

mysqldump -u username -p db1 > backup.sql 

उत्तर

12

यह अपने संस्करण पर थोड़ा निर्भर करता है। 5.0.13 से पहले mysqldump के साथ यह संभव नहीं है।

mysqldump आदमी पृष्ठ से

(v 5.1.30)

--routines, -R 

     Dump stored routines (functions and procedures) from the dumped 
     databases. Use of this option requires the SELECT privilege for the 
     mysql.proc table. The output generated by using --routines contains 
     CREATE PROCEDURE and CREATE FUNCTION statements to re-create the 
     routines. However, these statements do not include attributes such 
     as the routine creation and modification timestamps. This means that 
     when the routines are reloaded, they will be created with the 
     timestamps equal to the reload time. 
     ... 

     This option was added in MySQL 5.0.13. Before that, stored routines 
     are not dumped. Routine DEFINER values are not dumped until MySQL 
     5.0.20. This means that before 5.0.20, when routines are reloaded, 
     they will be created with the definer set to the reloading user. If 
     you require routines to be re-created with their original definer, 
     dump and load the contents of the mysql.proc table directly as 
     described earlier. 
0

बैकअप संग्रहित प्रक्रियाओं के लिए प्रयोग करें 'आर', लेकिन यह भी ध्यान में रखना है कि आप अपने डेटाबेस का एक सुसंगत डंप चाहते हैं, जबकि इसकी किया जा रहा है संशोधित आप --single-transaction उपयोग करने की आवश्यकता है (यदि आप केवल बैकअप InnoDB) या --lock-all-tables (यदि आप भी MyISAM तालिकाओं की जरूरत है)

12

इन आदेशों का उपयोग करें: -

mysqldump <other mysqldump options> --routines > outputfile.sql 

हम तो बैकअप करना चाहते हैं केवल संग्रहीत प्रक्रियाओं और ट्रिगर और नहीं mysql तालिकाओं और डेटा तो हम जैसे कुछ चलाना चाहिए:

:

mysqldump --routines --no-create-info --no-data --no-create-db --skip-opt <database> > outputfile.sql 

आप की तरह कुछ चलाने के लिए होगा आप उन्हें किसी अन्य db/सर्वर के लिए आयात करने के लिए की जरूरत है

mysql <database> < outputfile.sql 
--routines ध्वज के अलावा
5

आप बैकअप उपयोगकर्ता अनुमति देने के लिए संग्रहित प्रक्रियाओं को पढ़ने के लिए की आवश्यकता होगी:

GRANT SELECT ON `mysql`.`proc` TO <backup user>@<backup host>; 

मेरे लिए अनुदान विशेषाधिकार के न्यूनतम सेट बैकअप उपयोगकर्ता हैं:

GRANT USAGE ON *.* TO ... 
GRANT SELECT, LOCK TABLES ON <target_db>.* TO ... 
GRANT SELECT ON `mysql`.`proc` TO ... 
+0

अनुदान विशेषाधिकार, यही वह है जो मैं याद कर रहा था! +1 – carla

+0

और साथ ही, अंत में 'फ्लश प्राइवेट्स' को न भूलें। – carla

38

मामले में आप किसी भी कनेक्शन को बाधित किए बिना पूर्ण बैकअप जैसे कि, सभी डेटाबेस, प्रक्रियाओं, दिनचर्या, घटनाओं लेना चाहते हैं।

mysqldump -u <username> -p -A -R -E --triggers --single-transaction > full_backup.sql 
  1. सभी डेटाबेस (भी आप --all-databases उपयोग कर सकते हैं) के लिए -A-।
  2. -R - सभी दिनचर्या के लिए।
  3. -E - सभी घटनाओं के लिए।
  4. - सिंगल-लेनदेन - तालिका को लॉक किए बिना, यानी किसी भी कनेक्शन (आर/डब्ल्यू) में बाधा डाले बिना।

यदि आप केवल डेटाबेस पर बैकअप लेना चाहते हैं।

mysqldump -u <username> -p <Database_Name1><database2> -R -e --triggers --single-transaction > Database_backup.sql 

यदि आप किसी डेटाबेस में किसी विशिष्ट तालिका का बैकअप लेना चाहते हैं।

mysqldump -u <username> -p <database_name> <Table_name> > table_backup.sql 

यदि आप डेटाबेस संरचना का बैकअप लेना चाहते हैं तो केवल पिछले आदेशों में केवल --no-data जोड़ें।

mysqldump -u [username] –p[password] –-no-data [database_name] > [dump_file.sql] 

इसी प्रकार इस टूल के साथ बहुत अधिक विकल्प हैं। निम्नलिखित लिंक में FUrther जानकारी मिल सकती है - mysqldump information

1

मैं MySQL 5.5.40 का उपयोग कर रहा हूं। इस संस्करण में विकल्प --all-databases

mysqldump -u<username> -p<password> --all-databases --events > /tmp/all_databases__`date +%d_%b_%Y_%H_%M_%S`.sql 

यह आदेश MySQL सर्वर में सभी डेटाबेस की एक पूरी बैकअप बनाएगा वर्तमान दिनांक समय के लिए नामित करना होता है।

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