ডাটাবেসের জন্য সহজ বা সম্পূর্ণ পুনরুদ্ধার মডেল?


38

কখন আমার পূর্ণ পুনরুদ্ধার মডেল ব্যবহার করা উচিত এবং কখন ডেটাবেসগুলির জন্য সহজ পুনরুদ্ধার মডেলটি ব্যবহার করা উচিত?

আমি সর্বদা পূর্ণ পুনরুদ্ধার মডেলটি ব্যবহার করি কারণ এটি ডিফল্ট, তবে আজ আমি এই ত্রুটির মুখোমুখি হয়েছি:

এসকিউএল সার্ভারের জন্য মাইক্রোসফ্ট ওএল ডিবি সরবরাহকারী (0x80040E14) ডাটাবেস 'ডেটাবেস নাম' এর লেনদেন লগ পূর্ণ full লগের মধ্যে স্থানটি কেন পুনরায় ব্যবহার করা যাবে না তা জানতে, sys.databases- এ লগ_প্রযুক্তি_উইট_ডেস্ক কলামটি দেখুন

নির্দিষ্ট ডাটাবেসটি আসলে আমার সার্ভারে সবচেয়ে ছোট এবং সবচেয়ে নিষ্ক্রিয় ডাটাবেসগুলির মধ্যে একটি, সুতরাং লগ কীভাবে এই ডেটাবেসে পূর্ণ হতে পারে তা আমি জানিনা, এবং অন্যগুলিও নয়।

লগটি সঙ্কুচিত করতে এবং ডাটাবেসটিকে আবার অ্যাক্সেসযোগ্য করে তুলতে, আমি পুনরুদ্ধারের মডেলটি ফুল থেকে সিমপ্লেতে পরিবর্তন করেছি এবং লজিকাল ফাইল লগটি সঙ্কুচিত করেছি, নিম্নলিখিত কমান্ডের সাহায্যে

alter database myDbName SET recovery simple
go
dbcc shrinkfile('LOG FILE LOGICAL NAME', 100)
go

এটা তোলে সাহায্য করেছিল, কিন্তু এখন আমি বুঝতে পারছি প্রয়োজন কেন এটা সাহায্য করেছে কেমন এই অবস্থায় শুরু কেমন ভবিষ্যতে এই ভাবে প্রতিরোধ করবেন?

সম্পাদনা করুন:

প্রতি রাত 1 টা বাজে, আমরা সার্ভারে প্রতিটি ডাটাবেসের স্ক্রিপ্টযুক্ত ব্যাকআপ করছি। এটি 31 লাইনের স্ক্রিপ্টের মাধ্যমে করা হচ্ছে যেখানে সবচেয়ে গুরুত্বপূর্ণ অংশটি রয়েছে

set @Filename = 'D:\backup\' + convert(varchar, getDate(), 112) + ' - ' + @DBName + '.bak'
set @Description = 'Full backup of database ' + @Filename
BACKUP DATABASE @DBName TO DISK = @Filename WITH INIT , NOUNLOAD , NAME = @Description, NOSKIP , STATS = 10, NOFORMAT

নতুন পুনরুদ্ধার মডেল এবং ডাটাবেসশ্রিংক কি এই স্ক্রিপ্টটির সাথে দ্বন্দ্ব হতে চলেছে?

আমরা ডাটাবেসগুলির অন্য কোনও ধরণের ব্যাকআপ করছি না, এবং তাই লেনদেনের লগগুলি না করে আমাদের করা উচিত?


এখনই লক্ষণীয় কিছু বিষয় হ'ল এটি আজুর এসকিউএল-তে কোনও পছন্দ নয় - এটি সর্বদা সম্পূর্ণ পুনরুদ্ধার ব্যবহার করে। আজিউর.মাইক্রোসফট.এন- ইউএস
ব্লগ

উত্তর:


60

কখন আমার পূর্ণ পুনরুদ্ধার মডেল ব্যবহার করা উচিত এবং কখন ডেটাবেসগুলির জন্য সহজ পুনরুদ্ধার মডেলটি ব্যবহার করা উচিত?

