यह आलेख SQL सर्वर लॉग शिपिंग की चरण-दर-चरण परिनियोजन प्रक्रिया की व्याख्या करता है। यह डेटाबेस-स्तरीय आपदा पुनर्प्राप्ति समाधान है जिसे स्थापित करना और बनाए रखना आसान है।
लॉग शिपिंग में तीन चरण शामिल हैं:
- प्राथमिक डेटाबेस पर लॉग बैकअप जेनरेट करें।
- बैकअप को नेटवर्क स्थान या द्वितीयक सर्वर पर विशिष्ट निर्देशिका में कॉपी करें।
- लॉग बैकअप को सेकेंडरी सर्वर पर पुनर्स्थापित करें।
लॉग शिपिंग तकनीक SQL सर्वर एजेंट कार्य का उपयोग करके ऊपर वर्णित चरणों को निष्पादित करती है। कॉन्फ़िगरेशन प्रक्रिया के दौरान, लॉग शिपिंग विज़ार्ड उन नौकरियों को प्राथमिक और द्वितीयक सर्वर पर बनाता है।
लॉग शिपिंग दो परिचालन मोड में हो सकती है।
- पुनर्स्थापित मोड . SQL कार्य द्वितीयक डेटाबेस पर हस्तांतरण लॉग बैकअप पुनर्स्थापित करता है। डेटाबेस की स्थिति पुनर्स्थापना है , और यह पहुंच योग्य नहीं है।
- स्टैंडबाय मोड . SQL जॉब द्वितीयक डेटाबेस पर लेन-देन लॉग बैकअप को पुनर्स्थापित करता है, लेकिन डेटाबेस केवल-पढ़ने के लिए मोड में रह सकता है। इसलिए, उपयोगकर्ता इस पर रीड ऑपरेशन कर सकते हैं। इस विकल्प के द्वारा, हम रिपोर्टिंग एप्लिकेशन को ऑफलोड कर सकते हैं।
नोट:स्टैंडबाय मोड में एक खामी है:डेटाबेस पुनर्स्थापना कार्य निष्पादन के दौरान उपलब्ध नहीं है। डेटाबेस से जुड़े सभी उपयोगकर्ताओं को उस प्रक्रिया के दौरान डिस्कनेक्ट करना होगा। अन्यथा, पुनर्स्थापना कार्य में देरी हो सकती है ।
लॉग शिपिंग का मुख्य नुकसान स्वचालित विफलता समर्थन का अभाव है। फ़ेलओवर करने के लिए, आपको निम्न चरणों को निष्पादित करना होगा:
- टेल-लॉग बैकअप जेनरेट करें और इसे सेकेंडरी डेटाबेस सर्वर पर कॉपी करें।
- प्राथमिक सर्वर पर सभी लॉग शिपिंग कार्य रोकें।
- द्वितीयक सर्वर पर लॉग को पुनर्स्थापित करें।
यह प्रक्रिया द्वितीयक डेटाबेस की उपलब्धता में देरी कर सकती है।
अब, हम चरण-दर-चरण परिनियोजन प्रक्रिया परीक्षा के लिए आगे बढ़ते हैं। सबसे पहले, हमने वर्कस्टेशन को निम्न तरीके से सेट करके तैयार किया है:
सर्वर नाम | भूमिका |
SQL01 | प्राथमिक सर्वर |
SQL02 | माध्यमिक सर्वर |
iSCSI\SQL2017 | निगरानी सर्वर |
\\domain\लॉग शिपिंग बैकअप | बैकअप कॉपी करने के लिए नेटवर्क शेयर |
प्राथमिक सर्वर कॉन्फ़िगर करें
SQL01 प्राथमिक सर्वर और डेटाबेस के रूप में कार्य करता है। हम AdventureWorks2017 डेटाबेस के बीच लॉग शिपिंग सेटअप करने जा रहे हैं।
लॉग शिपिंग को कॉन्फ़िगर करने के लिए, SQL01 इंस्टेंस से कनेक्ट करें:
- एसक्यूएल सर्वर प्रबंधन स्टूडियो खोलें
- डेटाबेस का विस्तार करें
- AdventureWorks2017 पर राइट-क्लिक करें
- कार्यों पर होवर करें
- शिप ट्रांजैक्शन लॉग्स पर क्लिक करें।

