কেন লেনদেন লগ বাড়তে থাকে বা স্থান কমিয়ে দেয়?


264

এটি বেশিরভাগ ফোরামে এবং সমস্ত ওয়েব জুড়ে একটি সাধারণ প্রশ্ন বলে মনে হয়, এখানে এখানে অনেকগুলি ফর্ম্যাটে জিজ্ঞাসা করা হয় যা সাধারণত এটির মতো শব্দ হয়:

এসকিউএল সার্ভারে -

  • লেনদেনের লগ এত বড় হওয়ার কিছু কারণ কী?
  • আমার লগ ফাইলটি এত বড় কেন?
  • এই সমস্যাটি থেকে রোধ করার কয়েকটি উপায় কী?
  • অন্তর্নিহিত কারণটির সাথে আমি নিজেকে ট্র্যাক এড়াতে এবং আমার লেনদেনের লগ ফাইলটিকে একটি স্বাস্থ্যকর আকারে রাখতে চাইলে আমি কী করব?

4
সত্যিই সংক্ষিপ্ত উত্তরটি হ'ল: সিম্পল মোডে ডাটাবেস রাখুন ( সম্পূর্ণ মোড নয়)। আপনি যদি আপনার পুরো রাত্রে ব্যাকআপের মাঝে দিনের সময় একাধিক লেনদেন লগ ব্যাকআপগুলি না করেন: আপনার পূর্ণ মোডের দরকার নেই ।
ইয়ান বয়ড

@ আইয়ানবয়েড - অবশ্যই এটি সহজতম উত্তর। চাবিকাঠি, যদিও, এর মানে হচ্ছে। আমি উত্তরে এটি আঘাত। দুঃখের বিষয় হচ্ছে অনেক লোক হয় হয় না এটিকে সম্বোধন করে বা কেবল বুঝতে না পেরে সরল দিকে চলে যায়। আমি আমার উত্তরটি সম্পাদনা করবো কিছুটা আগে সাধারণ মোডে আঘাত করার জন্য, যদিও ..
মাইক ওয়ালশ