আপনার ডাটাবেসের পয়েন্ট-ইন-টাইম পুনরুদ্ধারের প্রয়োজন হলে আপনার পুরো পুনরুদ্ধার মডেলটি ব্যবহার করা উচিত। আপনার যখন আপনার ডাটাবেসের পয়েন্ট-ইন-টাইম পুনরুদ্ধারের প্রয়োজন না হয় এবং যখন শেষ অথবা সম্পূর্ণ ডিফারেনশিয়াল ব্যাকআপ পুনরুদ্ধারের পয়েন্ট হিসাবে যথেষ্ট তখন আপনার সহজ পুনরুদ্ধার মডেলটি ব্যবহার করা উচিত। (দ্রষ্টব্য: আরও একটি পুনরুদ্ধার মডেল রয়েছে, বাল্ক লগ হয়েছে k বাল্ক-লগড পুনরুদ্ধারের মডেল সম্পর্কে আরও তথ্যের জন্য এই উল্লেখটি দেখুন )

এসকিউএল সার্ভারের জন্য মাইক্রোসফ্ট ওএল ডিবি সরবরাহকারী (0x80040E14) ডাটাবেস 'ডেটাবেস নাম' এর লেনদেন লগ পূর্ণ full লগের মধ্যে স্থানটি কেন পুনরায় ব্যবহার করা যাবে না তা জানতে, sys.databases- এ লগ_প্রযুক্তি_উইট_ডেস্ক কলামটি দেখুন

আপনি যে ত্রুটিটি পেয়েছেন (সম্ভবত সম্ভবত) তা হ'ল কারণ আপনি নিজের লেনদেন লগ ব্যাক আপ করেন নি। যখন এটি ব্যাক আপ করা হয় না, তখন এটি লেনদেনের লগ ফাইলটি শারীরিকভাবে বাড়তে থাকবে (প্রদত্ত অটোগ্রোথ সক্ষম এবং ম্যাক্সেসাইজ অনুমতি দেয়) কারণ এটি লেনদেন লগের কোনও "অংশ" পুনরায় ব্যবহার করতে পারে না (ভার্চুয়াল লগ ফাইলগুলি)। এটি কেবলমাত্র সেই ভিএলএফগুলিকে পুনঃব্যবহারের জন্য চিহ্নিত করতে পারে এবং যখন আপনি কোনও লেনদেন লগ ব্যাকআপ করেন (এবং কোনও সক্রিয় কোনও লেনদেন নয়, কিছু প্রতিরূপের দিক ইত্যাদি) তখন লেনদেনের লগের "মোড়ক-ঘাট" প্রকৃতির অনুমতি দেয়।

লগটি সঙ্কুচিত করতে এবং ডাটাবেসটিকে আবার অ্যাক্সেসযোগ্য করে তুলতে, আমি পুনরুদ্ধারের মডেলটি ফুল থেকে সিমপ্লেতে পরিবর্তন করেছি এবং লজিকাল ফাইল লগটি সঙ্কুচিত করেছি, নিম্নলিখিত কমান্ডের সাহায্যে

......

এটি সাহায্য করেছিল, তবে এখন আমার বুঝতে হবে এটি কেন সাহায্য করেছে, এই পরিস্থিতিটি কীভাবে শুরু হয়েছিল এবং ভবিষ্যতে কীভাবে এটি প্রতিরোধ করা যায়?

এটি আপনাকে সহায়তা করেছে কারণ আপনার ডাটাবেসটিকে সহজ পুনরুদ্ধারের মডেলটিতে সেট করে আপনি এসকিউএল সার্ভারকে বলেছিলেন যে আপনি আর পয়েন্ট-ইন-টাইম পুনরুদ্ধারের বিষয়ে যত্নবান নন, এবং ভার্চুয়াল লগ ফাইলগুলি আর সংরক্ষণের প্রয়োজন নেই এবং সক্রিয় হিসাবে চিহ্নিত করার প্রয়োজন রয়েছে তা নিশ্চিত করার প্রয়োজনীয়তা, এখন একটি চেকপয়েন্ট প্রক্রিয়া এই ভিএলএফগুলিকে নিষ্ক্রিয় হিসাবে চিহ্নিত করেছে।

এই এমএসডিএন রেফারেন্স থেকে নেওয়া অংশ / উদ্ধৃতি :