डेटाबेस गुण डायलॉग बॉक्स खुलता है।
लॉग शिपिंग सक्षम करने के लिए, लॉग शिपिंग कॉन्फ़िगरेशन में इसे प्राथमिक डेटाबेस के रूप में सक्षम करें . पर क्लिक करें विकल्प।
लॉग शिपिंग के लिए लेन-देन लॉग बैकअप शेड्यूल को कॉन्फ़िगर करने के लिए, बैकअप सेटिंग्स . पर क्लिक करें ।

एक डायलॉग बॉक्स, 'ट्रांजेक्शन लॉग बैकअप सेटिंग' खुलता है।
संवाद बॉक्स में, उस नेटवर्क शेयर को निर्दिष्ट करें जहां आप लेन-देन लॉग बैकअप की प्रतिलिपि बनाना चाहते हैं - बैकअप फ़ोल्डर के लिए नेटवर्क पथ पाठ बॉक्स। आप बैकअप अवधारण अवधि का निर्धारण इससे पुरानी फ़ाइलें हटाएं . में कर सकते हैं टेक्स्टबॉक्स में कहा गया है। यदि बैकअप कार्य विफल हो जाता है या बैकअप फ़ाइल टेक्स्टबॉक्स में निर्दिष्ट समय के लिए नहीं आती है, तो SQL सर्वर एक चेतावनी देता है।
लॉग शिपिंग में, SQL सर्वर लॉग फ़ाइल बैकअप को नेटवर्क शेयर में कॉपी करता है। परिनियोजन प्रक्रिया के दौरान विज़ार्ड स्वचालित रूप से एक बैकअप कार्य बनाता है। यह स्वचालित रूप से एक शेड्यूल भी बनाता है, लेकिन आप शेड्यूल बटन पर क्लिक करके इसे बदल सकते हैं।
मेरे मामले में, मैंने इसे पहचानने के लिए बैकअप कार्य का नाम बदल दिया है। कार्य का नाम है LogShipping_Backup_AdventureWorks2017 ।
मैंने कार्य शेड्यूल और बैकअप कंप्रेशन सेटिंग में कोई बदलाव नहीं किया है।

द्वितीयक सर्वर कॉन्फ़िगर करें
द्वितीयक सर्वर और डेटाबेस जोड़ने के लिए, “जोड़ें” . पर क्लिक करें डेटाबेस गुण . पर डायलॉग बॉक्स।

द्वितीयक डेटाबेस सेटिंग . नामक एक संवाद बॉक्स खुलेगा। हमें सेकेंडरी डेटाबेस सर्वर से कनेक्ट होना चाहिए। ऐसा करने के लिए, "जोड़ें" पर क्लिक करें।
एक डायलॉग बॉक्स खुलता है। सर्वर का नाम दर्ज करें और कनेक्ट करें . क्लिक करें :

द्वितीयक डेटाबेस सेटिंग कॉन्फ़िगरेशन
द्वितीयक डेटाबेस प्रारंभ करें
इनिशियलाइज़ सेकेंडरी डेटाबेस टैब में, आप डेटाबेस को पुनर्स्थापित करने के लिए निम्नलिखित तीन विकल्पों में से कोई भी सेट कर सकते हैं:
- यदि डेटाबेस द्वितीयक सर्वर पर मौजूद नहीं है, तो आप एक पूर्ण बैकअप उत्पन्न कर सकते हैं और इसे द्वितीयक सर्वर पर पुनर्स्थापित कर सकते हैं। इस परिदृश्य में, आप पहले विकल्प का उपयोग कर सकते हैं।
- यदि अन्य बैकअप कार्यों द्वारा उत्पन्न डेटाबेस का पूर्ण बैकअप है, या आपके पास पहले से ही एक है, तो आप इसे द्वितीयक सर्वर पर पुनर्स्थापित कर सकते हैं। इस परिदृश्य में, आप दूसरा विकल्प चुन सकते हैं।
- यदि आपने NORECOVERY स्थिति के साथ द्वितीयक डेटाबेस को पुनर्स्थापित किया है, तो आप तीसरा विकल्प चुन सकते हैं।