ডাটাবেসটি যদি পুরো মোডে সেট করা থাকে তবে একটি সম্পূর্ণ ব্যাক আপ নিন এবং তারপরে একটি লেনদেনের লগ ব্যাকআপ নিন his এটি এলডিএফ ফাইলের আকারটি কমিয়ে আনতে হবে f পাশাপাশি সঙ্কুচিত অপারেটিওনও না করা হয় ((সঙ্কুচিত হওয়ার প্রস্তাব দেওয়া হয় না)। তবুও ফাইলের আকারটি বড়, এলডিএফ ফাইলের জন্য প্রাথমিক আকারের সেটটি পরীক্ষা করে দেখুন my আমার ক্ষেত্রে প্রাথমিক এলডিএফ ফাইলের আকার বড় ছিল।
ব্যবহারকারী 9516827

@ ব্যবহারকারী 9516827 একটি সম্পূর্ণ ব্যাকআপ গ্রহণ এবং তারপরে একটি লগ ব্যাকআপ লগ ফাইলের আকার একেবারেই হ্রাস করবে না - লগ ব্যাকআপ কেবল পুনরায় ব্যবহারের জন্য উপলব্ধ ফাইলের মধ্যে ব্যবহৃত স্থান তৈরি করে। এবং যদি আপনি কিছু পরিবর্তন না করেন তবে এটি কেবল আবার ঘটতে চলেছে, সুতরাং সঙ্কুচিত হওয়ার পরে এটির পরে আবার বাড়ার কোনও অর্থ হয় না।
হারুন বারট্রান্ড

উত্তর:


321

একটি সংক্ষিপ্ত উত্তর:

আপনার সম্ভবত হয় একটি দীর্ঘ চলমান লেনদেন চলছে (সূচক রক্ষণাবেক্ষণ? বিগ ব্যাচ মুছুন বা আপডেট?) অথবা আপনি "ডিফল্ট" (ডিফল্ট বলতে কী বোঝায় তার নীচে আরও) নীচে রয়েছেন Fullএবং লগ ব্যাকআপ নেননি (বা তাদের ঘন ঘন যথেষ্ট গ্রহণ করা হয় না)।

যদি এটি পুনরুদ্ধারের মডেল সমস্যা হয় তবে আপনার সহজ উত্তর হ'ল Simpleযদি আপনার পুনরুদ্ধারের মোডে সময় পুনরুদ্ধার এবং নিয়মিত লগ ব্যাকআপের প্রয়োজন না হয়। যদিও অনেক লোক পুনরুদ্ধারের মডেলগুলি না বুঝে তাদের উত্তরটি তৈরি করে। কেন এটি গুরুত্বপূর্ণ তা বুঝতে পড়ুন এবং তারপরে আপনি কী করবেন তা স্থির করুন। আপনি কেবল লগ ব্যাকআপ নেওয়া শুরু করতে এবং Fullপুনরুদ্ধারে থাকতে পারেন ।

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


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

শীর্ষ কারণ ১/২: রিকভারি মডেলগুলি বোঝা যাচ্ছে না

( সম্পূর্ণ পুনরুদ্ধার মোডে থাকা এবং লগ ব্যাকআপ গ্রহণ না করা - এটি সর্বাধিক সাধারণ কারণ - যারা এই সমস্যাটি নিয়েছেন তাদের বেশিরভাগই হ'ল ))

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

এসকিউএল সার্ভারে তিনটি পুনরুদ্ধার মডেল রয়েছে :

  • Full,
  • Bulk-Logged এবং
  • Simple

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

আমরা যে দুটি বিষয় যত্ন নিয়েছি এবং তাদের বিভ্রান্তি হ'ল এই সমস্যাটি রয়েছে তার বেশিরভাগ লোকের কারণ Simpleএবং Full

অন্তর্বর্তীকরণ: সাধারণভাবে পুনরুদ্ধার

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

  1. ক্র্যাশ / পুনঃসূচনা পুনরুদ্ধার
    লেনদেনের লগ ফাইলের একটি উদ্দেশ্য ক্রাশ / পুনরুদ্ধার পুনরুদ্ধারের জন্য । রোল ফরোয়ার্ড এবং রোলিং পিছনের কাজের জন্য যা হয় ক্রাশ হওয়ার আগে পুনরায় চালু (পুনরায় ফিরানো / পুনরায় করা) এবং ক্র্যাশ বা পুনরায় চালু হওয়ার পরে শেষ করা হয়নি এমন কাজ শুরু হয়েছে (রোলিং ব্যাক / পূর্বাবস্থায়)। কোনও লেনদেন শুরু হলেও কখনই শেষ হয়নি (লেনদেনের আগে সংঘটিত হওয়া বা ক্রাশ / পুনঃসূচনা ঘটেছিল) তা লেনদেনের লগের কাজ। এই পরিস্থিতিতে পুনরুদ্ধারের সময় "আরে .. এটি আসলে শেষ হয়নি, আসুন এটি আবার রোল করুন" বলা লগের কাজ । আপনি কিছু শেষ করেছেন এবং আপনার ক্লায়েন্টের অ্যাপ্লিকেশনটি এটি শেষ হয়ে গেছে (এমনকি এটি এখনও আপনার ডেটা ফাইলটিতে কঠোর না করে থাকলেও) দেখুন এবং লগের কাজ এটিও দেখুন"আরে .. এটি সত্যই ঘটেছে, আসুন এটিকে এগিয়ে নিয়ে আসা যাক, অ্যাপ্লিকেশনগুলি এটির মতো মনে করি" পুনরায় শুরু করার পরে। এখন আরও আছে তবে এটিই মূল উদ্দেশ্য।

  2. পয়েন্ট ইন টাইম রিকভারি
    লেনদেনের লগ ফাইলের অন্য উদ্দেশ্যটি হ'ল একটি ডাটাবেসে "ওফস" এর কারণে আমাদের সময়মতো পুনরুদ্ধার করার ক্ষমতা প্রদান করা বা একটি হার্ডওয়্যার ব্যর্থতার ক্ষেত্রে পুনরুদ্ধারের পয়েন্টের গ্যারান্টি দেওয়া ডেটাবেস এবং / অথবা লগ ফাইল একটি ডেটাবেস জড়িত। যদি এই লেনদেন লগটিতে লেনদেনের রেকর্ড থাকে যা পুনরুদ্ধারের জন্য শুরু এবং শেষ হয়েছে, তবে এসকিউএল সার্ভার এই তথ্যটি কোনও সমস্যা হওয়ার আগে যেখানে ছিল সেখানে একটি ডাটাবেস পেতে এটি ব্যবহার করতে পারে এবং করতে পারে। তবে এটি আমাদের জন্য সর্বদা উপলভ্য বিকল্প নয়। এটি কাজ করার জন্য আমাদের আমাদের সঠিক ডাটাবেসটি পুনরুদ্ধারের মডেলে থাকতে হবে এবং আমাদের লগ ব্যাকআপ নিতে হবে ।

পুনরুদ্ধার মডেল

পুনরুদ্ধার মডেলগুলিতে:

  • সাধারণ পুনরুদ্ধার মডেল
    তাই উপরোক্ত ভূমিকাটির সাথে Simple Recoveryপ্রথমে মডেল সম্পর্কে কথা বলা সবচেয়ে সহজ । এই মডেলটিতে, আপনি এসকিউএল সার্ভারকে বলছেন: "ক্র্যাশ এবং পুনরুদ্ধার পুনরুদ্ধার করার জন্য আপনার লেনদেনের লগ ফাইলটি ব্যবহার করে আমি আপনার সাথে ভাল আছি ..." (আপনার সত্যিই কোনও বিকল্প নেই AC এসিডি বৈশিষ্ট্যগুলি অনুসন্ধান করুন এবং এটি দ্রুত বোঝা উচিত)) "... তবে একবার ক্র্যাশ / পুনরুদ্ধার পুনরুদ্ধারের উদ্দেশ্যে আপনার আর এটির দরকার পরে না, এগিয়ে যান এবং লগ ফাইলটি পুনরায় ব্যবহার করুন" "

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

  • সম্পূর্ণ পুনরুদ্ধার মডেল
    সহ Full Recovery, আপনি এসকিউএল সার্ভারকে বলছেন যে আপনি যখনই লগ ফাইলটি উপলব্ধ থাকবেন বা নির্দিষ্ট সময়ে একটি নির্দিষ্ট বিন্দুতে যা লগ ব্যাকআপের আওতাভুক্ত থাকবে আপনি নির্দিষ্ট সময়ে পুনরুদ্ধার করতে সক্ষম হতে চান। এই ক্ষেত্রে যখন এসকিউএল সার্ভার এমন পর্যায়ে পৌঁছে যায় যেখানে সরল রিকভারি মডেলটিতে লগ ফাইলটি কাটা নিরাপদ হবে, এটি তা করবে না। পরিবর্তে এটি লগ ফাইলটিকে আরও বাড়তে দেয় এবং সাধারণ পরিস্থিতিতে আপনি লগ ব্যাকআপ না নিলে (বা আপনার লগ ফাইল ড্রাইভের জায়গার বাইরে চলে যায়) অবধি বাড়তে দেয় keep

সিম্পল থেকে ফুলে স্যুইচিংয়ে একটি গোচা রয়েছে।

এখানে নিয়ম এবং ব্যতিক্রম রয়েছে। আমরা নীচে গভীরভাবে দীর্ঘ চলমান লেনদেন সম্পর্কে কথা বলব।

তবে পূর্ণ পুনরুদ্ধার মোডের জন্য মনে রাখার একটি সতর্কতা হ'ল: আপনি যদি কেবল Full Recoveryমোডে স্যুইচ করেন তবে কখনও কখনও প্রাথমিক ফুল ব্যাকআপ না নেন , এসকিউএল সার্ভার আপনার Full Recoveryমডেল হওয়ার অনুরোধটিকে সম্মান করবে নাSimpleআপনি সম্পূর্ণ পুনরুদ্ধার মডেলটিতে স্যুইচ না করে এবং আপনার প্রথমটি না নেওয়া পর্যন্ত আপনার লেনদেন লগটি যেমন চলছে তেমন চলতে থাকবে Full Backup

লগ ব্যাকআপ ব্যতীত সম্পূর্ণ রিকভারি মডেলটি খারাপ।

সুতরাং, এটি অনিয়ন্ত্রিত লগ বৃদ্ধির সর্বাধিক সাধারণ কারণ? উত্তর: কোনও লগ ব্যাকআপ না রেখে পূর্ণ পুনরুদ্ধার মোডে থাকা।

মানুষের সর্বদা এটি হয় ।

কেন এত সাধারণ ভুল?

কেন সব সময় ঘটে? কারণ প্রতিটি নতুন ডাটাবেস মডেল ডাটাবেস দেখে তার প্রাথমিক পুনরুদ্ধার মডেল সেটিংস পায়।

মডেলের প্রাথমিক পুনরুদ্ধারের মডেল সেটিং সর্বদা থাকে Full Recovery Model- যতক্ষণ না কেউ পরিবর্তন করে না। সুতরাং আপনি বলতে পারেন "ডিফল্ট রিকভারি মডেল" Full। অনেক লোক এ সম্পর্কে অবগত নয় এবং তাদের ডেটাবেসগুলি Full Recovery Modelলগ ব্যাকআপ ব্যতীত চলছে এবং তাই লেনদেনের লগ ফাইলটি প্রয়োজনের চেয়ে অনেক বড়। এই কারণেই যখন তারা আপনার সংস্থা এবং এর প্রয়োজনগুলির জন্য কাজ করে না তখন খেলাপিগুলি পরিবর্তন করা গুরুত্বপূর্ণ)