সরল পুনরুদ্ধারের মডেলের অধীনে, যদি না কোনও উপাদান লগের কাটাকাটি করতে বিলম্ব না করে, একটি স্বয়ংক্রিয় চেকপয়েন্ট লেনদেন লগের অব্যবহৃত অংশটি কেটে দেয়। বিপরীতে, পূর্ণ এবং বাল্ক-লগড পুনরুদ্ধার মডেলগুলির অধীনে, একবার লগ ব্যাকআপ চেইন প্রতিষ্ঠিত হয়ে গেলে, স্বয়ংক্রিয় চেকপয়েন্টগুলি লগের কাটা কাটা ঘটায় না।

তারপরে আপনি একটি দৈহিক ডাটাবেস ফাইল সঙ্কুচিত করেছেন এবং আপনার লেনদেনে লগতে ফাঁকা জায়গা থাকায় এটি এনটিএফএস ফাইলটি শারীরিকভাবে সঙ্কুচিত করতে সক্ষম হয়েছিল।

এতে কিছুটা সময় ব্যয় করার উপযুক্ত পাঠ্য:

  1. পুনরুদ্ধার মডেল
  2. লেনদেন লগ পরিচালনা (গাইল শ)
  3. লগ কাটাটি বিলম্ব করতে পারে এমন উপাদানগুলি

আপনার সম্পাদনার পরে সম্পাদনা করুন :

নতুন পুনরুদ্ধার মডেল এবং ডাটাবেসশ্রিংক কি এই স্ক্রিপ্টটির সাথে দ্বন্দ্ব হতে চলেছে?

এই BACKUP DATABASEআদেশটি পুনরুদ্ধারের মডেলগুলির সাথে কাজ করবে। রুটিন ডাটাবেস সঙ্কুচিত ... এটি করবেন না !!!! গুরুতরভাবে, আপনার ডাটাবেসটিকে সে অনুযায়ী আকার দিন এবং আপনি যদি পুরো পুনরুদ্ধারের মডেলটি ব্যবহার করেন তবে নিশ্চিত করুন যে আপনি কেবল নিয়মিত এবং ঘন ঘন লেনদেন লগ ফাইলগুলি করছেন, কেবলমাত্র লেনদেনের লগের আকারটি উপকারে রাখার জন্য নয়, পুনরুদ্ধারের পয়েন্ট অবজেক্টগুলিও পূরণ করতে পারেন।

আমরা ডাটাবেসগুলির অন্য কোনও ধরণের ব্যাকআপ করছি না, এবং তাই লেনদেনের লগগুলি না করে আমাদের করা উচিত?

যদি আপনার ডাটাবেস পুরো পুনরুদ্ধার মডেলটি ব্যবহার করে, তবে হ্যাঁ আপনার উচিত লেনদেনের লগ ব্যাকআপগুলি করা। যদি আপনার ডাটাবেস সাধারণ পুনরুদ্ধারে থাকে তবে আপনি শারীরিকভাবে কোনও লেনদেন লগ ব্যাকআপ করতে পারবেন না।

কোন পুনরুদ্ধারের মডেলটি ব্যবহার করবেন (সাধারণ বনাম সম্পূর্ণ) আমরা আপনার জন্য সেই সিদ্ধান্ত নিতে পারি না। কেবলমাত্র আপনি, আপনার ব্যবসায়িক দল এবং আপনার এসএলএগুলি পারে।


আপনি এটি যুক্ত করতেও চাইবেন যে আপনি যদি ডাটাবেস মিরর ব্যবহার করে থাকেন তবে আপনার সম্পূর্ণ পুনরুদ্ধার মডেলটি ব্যবহার করা উচিত কারণ এটি মিররটিকে আপডেট রাখতে লগ ফাইলটি ব্যবহার করে।
হলগার

এটি একটি দুর্দান্ত উত্তর ছিল । যে অংশটি আমি বুঝতে পারি না তা হ'ল "পুনরুদ্ধার পয়েন্ট অবজেক্টগুলিও পূরণ করা"। আপনি কি এই বাক্যটি স্পষ্ট করতে আপত্তি করবেন? আমি প্রথমে ভেবেছিলাম যে আপনি "উদ্দেশ্য" লেখার ইচ্ছা করেছিলেন তবে আমি এই ধারণায় নিশ্চিত হতে পারব না।
অ্যান্টনি জি - মনিকা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.