फ़ाइलें कॉपी करें
फ़ाइलें कॉपी करें . पर टैब पर, आप प्रतिलिपि की गई बैकअप फ़ाइलों के स्थान के लिए गंतव्य निर्देशिका निर्दिष्ट कर सकते हैं। अवधारण अवधि भी वहां परिभाषित की गई है।
विज़ार्ड गंतव्य निर्देशिका में फ़ाइलों की प्रतिलिपि बनाने के लिए SQL कार्य बनाता है। बैकअप गंतव्य फ़ोल्डर \\domain\Log शिपिंग बैकअप है। प्रतिलिपि कार्य का नाम है LogShipping_Copy_SQL01_AdventureWorks2017 ।

लेन-देन लॉग पुनर्स्थापित करें
लेनदेन लॉग पुनर्स्थापित करें . में टैब, आप डेटाबेस मोड निर्दिष्ट कर सकते हैं। यदि आप डेटाबेस को केवल-पठन मोड में रखना चाहते हैं, तो स्टैंडबाय मोड . चुनें या कोई पुनर्प्राप्ति मोड नहीं . चुनें ।
इस डेमो में, हम डेटाबेस स्थिति को NORECOVERY के रूप में रखते हैं। आप बैकअप बहाली विलंब निर्दिष्ट कर सकते हैं और एक निर्दिष्ट अंतराल के भीतर पुनर्स्थापित नहीं किए गए बैकअप के लिए अलर्ट कॉन्फ़िगर कर सकते हैं। हमारे मामले में, हम डिफ़ॉल्ट सेटिंग्स का उपयोग नहीं करते हैं।
पुनर्स्थापना कार्य का नाम है LogShipping_Restore_SQL01_AdventureWorks2017।

कॉन्फ़िगरेशन तैयार होने के बाद, परिवर्तनों को सहेजने के लिए ठीक क्लिक करें।
जैसा कि आप देख रहे हैं, द्वितीयक सर्वर और डेटाबेस को “सेकेंडरी सर्वर इंस्टेंस और डेटाबेस ग्रिड में जोड़ा गया है। ” डेटाबेस गुण . पर स्क्रीन।

निगरानी इंस्टेंस कॉन्फ़िगर करें
यदि आप मॉनिटर सर्वर इंस्टेंस को कॉन्फ़िगर करना चाहते हैं, तो मॉनिटर सर्वर इंस्टेंस का उपयोग करें के लिए एक चेकमार्क लगाएं . मॉनिटर इंस्टेंस जोड़ने के लिए, सेटिंग . क्लिक करें ।

हम लॉग शिपिंग के मॉनिटरिंग सर्वर के रूप में iscsi\SQL2017 इंस्टेंस का उपयोग करने जा रहे हैं।
लॉगिन शिपिंग मॉनिटर सेटिंग . में संवाद बॉक्स में, नाम निर्दिष्ट करें सर्वर आवृत्ति की निगरानी करें टेक्स्ट बॉक्स।
हम सा . का उपयोग करते हैं लॉग शिपिंग की निगरानी के लिए खाता। इसलिए, आपको सा . प्रदान करने की आवश्यकता है उपयोगकर्ता नाम और पासवर्ड के रूप में। आप निगरानी अलर्ट और इतिहास की अवधारण अवधि भी निर्दिष्ट कर सकते हैं।
यहां, हम डिफ़ॉल्ट सेटिंग्स का उपयोग करते हैं। अलर्ट कार्य का नाम है LogShipping_Alert_iscsi\sql2017 ।
कॉन्फ़िगरेशन को सहेजने और संवाद बॉक्स को बंद करने के लिए ठीक क्लिक करें।

