আমি কীভাবে কোনও এসকিউএল সার্ভার লগ ফাইলের আকার সঙ্কুচিত করব


10

আমি কীভাবে ডাটাবেসগুলির এলডিএফ ফাইলের আকার সঙ্কুচিত করতে পারি তা বুঝতে পারি না।

ডিবিএ বলছে আমার ব্যবহার করা উচিত backup log dbname with truncate_only

এবং এটি দেখে মনে হচ্ছে এটি এসকিউএল কোয়েরি অ্যানালাইজারে সঠিকভাবে সম্পাদিত হয়েছে ldf ফাইলটি এখনও 2 জিবি-র বেশি।

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


নিশ্চয়ই এটি একটি সদৃশ প্রশ্ন?
জেমসআরয়ান

আমি তাকিয়েছিলাম এবং কেবলমাত্র এমন একজনকে খুঁজে পেলাম যা যখন শ্রিনফলিল ব্যর্থ হয় সে সম্পর্কে একটি প্রশ্ন জিজ্ঞাসা করেছিল। সময়টি এটির কোনও অর্থ হয়নি, তাই আমি এই প্রশ্নটি পোস্ট করেছি। আমি প্রশ্নটি মুছে ফেলার বিষয়টি বিবেচনা করেছি কিন্তু তখন আমি অনুভব করেছি যে একই নৌকায় আরও কয়েকজন রয়েছেন। আপনি যদি একটি সদৃশ প্রশ্ন (এটি আসলে একই প্রশ্নটি অনুরূপ জিজ্ঞাসা করে) খুঁজে পেতে পারেন তবে আমি এইটি মুছে ফেললে খুশি হব।
রন টফিন

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

উত্তরটি খুব ডাটাবেসের পুনরুদ্ধারের বিকল্পের উপর নির্ভর করে: সহজ বা পূর্ণ?
রিচার্ড

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

উত্তর:


11

ওহ, হোরর! দয়া করে লোকেদের তাদের লগ ফাইলগুলি সঙ্কুচিত করা উচিত বলা বন্ধ করুন!

আপনি যদি এই পরিস্থিতিতে নিজেকে জোগাড় করে থাকেন তবে নিম্নলিখিতগুলির মধ্যে একটির সম্ভাবনা খুব সম্ভবত:

  1. আপনার ডাটাবেসটি পুরো পুনরুদ্ধার মোডে রয়েছে এবং এটি সত্যই সরল মোডে থাকা উচিত
  2. আপনার ডাটাবেসটি পুরো পুনরুদ্ধার মোডে রয়েছে এবং আপনার নিয়মিত লগ ব্যাকআপ নেওয়া উচিত
  3. আপনার ডাটাবেস পূর্ণ পুনরুদ্ধার মোডে রয়েছে এবং কোনও কারণে আপনার লগ ব্যাকআপ ব্যর্থ হচ্ছে
  4. আপনি প্রচুর পরিমাণে লেনদেন চালাচ্ছেন যা লগ ফাইলটিকে বিশাল আকারে বহন করে

এগুলির প্রত্যেকের উত্তর নিম্নরূপ:

যদি (1) হয়, তবে সাধারণ মোডে ডাটাবেসটি স্যুইচ করুন
যদি (2), তবে নিয়মিত লগ ব্যাকআপগুলি সময় নির্ধারণ করুন
যদি (3), তবে আপনার নির্ধারিত লগ ব্যাকআপগুলি
যদি (4) ঠিক করেন তবে কেবল এটি করবেন না :) পরিবর্তে, করুন ছোট ব্যাচে কাজ।

মনে রাখবেন যে এগুলির কোনওটির জন্যই ট্রান্সকেট_অনলির সাথে ব্যাকআপ লগ ডিবি নাম ("অবহেলিত) ব্যবহার করা দরকার"

পরিবর্তে, একবার আপনি উপরের কোনও কৌশল ব্যবহার করে লগ ফাইল সাফ করুন, তারপরে (এখন খালি) লগটি সঙ্কুচিত করুন:

DBCC SHRINKFILE ('log logical name', 2000)

সর্বদা একটি যুক্তিসঙ্গত চূড়ান্ত আকার নির্দিষ্ট করুন, অন্যথায় এটি কমিয়ে প্রায় 0 এ নেমে যাবে এবং পরবর্তী সময় এটি প্রয়োজন হলে বাড়ার জন্য সময় নিতে হবে।


এটি খুব খারাপ গ্রহণযোগ্য উত্তরটি এত তাড়াতাড়ি ছিল। সাক্ষাত্কারের সময় এসকিউএল অ্যাডমিনগুলিকে আগাছা কাটাতে আমি এই প্রশ্নগুলির মধ্যে একটি। যদি তারা ট্র্যাঙ্কেট_অনলি ব্যাকআপ নিয়ে ফিরে আসে তবে ব্যাট থেকে ২ স্ট্রাইক হিসাবে গণনা করা হবে।
জিম বি

2
আমি সম্মত হই যে এটি করা সর্বশেষ কাজ, ফাইলটি সঙ্কুচিত করুন। সঠিক রক্ষণাবেক্ষণ এটির জন্য প্রয়োজনীয়তা রক্ষা করে। তবে এটি একবার বড় হয়ে গেলে আপনি এটি আরও ছোট করতে চান, আপনাকে এটি সঙ্কুচিত করতে হবে। যাইহোক, সঙ্কুচিত করার সময়, ফাইলটি যতটা সম্ভব সঙ্কুচিত করা ভাল, তারপরে 8 জিবি ইনক্রিমেন্টে ফাইলটি সঠিক আকারে বাড়ানো উচিত। এটি ফাইলটিতে ভিএলএফ সংখ্যাটি অনুকূল করে তুলবে। দেখুন - sqlskills.com/BLOGS/KIMBERLY/post/…
ব্রায়ান নাইট 17

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

4

"ট্র্যাঙ্কেট_অনলি উইথ ব্যাকআপ" করার পরে আপনার সঙ্কুচিত হওয়ার জন্য নিম্নলিখিত কমান্ডটি দেওয়া উচিত

dbcc SHRINKFILE (logfilename,shrink_tosize)

যেমন

dbcc SHRINKFILE (mydatabase_Log,512)

3

আপনি উপরে লিখিত স্ক্রিপ্টটি পুনরায় ব্যবহারের জন্য লগ সামগ্রীগুলি চিহ্নিত করবে। এই স্ক্রিপ্টটি এর সাথে অনুসরণ করুন:

USE <database>;

DBCC SHRINKFILE (<log logical file name>)

এটি আপনার জন্য এটি সঙ্কুচিত করবে।

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