এসকিউএল সার্ভার 2008 R2 সঙ্কুচিত করার পরে ম্যানুয়ালি লগ ফাইলের আকার সেট করুন


10

তাদের সময়ে কাজ করে কিছুটা অনৈচ্ছিক ডিবিএ হয়ে যাচ্ছি এবং সত্যিই কোনও কিছুর জন্য কিছু সহায়তা দরকার।

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

আমার সমস্যাটি হ'ল আমি চাই না যে লগ ফাইলটি কোনওভাবেই সঙ্কুচিত না হয়ে এবং সোমবারের প্রথম সকালে ক্রমাগত বাড়ার জন্য ব্যয় করা উচিত। ফাইলটি কী হওয়া উচিত তার সম্পর্কে আমার মোটামুটি অনুমান (প্রায় 20% ডাটাবেস) এবং যতটা সম্ভব সংকীর্ণ স্থান নিশ্চিত করার জন্য এটি get-go থেকে সেট করতে চাই। এটি কি কেবল ডাটাবেস সম্পত্তি -> ফাইলগুলির আওতায় "প্রাথমিক আকার" পরিবর্তন করার ঘটনা? আমি পাশাপাশি অনুমান করব যে এটি হওয়ার জন্য ডাটাবেসটি অফলাইন থাকা দরকার?

আগাম ধন্যবাদ


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

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

1
@ কেনেথ তাই আপনি যদি মধ্যরাতে একটি পূর্ণ ব্যাকআপ করেন, তবে 12:05 এ একটি লগ ব্যাকআপ পেয়েছি, আমি এটি বেশ উদ্বুদ্ধ মনে করি। YMMV।
অ্যারন বারট্র্যান্ড

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

2
@ কেনেথ তবে আপনি যদি কেবল একবার লগে ব্যাক আপ করেন তবেই এটি প্রথম স্থানে রয়েছে! আপনি যদি গতকাল 12:07 AM পুনরুদ্ধার করতে চান, আপনার 2 মিনিট পুনরুদ্ধার করতে পুরো দিনের জন্য পুরো লগটি লোড করতে হবে। খুব দরকারী না।
অ্যারন বার্ট্র্যান্ড

উত্তর:


6

আপনি যা ভাবেন সেটিকে সর্বাধিক সঙ্কুচিত করুন size ইউআই ব্যবহার করবেন না, কেবল এটি করুন - ধরা যাক 200 এমবি আপনার অনুকূল আকার:

USE yourdb;
GO
DBCC SHRINKFILE(yourdb_log, 200);

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

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


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

12

আপনার ফাইল পরিচালনা সম্পূর্ণ অনলাইন অপারেশন হতে পারে। আপনার পুনরুদ্ধারের উদ্দেশ্যে আপনার লগ তথ্য বজায় রাখার প্রয়োজনীয়তার উপর নির্ভর করে আপনার দুটি পথ রয়েছে:

পয়েন্ট ইন সময় পুনরুদ্ধারের প্রয়োজন হয় না

  1. ডাটাবেসটিকে SIMPLEপুনরুদ্ধারে রূপান্তর করুন । ডিস্কে লেনদেন লেখার জন্য একটি চেকপয়েন্ট কার্যকর করুন।
  2. লগ সমতল করুন।
  3. লগটিকে উপযুক্ত আকারে পুনরায় আকার দিন।

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

ব্যবহার সম্পন্ন:

ALTER DATABASE [foo] 
SET RECOVERY SIMPLE;

CHECKPOINT;

DBCC SHRINKFILE (foo_log,0);

ALTER DATABASE [foo]
MODIFY FILE (NAME=foo_log,SIZE=8000MB,MAXSIZE=UNLIMITED,FILEGROWTH=1000MB);

--Optional if you want the database in full recovery mode 
--for point in time recovery going forward
ALTER DATABASE [foo] 
SET RECOVERY FULL;

সময় পুনরুদ্ধারের প্রয়োজন পয়েন্ট

সবচেয়ে বড় হ্যাঙ্গআপটি হ'ল আপনি বর্তমানে সক্রিয় ভিএলএফ বিভাগের মাধ্যমে লগ ফাইল সঙ্কুচিত করতে পারবেন না। এটি দেখতে আপনি DBCC LOGINFOডাটাবেস প্রসঙ্গে ব্যবহার করতে পারেন । স্থিতি = 2 সহ যে কোনও বিভাগ সক্রিয়। সক্রিয় বিভাগগুলি সাফ করার জন্য, যখন কোনও বিভাগে এই বিভাগে সক্রিয় নেই তখন আপনাকে লেনদেনের লগ ব্যাকআপ চালাতে হবে। আপনার পদক্ষেপগুলি হ'ল:

  1. লেনদেনের লগ ব্যাকআপ চালান।
  2. আপনার ফাইল সঙ্কুচিত করুন। (আদর্শভাবে সমতল, তবে যদি আপনার ডাটাবেস সক্রিয় থাকে তবে এটি করা শক্ত হবে)।
  3. আপনার লগটি উপযুক্ত আকার হিসাবে যতক্ষণ না সম্ভব আদর্শ ততক্ষণ 1 এবং 2 পদক্ষেপটি পুনরাবৃত্তি করুন।
  4. লগটিকে উপযুক্ত আকারে পুনরায় আকার দিন।

ব্যবহার সম্পন্ন:

BACKUP LOG [foo] TO DISK='<Location of t-log backup>';

DBCC SHRINKFILE (foo_log,0);

--Repeat the above until your log file is small "enough"

ALTER DATABASE [foo]
MODIFY FILE (NAME=foo_log,SIZE=8000MB,MAXSIZE=UNLIMITED,FILEGROWTH=1000MB);

এখানে কী চলছে তা বোঝার জন্য কিছু অতিরিক্ত সংস্থান:


2

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

USE [DBName]
GO
DBCC SHRINKFILE (N'LogName' , SizeInMg)
GO

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


2

সাধারণ মোড সম্পর্কে হারুনের উত্তরের পরিপূরক হিসাবে , আপনি প্রতিদিন 2 (বা আরও) ডিফারেনশিয়াল ব্যাকআপগুলি নির্ধারণ করতে পারেন, এই পদ্ধতিতে সিম্পল মোডটি ধরে রাখার সময় আপনার ডাটাবেস অপারেশনের ডেটা লস উইন্ডো হ্রাস করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.