आप स्क्रिप्ट कॉन्फ़िगरेशन . पर क्लिक करके संपूर्ण कॉन्फ़िगरेशन के लिए एक T-SQL स्क्रिप्ट जेनरेट कर सकते हैं बटन। या तो कॉन्फ़िगरेशन स्क्रिप्ट को क्लिपबोर्ड या फ़ाइल में कॉपी करें या इसे एक नई क्वेरी संपादक विंडो में खोलें।

हम कार्रवाई को स्क्रिप्ट आउट नहीं करना चाहते हैं। आप इस चरण को अनदेखा कर सकते हैं।
लॉग शिपिंग कॉन्फ़िगरेशन को सहेजने के लिए ठीक क्लिक करें, और प्रक्रिया शुरू हो जाएगी:

एक बार लॉग शिपिंग कॉन्फ़िगर हो जाने पर, आप सफलता संवाद बॉक्स देख सकते हैं:

परीक्षण विफलता परिदृश्य
USE [AdventureWorks2017]
GO
CREATE TABLE [Person](
[BusinessEntityID] [int] NOT NULL,
[PersonType] [nchar](2) NOT NULL,
[NameStyle] [dbo].[NameStyle] NOT NULL,
[Title] [nvarchar](8) NULL,
[FirstName] [dbo].[Name] NOT NULL,
[MiddleName] [dbo].[Name] NULL,
[LastName] [dbo].[Name] NOT NULL,
[Suffix] [nvarchar](10) NULL,
[EmailPromotion] [int] NOT NULL,
[ModifiedDate] [datetime] NOT NULL,
CONSTRAINT [PK_Person_BusinessEntityID] PRIMARY KEY CLUSTERED
(
[BusinessEntityID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
डेमो डेटा डालने के लिए निम्न क्वेरी निष्पादित करें:
insert into [Person]([BusinessEntityID],[PersonType],[NameStyle],[Title],[FirstName] ,[MiddleName],[LastName] ,[Suffix] ,[EmailPromotion],[ModifiedDate])
select top 10 [BusinessEntityID],[PersonType],[NameStyle],[Title],[FirstName] ,[MiddleName],[LastName] ,[Suffix] ,[EmailPromotion],[ModifiedDate]
from Person.Person
फ़ेलओवर करने के लिए, एडवेंचरवर्क्स2017 डेटाबेस का टेल-लॉग बैकअप लें। निम्नलिखित क्वेरी निष्पादित करें:
Backup Log adventureworks2017 to disk='\\domain\LogShippingBackups\Tail_Log_Backup.trn' with norecovery
SQL02 (सेकेंडरी सर्वर) से कनेक्ट करें और RECOVERY के साथ RESTORE का उपयोग करके टेल लॉग बैकअप को पुनर्स्थापित करें। निम्नलिखित कोड निष्पादित करें:
RESTORE LOG [AdventureWorks2017] FROM DISK = N'\\domain\LogShippingBackups\Tail_Log_Backup.trn' WITH RECOVERY
एक बार जब टेल-लॉग बैकअप सफलतापूर्वक पुनर्स्थापित हो जाता है, तो यह सत्यापित करने के लिए क्वेरी निष्पादित करें कि डेटा द्वितीयक सर्वर पर कॉपी किया गया है:
Select * from person
क्वेरी आउटपुट:

जैसा कि आप देखते हैं, डेटा द्वितीयक सर्वर पर पुनर्स्थापित हो जाता है।
निष्कर्ष
इस लेख में, हमने SQL सर्वर लॉग शिपिंग प्रक्रिया और इसे कॉन्फ़िगर करने के तरीके के बारे में बताया है। हमने लॉग शिपिंग की चरण-दर-चरण विफलता प्रक्रिया का भी प्रदर्शन किया।