খুব কম লগ ব্যাকআপ সহ পূর্ণ রিকভারি মডেলটি খারাপ।

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

আমার কী লগ ব্যাকআপ ফ্রিকোয়েন্সি দরকার তা আমি কীভাবে খুঁজে বের করব?

দুটি বিষয় মাথায় রেখে আপনার লগ ব্যাকআপ ফ্রিকোয়েন্সিটি বিবেচনা করতে হবে:

  1. পুনরুদ্ধারের প্রয়োজন - এটি আশা করা উচিত প্রথম হওয়া উচিত। আপনার লেনদেনের লগটি ড্রাইভ করে এমন ঘটনা বা আপনি মারাত্মক দুর্নীতিগ্রস্থ হন যা আপনার লগ ব্যাকআপকে প্রভাবিত করে, কতটা ডেটা হারিয়ে যেতে পারে? যদি এই সংখ্যাটি 10-15 মিনিটের বেশি না হয়, তবে আপনাকে আলোচনার শেষে প্রতি 10-15 মিনিটে লগ ব্যাকআপ নেওয়া উচিত।
  2. লগ গ্রোথ - যদি আপনার সংস্থাটি সহজেই সেই দিনটি পুনরায় তৈরি করার দক্ষতার কারণে আরও ডেটা হারাতে জরিমানা হয় তবে আপনি 15 মিনিটের চেয়ে খুব কম ঘন ঘন লগ ব্যাকআপ নেওয়া ভাল fine আপনার সংস্থাটি প্রতি 4 ঘন্টা অন্তর ভাল হতে পারে। তবে আপনাকে দেখতে হবে 4 ঘন্টা আপনি কতগুলি লেনদেন তৈরি করেন। এই চার ঘন্টার মধ্যে লগটি বাড়তে দেয় কি লগ ফাইলকে আরও বড় করে তুলবে? এর অর্থ কি আপনার লগ ব্যাকআপগুলি খুব বেশি সময় নিবে?

