ध्यान दें:निम्नलिखित का केवल मोटे तौर पर परीक्षण किया जाता है, आपके डेटाबेस के आधार पर डंपिंग करते समय विचार करने के लिए और चीजें हो सकती हैं।
यह कुछ खास परिस्थितियों में ही संभव है।
पहली विफलता यह है कि लेन-देन एक सत्र के लिए बाध्य है। चूंकि आप rollback
जारी करने के लिए फिर से कनेक्ट होते हैं , rollback
रोलबैक के लिए कोई लेन-देन नहीं होने के कारण इसका कोई फायदा नहीं है। वह दूसरे सत्र में था।
दूसरी विफलता यह है कि आमतौर पर एक mysqldump में कई कथन होते हैं जो एक अंतर्निहित commit
डालते हैं और इसलिए लेनदेन समाप्त करें। इसमें सभी डीडीएल स्टेटमेंट शामिल हैं (डेटा परिभाषा भाषा, इसमें drop
शामिल है) , alter
, create
और इसी तरह) और साथ ही (un)lock tables
.
इसलिए, एक ही लेन-देन में अपने डंपफ़ाइल को निष्पादित करने के लिए, डंप कुछ इस तरह बनाया जाना चाहिए था:
mysqldump -uuser -ppw database --no-create-info --skip-add-locks --skip-disable-keys --skip-triggers >dumpfiles
--no-create-info
mysqldump सभी drop table ...; create table ...;
बयान।
--skip-add-locks
mysqldump को सभी lock table ...; unlock table ...;
बयान।
--skip-disable-keys
mysqldump को सभी alter table ... disable keys; alter table ...enable keys;
बयान।
--skip-triggers
mysqldump सभी को छोड़ देता है create trigger ...;
बयान।
एक --single-transaction
. भी है विकल्प, लेकिन यह विकल्प केवल एकल तालिकाओं पर लागू होगा।
तीसरी (संभव) विफलता यह है कि एक लेन-देन केवल पूरी तरह से रोलबैक किया जा सकता है, यदि इसमें शामिल सभी टेबल लेनदेन करने में सक्षम हैं, जैसे कि InnoDB या BDB। यदि आपके पास यानी MyISAM टेबल हैं, तो insert
बयान वापस नहीं लिए जाएंगे।
निम्नलिखित विफल रहता है, कारण source
संग्रहित प्रक्रिया में कमांड की अनुमति नहीं है, बल्कि यह mysql क्लाइंट का हिस्सा है।
यदि उस पर विचार किया गया है, तो आप इसे इस तरह कर सकते हैं:
पहले इस तरह की एक प्रक्रिया बनाएं:
DELIMITER $$
CREATE PROCEDURE sp_exec_dumpfile()
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
END ;
START TRANSACTION;
SOURCE '/path/to/dumpfile.sql';
COMMIT;
END $$
DELIMITER ;
फिर इसे अपनी स्क्रिप्ट में इस तरह निष्पादित करें:
mysql -uuser -ppw -hhost databasename -e "CALL sp_exec_dump()"
या निश्चित रूप से आप डंपफाइल नाम के साथ प्रक्रिया को पैरामीटर करते हैं।