শীর্ষ কারণ 2/2: দীর্ঘ চলমান লেনদেন

( "আমার পুনরুদ্ধারের মডেলটি ঠিক আছে! লগটি এখনও বাড়ছে! )

এটি অনিয়ন্ত্রিত এবং অনিয়ন্ত্রিত লগ বৃদ্ধির কারণও হতে পারে। পুনরুদ্ধারের মডেলটি কোনও ব্যাপার না, তবে এটি প্রায়শই "তবে আমি সাধারণ পুনরুদ্ধারের মডেলটিতে আছি - আমার লগ কেন এখনও বাড়ছে ?!"

এখানে কারণটি সহজ: এসকিউএল যদি পূর্বে বর্ণিত হিসাবে পুনরুদ্ধারের উদ্দেশ্যে এই লেনদেন লগটি ব্যবহার করে থাকে, তবে এটি লেনদেনের শুরুতে ফিরে দেখতে হবে।

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

এর অর্থ হ'ল একটি বড় মুছুন, এক মুছে ফেলার বিবরণীতে কয়েক মিলিয়ন সারি মুছে ফেলা হ'ল একটি লেনদেন এবং সম্পূর্ণ মোছার কাজটি শেষ না হওয়া পর্যন্ত লগ কোনও ছাঁটাই করতে পারে না। ইন Full Recovery Model, এই মুছুনটি লগইন করা হয় এবং এটি লগের অনেক রেকর্ড হতে পারে। রক্ষণাবেক্ষণ উইন্ডোর সময় সূচক অপ্টিমাইজেশনের কাজ একই জিনিস। এর অর্থ হ'ল দুর্বল লেনদেন পরিচালনা এবং উন্মুক্ত লেনদেনের সন্ধান করা এবং বন্ধ না করা আপনাকে এবং আপনার লগ ফাইলকে সত্যই ক্ষতি করতে পারে।

দীর্ঘ এই চলমান লেনদেন সম্পর্কে আমি কী করতে পারি?

আপনি এখানে নিজেকে বাঁচাতে পারবেন:

  • আপনার রক্ষণাবেক্ষণ বা জ্ঞাত বৃহত ক্রিয়াকলাপগুলির মতো - সবচেয়ে খারাপ পরিস্থিতির জন্য আপনার লগ ফাইলকে সঠিকভাবে আকার দিন। এবং আপনি যখন আপনার লগ ফাইলটি বড় করেন তখন কিম্বার্লি ট্রিপ দ্বারা এই নির্দেশিকাটি (এবং তিনি আপনাকে যে দুটি লিঙ্ক আপনাকে প্রেরণ করেন) সন্ধান করা উচিত । রাইট সাইজিং এখানে সুপার সমালোচনা।
  • আপনার লেনদেনের ব্যবহার দেখছেন। আপনার অ্যাপ্লিকেশন সার্ভারে কোনও লেনদেন শুরু করবেন না এবং এসকিউএল সার্ভারের সাথে দীর্ঘ কথোপকথন শুরু করবেন না এবং ঝুঁকি নিয়ে খুব বেশি সময় খোলা থাকবে।
  • আপনার ডিএমএল স্টেটমেন্টগুলিতে নিহিত লেনদেনগুলি দেখছেন । যেমন: UPDATE TableName Set Col1 = 'New Value'একটি লেনদেন। আমি BEGIN TRANসেখানে রাখিনি এবং আমার দরকার নেই, এটি এখনও একটি লেনদেন যা হয়ে গেলে স্বয়ংক্রিয়ভাবে প্রতিশ্রুতিবদ্ধ। সুতরাং যদি প্রচুর সংখ্যক সারিগুলিতে অপারেশন করা হয় তবে সেই ব্যবস্থাগুলি আরও পরিচালনাযোগ্য অংশগুলিতে বাছাই করা এবং লগটিকে পুনরুদ্ধার করার জন্য সময় দেওয়ার বিষয়টি বিবেচনা করুন। অথবা এটি মোকাবেলার জন্য সঠিক আকার বিবেচনা করুন। অথবা সম্ভবত একটি বাল্ক লোড উইন্ডোর সময় পুনরুদ্ধার মডেলগুলি পরিবর্তন করা দেখুন।

এই দুটি কারণ লগ শিপিংয়ের ক্ষেত্রেও প্রযোজ্য?

সংক্ষিপ্ত উত্তর: হ্যাঁ নীচে দীর্ঘ উত্তর।

প্রশ্ন: "আমি লগ শিপিং ব্যবহার করছি, তাই আমার লগ ব্যাকআপগুলি স্বয়ংক্রিয় হয় ... আমি কেন এখনও লেনদেনের লগ বৃদ্ধি দেখছি?"

উত্তর: পড়ুন।

লগ শিপিং কি?

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

  • একটি সার্ভারে লগ ব্যাকআপ করার একটি কাজ,
  • একটি কাজ যে লগ ব্যাকআপ অনুলিপি এবং
  • গন্তব্য সার্ভারে পুনরুদ্ধার ( NORECOVERYবা হয় STANDBY) ছাড়াই এটিকে পুনরুদ্ধার করার কাজ ।

আপনার পরিকল্পনা অনুসারে যদি জিনিসগুলি না যায় তবে নজরদারি এবং সতর্ক করার জন্য কিছু কাজও রয়েছে।

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


স্থিতি কোডের মাধ্যমে সাধারণ সমস্যার সমাধান

এই দুটি ব্যতীত অন্য কারণ রয়েছে তবে এগুলি সর্বাধিক সাধারণ। কারণ নির্বিশেষে: এই অব্যক্ত লগ বৃদ্ধির / কাটা কাটার অভাবের জন্য আপনি নিজের কারণ বিশ্লেষণ করতে এবং সেগুলি কী তা দেখুন।

sys.databasesক্যাটালগ ভিউ জিজ্ঞাসা করে আপনি আপনার লগ ফাইলটি কাটা / পুনরায় ব্যবহারের অপেক্ষায় থাকতে পারে তার কারণ বর্ণনা করে তথ্য দেখতে পারেন।

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

  • 0 = এটি যা মনে হচ্ছে কিছুই
    নয় .. অপেক্ষা করা উচিত নয়

  • 1 = চেকপয়েন্ট
    একটি চেকপয়েন্ট ঘটতে অপেক্ষা করছে। এটি হওয়া উচিত এবং আপনার ভাল হওয়া উচিত - তবে পরবর্তী উত্তরগুলি বা সম্পাদনাগুলির জন্য এখানে সন্ধানের জন্য কয়েকটি কেস রয়েছে।

  • 2 = লগ ব্যাকআপ
    আপনি লগ ব্যাকআপ হওয়ার জন্য অপেক্ষা করছেন। হয় আপনার এগুলির নির্ধারিত রয়েছে এবং এটি শীঘ্রই ঘটবে, অথবা আপনার এখানে বর্ণিত প্রথম সমস্যা রয়েছে এবং এখন আপনি কীভাবে এটি ঠিক করবেন তা আপনি জানেন

  • 3 = সক্রিয় ব্যাকআপ বা পুনরুদ্ধার
    ডাটাবেসে একটি ব্যাকআপ বা পুনরুদ্ধার অপারেশন চলছে

  • 4 = সক্রিয় লেনদেন
    এখানে একটি সক্রিয় লেনদেন রয়েছে যা লগ ব্যাক আপ করার আগে (যে কোনও উপায়ে - ROLLBACKবা COMMIT) সম্পন্ন করা দরকার। এই উত্তরে বর্ণিত এটিই দ্বিতীয় কারণ।

  • 5 = ডেটাবেস মিররিং
    হয় একটি আয়না একটি উচ্চ পারফরম্যান্স মিররিংয়ের পরিস্থিতিতে পিছনে বা কিছুটা বিলম্বের মধ্যে চলেছে বা মিররিংটি কোনও কারণে বিরতি দেওয়া হয়েছে

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

  • 7 = ডাটাবেস স্ন্যাপশট তৈরি
    আপনি একটি ডাটাবেস স্ন্যাপশট তৈরি করছেন, আপনি যদি স্ন্যাপশট তৈরি হচ্ছে ঠিক ঠিক মুহূর্তে তাকান তবে আপনি এটি দেখতে পাবেন

  • 8 = লগ স্ক্যান
    আমার চিরকাল ধরে চলতে থাকা নিয়ে এখনও কোনও সমস্যা দেখা দিতে পারে নি। আপনি যদি যথেষ্ট পর্যাপ্ত এবং ঘন ঘন যথেষ্ট দেখতে পান তবে আপনি এটি ঘটতে দেখতে পাচ্ছেন, তবে এটি আমি দেখেছি যে অতিরিক্ত লেনদেনের লগ বৃদ্ধির কারণ হওয়া উচিত নয়।

  • 9 = একটি সর্বদা উপলভ্যতা গোষ্ঠীগুলির মাধ্যমিক প্রতিলিপিটি এই ডাটাবেসের লেনদেন লগ রেকর্ডটিকে সংশ্লিষ্ট মাধ্যমিক ডাটাবেসে প্রয়োগ করছে। পরিষ্কার বর্ণনা সম্পর্কে ..


1
পৃষ্ঠা বিভাজন লগিং বৃদ্ধি করবে। একটি উল্লেখযোগ্য কারণ (আমার অভিজ্ঞতায়) যা বড় বর্ধনের জন্য উল্লেখ করা হয়নি যা আমার ঘন ঘন সঙ্কুচিত হতে পারে যা আমার ক্ষেত্রে প্রচুর সমাধান হয়ে গেছে যথাযথ ফিলফ্যাক্টর এমজিএমটি সহ সঠিক সূচক পছন্দগুলি ব্যবহার করা। আমি নিবিড় পর্যবেক্ষণ সহ নীচের সেটিংসটি ব্যবহার করি। এফএফ সেটিংস: (0/100) উচ্চ-পঠিত / নিম্ন রাইটস সহ সারণী, (90) সামান্য পরিবর্তিত, (80) মাঝারি-পাঠ / কম-মেড লেখেন, (70) উচ্চ-লেখেন, (60) আমি খুব কমই এ পর্যন্ত পৌঁছনাম স্তর বা অন্য কিছু ভুল হতে পারে। এরপরে সঠিকভাবে ইনডেক্স ম্যানেজমেন্টের শিডিয়ুলগুলি ডেটা ভলিউমের সাথে মিলে যায়।
স্ন্যাপজ্যাগ

113

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

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

প্রথমে পুরো ব্যাকআপ নিন

কোনও কিছু ভুল হয়ে যাওয়ার পরে আপনি এটি পুনরুদ্ধার করতে পারবেন তা নিশ্চিত করে কখনও আপনার ডাটাবেসে কোনও পরিবর্তন করবেন না make

আপনি যদি পয়েন্ট-ইন-টাইম পুনরুদ্ধারের বিষয়ে যত্নশীল হন

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

সম্ভবত আপনার ডাটাবেস FULLপুনরুদ্ধার মোডে আছে। যদি তা না হয় তবে তা নিশ্চিত হয়ে নিন:

ALTER DATABASE yourdb SET RECOVERY FULL;

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

DECLARE @path NVARCHAR(255) = N'\\backup_share\log\yourdb_' 
  + CONVERT(CHAR(8), GETDATE(), 112) + '_'
  + REPLACE(CONVERT(CHAR(8), GETDATE(), 108),':','')
  + '.trn';

BACKUP LOG foo TO DISK = @path WITH INIT, COMPRESSION;

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

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

নোট করুন যে সঙ্কুচিত হওয়ার সম্ভাবনার আগে আপনাকে লগটিকে দু'বার ব্যাক আপ করতে হবে (ধন্যবাদ রবার্ট)।

সুতরাং, আপনাকে আপনার লগ ফাইলের জন্য একটি ব্যবহারিক আকার নিয়ে আসা দরকার। আপনার সিস্টেম সম্পর্কে আরও বেশি কিছু না জেনে এটি কী তা এখানে আপনাকে কেউ বলতে পারে না, তবে আপনি যদি প্রায়শই লগ ফাইলটি সঙ্কুচিত করে চলেছেন এবং এটি আবার বাড়ছে, তবে একটি ভাল জলছবি সম্ভবত এটি সবচেয়ে বড় থেকে 10-50% বেশি is । আসুন এটি 200 এমবিতে আসে এবং আপনি যে কোনও পরবর্তী অটোগ্রোথ ইভেন্ট 50 এমবি হতে চান তা আপনি লগ ফাইলের আকারটি এইভাবে সামঞ্জস্য করতে পারেন:

USE [master];
GO
ALTER DATABASE Test1 
  MODIFY FILE
  (NAME = yourdb_log, SIZE = 200MB, FILEGROWTH = 50MB);
GO

নোট করুন যে লগ ফাইলটি বর্তমানে> 200 এমবি থাকলে আপনার প্রথমে এটি চালানোর প্রয়োজন হতে পারে:

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

আপনি যদি পয়েন্ট-ইন-টাইম পুনরুদ্ধারের বিষয়ে চিন্তা না করেন

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

ALTER DATABASE yourdb SET RECOVERY SIMPLE;

SIMPLEপুনরুদ্ধার মোডে ডাটাবেস স্থাপন করা নিশ্চিত করে যে এসকিউএল সার্ভার সমস্ত লেনদেনের রেকর্ড রাখার পরিবর্তে বাড়ানোর পরিবর্তে লগ ফাইলের ( FULLপুনরুদ্ধারে নিষ্ক্রিয় লেনদেনগুলি পুনরায় ব্যবহার করে) পুনরায় ব্যবহার করে (যেমন আপনি লগ ব্যাক আপ না করা পর্যন্ত পুনরুদ্ধার করে)। CHECKPOINTইভেন্টগুলি লগ নিয়ন্ত্রণ করতে এবং এটির মধ্যে এটির বাড়ানোর প্রয়োজন হবে না তা নিশ্চিত করতে সহায়তা করবে যদি না আপনি CHECKPOINTs এর মধ্যে প্রচুর টি-লগ ক্রিয়াকলাপ তৈরি করেন ।

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

USE yourdb;
GO
CHECKPOINT;
GO
CHECKPOINT; -- run twice to ensure file wrap-around
GO
-- 200 MB
DBCC SHRINKFILE(yourdb_log, 200);
GO

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

কিছু কাজ আপনি করতে চান না

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

  • ডাটাবেসটি আলাদা করুন, লগ ফাইলটি মুছুন এবং পুনরায় সংযুক্ত করুন । আমি জোর দিয়ে বলতে পারি না এটি কতটা বিপজ্জনক হতে পারে। আপনার ডাটাবেস ফিরে না আসতে পারে, সন্দেহ হিসাবে এটি আসতে পারে, আপনাকে ব্যাকআপে ফিরে যেতে হতে পারে (যদি আপনার একটি থাকে) ইত্যাদি etc.

  • "সঙ্কুচিত ডাটাবেস" বিকল্পটি ব্যবহার করুনDBCC SHRINKDATABASEএবং এটি করার জন্য রক্ষণাবেক্ষণ পরিকল্পনার বিকল্পটি হ'ল খারাপ ধারণা, বিশেষত যদি আপনার কেবলমাত্র কোনও লগ সমস্যার সমস্যা সমাধানের প্রয়োজন হয়। আপনি যে ফাইলটি সমন্বয় এবং এটি স্বাধীনভাবে সমন্বয় ব্যবহার চান লক্ষ্য DBCC SHRINKFILEবা ALTER DATABASE ... MODIFY FILE(উদাহরণ উপরে)।

  • লগ ফাইলটি 1 এমবিতে সঙ্কুচিত করুন । এটি লোভনীয় বলে মনে হচ্ছে কারণ, আরে, এসকিউএল সার্ভার আমাকে এটি কিছু নির্দিষ্ট পরিস্থিতিতে করতে দেবে এবং এটি যে সমস্ত জায়গা খালি করে তা তাকিয়ে থাকবে! আপনার ডাটাবেসটি কেবল না পড়লে (এবং এটি হ'ল এটির ব্যবহার হিসাবে চিহ্নিত করা উচিত ALTER DATABASE) এটি একেবারে কেবলমাত্র অনেক অপ্রয়োজনীয় বৃদ্ধির ঘটনা ঘটায়, কারণ লগটিকে পুনরুদ্ধারের মডেল নির্বিশেষে বর্তমান লেনদেনের সাথে সামঞ্জস্য করতে হবে। এই স্থানটি অস্থায়ীভাবে মুক্ত করার অর্থ কী, ঠিক এসকিউএল সার্ভার আস্তে আস্তে এবং ব্যথার সাথে এটিকে ফিরিয়ে নিতে পারে?

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

সতর্ক হও

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

এখানে সবচেয়ে খারাপ সম্ভাব্য সেটিংসগুলি হ'ল 1 এমবি বৃদ্ধি বা 10% বৃদ্ধি। যথেষ্ট মজাদার, এগুলি এসকিউএল সার্ভারের ডিফল্ট (যা আমি অভিযোগ করেছি এবং কোনও লাভের পরিবর্তনের জন্য বলেছি ) - ডেটা ফাইলের জন্য 1 এমবি এবং লগ ফাইলের জন্য 10%। পূর্বের এই দিন এবং যুগে খুব ছোট, এবং পরবর্তী সময়টি প্রতিটি সময় দীর্ঘ এবং দীর্ঘতর ইভেন্টগুলির দিকে পরিচালিত করে (বলুন, আপনার লগ ফাইলটি 500 এমবি, প্রথম বৃদ্ধি 50 এমবি, পরবর্তী বৃদ্ধি 55.5 এমবি, পরবর্তী বৃদ্ধি 60.5 এমবি ইত্যাদি ইত্যাদি - এবং ধীরে ধীরে I / O, বিশ্বাস করুন, আপনি সত্যিই এই বক্ররেখা লক্ষ্য করবেন)।

আরও পড়া

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


27

আপনি আপনার লগ ফাইলের সামগ্রীও দেখতে পাবেন can এটি করার জন্য, আপনি অননুমোদিত fn_dblogবা লেনদেনের লগ রিডার যেমন অ্যাপেক্সএসকিউএল লগ ব্যবহার করতে পারেন ।

এটা তোলে সূচক পুনর্গঠনের প্রদর্শন করা হয় না, কিন্তু এটা দেখায় সব DML এবং বিভিন্ন DDL ঘটনা: ALTER, CREATE, DROP, ট্রিগার সামর্থ্য আছে সামর্থ্য /, অনুদান / প্রত্যাহার অনুমতি, বস্তুর নামান্তর।

অ্যাপেক্সএসকিউএলএলজিপিপ্রজেক্ট.টেম্প - অ্যাপেক্সএসকিউএল.লগ

দাবি অস্বীকার: আমি সাপোর্ট ইঞ্জিনিয়ার হিসাবে অ্যাপেক্সএসকিউএলের পক্ষে কাজ করি


5

এটি প্রায় সব ডিবিএর জন্য সর্বাধিক ঘন ঘন সমস্যা যেখানে লগগুলি বৃদ্ধি করে এবং ডিস্কটি পূরণ করে।

Transaction লেনদেনের লগ এত বড় হওয়ার কিছু কারণ কী?

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

Log আমার লগ ফাইলটি এত বড় কেন?

ছাঁটাই থেকে লগগুলি কী ধারণ করে তা জানতে টেবিলের log_reuse_wait_desসি কলামটি পরীক্ষা করুন sys.databases:

select name, log_reuse_wait_desc 
from sys.databases

This এই সমস্যাটি থেকে রোধ করার কয়েকটি উপায় কী?

লগ ব্যাকআপগুলি আপনাকে লগ বৃদ্ধিকে নিয়ন্ত্রণ করতে সহায়তা করবে যদি না এমন কিছু থাকে যা লগগুলি পুনরায় ব্যবহার হতে আটকে রাখে।

I যখন আমি অন্তর্নিহিত কারণটির সাথে নিজেকে ট্র্যাক এ নিয়ে রাখি এবং আমার লেনদেনের লগ ফাইলটিকে একটি স্বাস্থ্যকর আকারে রাখতে চাই তখন আমি কী করব?

যদি আপনি চিহ্নিত করে থাকেন যা আসলে এটি সৃষ্টি করছে তবে নীচের পৃষ্ঠায় বর্ণিত হিসাবে এটি অনুসারে এটি ঠিক করার চেষ্টা করুন।

https://www.brentozar.com/archive/2016/03/my-favorite-system-column-log_reuse_wait_desc/

যথাযথ লগ ব্যাকআপ থাকায় লগ বৃদ্ধির সাথে মোকাবিলা করার সর্বোত্তম উপায় হ'ল যদি কোনও অস্বাভাবিক পরিস্থিতি না থাকে।

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