কম্পিউটার

Microsoft SQL সার্ভার উন্নত দুর্নীতি এবং পুনরুদ্ধার

ব্লগটি মাইক্রোসফ্ট® SQL Server®-এ ডাটাবেস স্তরে ঘটতে পারে এমন দুর্নীতির বর্ণনা দেয়, কীভাবে সেগুলি সনাক্ত করা যায় এবং কীভাবে উন্নত পুনরুদ্ধার এবং মেরামত কৌশল ব্যবহার করে সেগুলি সংশোধন করা যায়৷

পরিচয়

বর্তমানে, SQL সার্ভার তার উন্নত অভ্যন্তরীণ কাঠামো এবং মহান নির্ভরযোগ্যতার কারণে সবচেয়ে জনপ্রিয় এবং বহুল ব্যবহৃত রিলেশনাল ডেটাবেস ম্যানেজমেন্ট সিস্টেমগুলির মধ্যে একটি। গুরুত্বপূর্ণ ব্যবসার ডেটা বজায় রাখতে এবং সংরক্ষণ করার জন্য অনেক সংস্থা SQL সার্ভার ডেটাবেস বেছে নিয়েছে৷

কোম্পানিগুলো আশা করে যে ডাটাবেস অ্যাডমিনিস্ট্রেটররা (DBAs) ডাটাবেসের কর্মক্ষমতা, রক্ষণাবেক্ষণ এবং নিরাপত্তা ক্রমাগত উন্নত করবে। যখন একটি ডাটাবেস দূষিত হয় এবং ডেটা অ্যাক্সেসযোগ্য না হয়, তখন আপনি হার্ডওয়্যার দুর্নীতি, ডিস্ক সমস্যা, ভাইরাস আক্রমণ বা অপারেটিং সিস্টেম (OS) ব্যর্থতার মতো বিভিন্ন কারণ সন্দেহ করতে পারেন। যতক্ষণ না আপনি সর্বোত্তম কৌশলটি জানেন ততক্ষণ পর্যন্ত ক্ষতিগ্রস্থ ডেটাবেস মেরামত করা সহজ কাজ নয়।

এই পোস্টটি ডেটাবেস দুর্নীতির কিছু কারণ নিয়ে আলোচনা করে, আপনাকে পৃষ্ঠার দুর্নীতি শনাক্ত করতে সাহায্য করে, ডেটাবেস কনসিসটেন্সি চেকার (DBCC) CHECKDBcommand অন্বেষণ করে, এবং উন্নত পুনরুদ্ধার এবং মেরামতের কৌশলগুলি প্রদর্শন করে৷

ডাটাবেস দুর্নীতি

SQL সার্ভার ব্যবহারকারীর ডেটা পৃষ্ঠা আকারে সংরক্ষণ করে। এই পৃষ্ঠাগুলি.MDF-এ থাকে৷ (প্রাথমিক) ডেটা ফাইল। একটি .MDF এর দুর্নীতি ফাইল পুরো ডাটাবেসের দুর্নীতির দিকে পরিচালিত করতে পারে। এসকিউএল সার্ভারের মেমরির বাইরে (অর্থাৎ, একটি ডিস্কে) লেখা হলে ডেটা ফাইল পৃষ্ঠাটি ভাল কিন্তু মেমরিতে ফিরে পড়ার সময় খারাপ, যেমনটি নিম্নলিখিত ছবিতে দেখানো হয়েছে:

Microsoft SQL সার্ভার উন্নত দুর্নীতি এবং পুনরুদ্ধার

ডাটাবেস দুর্নীতির কারণ:

ডেটাবেস দুর্নীতির ধরনগুলির মধ্যে নিম্নলিখিত আইটেমগুলি অন্তর্ভুক্ত রয়েছে:

  • I/O সাবসিস্টেম (এটি ডাটাবেস দুর্নীতির অন্যতম সাধারণ কারণ।)
  • উইন্ডোজ অপারেটিং সিস্টেম
  • ফাইল সিস্টেম ড্রাইভার যেমন এনক্রিপশন বা অ্যান্টিভাইরাস
  • SAN বা RAID কন্ট্রোলার
  • ডিস্ক
  • মেমরি
  • ফাইল হেডার
  • SQL সার্ভার বাগ
  • মানবীয় ত্রুটি

ত্রুটি বার্তা:

যখন আপনি একটি দূষিত ডাটাবেস অ্যাক্সেস করেন, তখন আপনি নিম্নলিখিত ত্রুটি বার্তাগুলি দেখতে পারেন:

  • SQL সার্ভারে 823 বার্তা
  • SQL সার্ভারে 824 বার্তা
  • SQL সার্ভারে বার্তা 825 (পুনরায় চেষ্টা করুন)
  • ত্রুটি 9004 SQL সার্ভার
  • মেটাডেটা দুর্নীতি ত্রুটি
  • পৃষ্ঠা স্তরের দুর্নীতির ত্রুটি

ট্রেসিং পৃষ্ঠা দুর্নীতি

এসকিউএল সার্ভারে একটি বিল্ট-ইন মেকানিজম রয়েছে যাতে I/0 অপারেশনের সময় কোনো দুর্নীতি হয় যেমন ডিস্কে পৃষ্ঠাগুলি পড়া এবং লেখার সময় আপনাকে স্বয়ংক্রিয়ভাবে সনাক্ত করতে এবং সতর্ক করতে।

নিম্নলিখিত বিভিন্ন ধরণের পৃষ্ঠা-স্তরের যাচাইকরণ বিকল্পগুলি এসকিউএল সার্ভারে উপলব্ধ এবং ডিস্কের পৃষ্ঠাগুলিকে সুরক্ষিত করতে সহায়তা করে:

  • TORN_PAGE_DETECTION
  • চেকসাম

যখন TORN_PAGE_DETECTION নির্দিষ্ট করা আছে, যখনই পৃষ্ঠাটি ডিস্কে লেখা হয় তখন একটি 8 KB ডেটা ফাইল পৃষ্ঠার জন্য 16 x 512-বাইটেডিস্ক সেক্টরের জন্য একটি বিট ফ্লিপ করা হয়৷ পৃষ্ঠাটি পরবর্তীতে মেমরিতে পড়ার পরে, এই মানগুলির তুলনা করা হয়৷ যদি বিটগুলি পাওয়া যায় ভুল অবস্থা, পৃষ্ঠাটি সম্ভবত ভুলভাবে লেখা হয়েছে৷ এই ক্ষেত্রে, সিস্টেম একটি ত্রুটি বার্তা 824 তৈরি করে (একটি ছেঁড়া-পৃষ্ঠা ত্রুটি নির্দেশ করে)৷

যখন চেকসাম নির্দিষ্ট করা হয়েছে, সিস্টেমটি পৃষ্ঠার বিষয়বস্তুর উপর চেকসাম মান গণনা করে এবং পৃষ্ঠাটিকে ডিস্কে লেখার সময় সেই মানটিকে পৃষ্ঠার শিরোনামে সংরক্ষণ করে। পরবর্তীতে ডিস্ক থেকে পৃষ্ঠাটি লোড হওয়ার পরে, চেকসাম পুনরায় গণনা করা হয় এবং পৃষ্ঠা শিরোনামে সংরক্ষিত মানের সাথে তুলনা করা হয়। যদি মানটি মেলে না, সিস্টেমটি একটি ত্রুটি বার্তা 824 তৈরি করে (একটি চেকসাম ব্যর্থতা নির্দেশ করে)।

উভয় ত্রুটি, 823 হার্ড I/O এবং 824 নরম I/O , তীব্রতা 24 ত্রুটি এবং msdb.dbo এ লগ ইন করা হয়েছে সন্দেহভাজন_পৃষ্ঠা অস্থির।

টেবিল msdb.dbo। সন্দেহজনক_পৃষ্ঠা স্থির একটি একক পৃষ্ঠা পুনরুদ্ধার করার জন্য ব্যবহৃত হয় এবং SQL সার্ভার ত্রুটি লগ এবং Windows® ইভেন্ট লগে লগ ইন করা যেতে পারে৷

DBCC চেকডিবি

DBCC CHECKDB ডেটাবেসের সমস্ত বস্তুর ভৌত এবং যৌক্তিক অখণ্ডতা পরীক্ষা করে৷

এটি একটি সম্পদ-নিবিড় ক্রিয়াকলাপ এবং সমান্তরাল প্রক্রিয়াকরণ ব্যবহার করে, তবে আপনি ফ্ল্যাগ 2528 ট্রেসিং করে এটি একটি একক থ্রেডে চালাতে পারেন৷

আদি গুরুত্বপূর্ণ সিস্টেম টেবিল চেক

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

আদিম চেকগুলি নিম্নলিখিত তালিকায় দেখানো হয়েছে:

  • DBCC চেক্যালোক :ডেটাবেসে বরাদ্দ কাঠামোর সামঞ্জস্য পরীক্ষা করে। এটি পরীক্ষা করে যে বরাদ্দের কাঠামো বৈধ এবং কোনো একক ডেটাফাইল পৃষ্ঠা দুটি টেবিলে বরাদ্দ করা হয়নি।

  • DBCC চেকটেবল :টেবিল এবং সূচীগুলির সামঞ্জস্য পরীক্ষা করে। এটি টেবিলের গঠন এবং এর সম্পর্কিত সূচীকে বৈধ করে। এটি নির্ধারণ করে যে সূচির ডেটা টেবিলে সারি সারি আছে কিনা এবং ইনডেক্সঅর্ডার কীগুলি পরীক্ষা করে। যদি টেবিলে কোনো FILESTREAM ব্যবহার করা হয়, তাহলে এটি লিঙ্কের অস্তিত্বকে যাচাই করে।

  • DBCC চেকক্যাটালগ :সিস্টেম ক্যাটালগগুলির মধ্যে সামঞ্জস্যতা পরীক্ষা করে৷

  • DBCC চেকফাইলগ্রুপ :DBCC CHECKDB-এর মতো, এই চেকটি একটি ফাইল গোষ্ঠীর জন্য সামঞ্জস্য পরীক্ষা করে এবং ডাটাবেসের জন্য একটি বরাদ্দ পরীক্ষা করে।

নমুনা কোড

DBCC CHECKDB
  [ ( database_name | database_id | 0
    [ , NOINDEX
    | , { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD } ]
  ) ]
  [ WITH
    {
        [ ALL_ERRORMSGS ]
        [ , EXTENDED_LOGICAL_CHECKS ]
        [ , NO_INFOMSGS ]
        [ , TABLOCK ]
        [ , ESTIMATEONLY ]
        [ , { PHYSICAL_ONLY | DATA_PURITY } ]
        [ , MAXDOP  = number_of_processors ]
    }
  ]
]

অভ্যন্তরীণ ডাটাবেস স্ন্যাপশট

চেকগুলি সম্পাদন করতে এবং লেনদেনের ধারাবাহিকতা বজায় রাখার জন্য CHECKDB-এর সাথে একটি অভ্যন্তরীণ ডাটাবেস স্ন্যাপশট ব্যবহার করা ব্লকিং এবং সমসাময়িক সমস্যাগুলিকে প্রতিরোধ করে৷ আপনি যদি একটি ডাটাবেস স্ন্যাপশট তৈরি করতে না পারেন, তবে নিশ্চিত করুন যে আপনার কাছে ডাটাবেসের জন্য একটি একচেটিয়া লক আছে এবং টেবিল লকগুলি শেয়ার করে কারণ এটি টেবিল স্তরের চেকগুলি সম্পাদন করার জন্য প্রয়োজন৷ . কোনো স্ন্যাপশট তৈরি না হলে CHECKDB মাস্টারে ব্যর্থ হয়।

নিম্নলিখিত তালিকায় DBCC CHECKDB দ্বারা সম্পাদিত অভ্যন্তরীণ চেকগুলি রয়েছে:

  • ক্রিটিকাল সিস্টেম টেবিল চেক।
  • ক্রিটিকাল সিস্টেম টেবিল লজিক্যাল চেক।
  • অন্যান্য টেবিল লজিক্যাল চেক।
  • বরাদ্দ চেক।
  • মেটাডেটা চেক।
  • পরিষেবা ব্রোকার বৈধতা পরীক্ষা।
  • সূচিবদ্ধ দৃশ্য, স্থানিক সূচক পরীক্ষা।

CHECKDB ত্রুটি

নিম্নলিখিত সারণীটি কিছু DBCC CHECKDB ত্রুটি দেখায়:

Microsoft SQL সার্ভার উন্নত দুর্নীতি এবং পুনরুদ্ধার

সর্বোত্তম অনুশীলন

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

উন্নত পুনরুদ্ধারের বিকল্পগুলি

যদিও বেশিরভাগ লোকেরা দুর্নীতির সমস্যাগুলির জন্য সাধারণ ডেটাবেস পুনরুদ্ধার কৌশল ব্যবহার করে, নিম্নলিখিত উন্নত পুনরুদ্ধার কৌশলগুলি উপলব্ধ:

পৃষ্ঠা পুনরুদ্ধার

আপনি এই কৌশলটি দিয়ে এক বা একাধিক পৃষ্ঠা পুনরুদ্ধার করতে পারেন। পৃষ্ঠা-স্তরের পুনরুদ্ধার হল ডাটাবেস এন্টারপ্রাইজ সংস্করণের জন্য একটি অনলাইন অপারেশন, এবং আপনি অন্যান্য সংস্করণের জন্য অফলাইন অপারেশন ব্যবহার করতে পারেন, যা বোঝায় যে পুনরুদ্ধার প্রক্রিয়া চলাকালীন ডাটাবেস অফলাইন হতে পারে৷

T-SQL স্ক্রিপ্ট
RESTORE DATABASE <database_name>
PAGE = '<file: page> [ ,... n ] ' [ ,... n ]
FROM <backup_device> [ ,... n ]
WITH NORECOVERY

পৃষ্ঠা আইডি পেতে, বিভিন্ন উপলব্ধ উত্স ব্যবহার করুন যেমন ত্রুটি লগ, ইভেন্টট্রেস, ডিবিসিসি, এবং msdb..সসপেক্টপেজ টেবিল রেকর্ড যা দুর্নীতিগ্রস্ত পাতা এবং তাদের আইডি তালিকাভুক্ত করে।

দ্রষ্টব্য: আপনি বুট পেজ, ফাইল হেডার পেজ, ক্রিটিক্যাল সিস্টেম টেবিলের কিছু পেজ এবং পেজ রিস্টোর হিসেবে বিটম্যাপ বরাদ্দ করতে পারবেন না।

পিসমেল এবং আংশিক পুনরুদ্ধার

পৃষ্ঠা পুনরুদ্ধারের অনুরূপ, আপনি এন্টারপ্রাইজ সংস্করণের জন্য অনলাইনে টুকরো টুকরো এবং আংশিক পুনরুদ্ধার করতে পারেন এবং একাধিক ফাইল বা ফাইলগ্রুপ ধারণ করে এমন অন্যান্য সংস্করণের জন্য অফলাইন করতে পারেন৷

প্রতিটি টুকরো পুনরুদ্ধার একটি আংশিক পুনরুদ্ধার ক্রম দিয়ে শুরু হয় RESTORE DATABASE বিবৃতি যা একটি PARTIAL সহ একটি সম্পূর্ণ ব্যাকআপ পুনরুদ্ধার করে বিকল্প যখন এটি পুনরুদ্ধার সম্পূর্ণ হয়, তখন ডাটাবেসটি আংশিকভাবে অনলাইন হওয়া উচিত, যা বোঝায় যে অবশিষ্ট ফাইলগুলি পুনরুদ্ধার মুলতুবি মোডে রয়েছে কারণ পুনরুদ্ধার স্থগিত করা হয়েছে৷

টুকরো টুকরো পুনরুদ্ধার নির্ভর করে ডাটাবেসের পুনরুদ্ধার মডেল এবং এর পুনরুদ্ধারের অনুক্রমের উপর।

ক্রম পুনরুদ্ধার করুন

ফাইলগ্রুপ X এবং Z এবং প্রাথমিক ফাইলগ্রুপের আংশিক পুনরুদ্ধার করতে, নিম্নলিখিত কোডটি চালান:

RESTORE DATABASE DB_XYZ FILEGROUP='X',FILEGROUP='Z'
  FROM partial_backup
  WITH PARTIAL, RECOVERY;

পূর্ববর্তী পয়েন্ট X-এ, নিম্নলিখিতটি সত্য:

  • ফাইলগ্রুপ Z এবং প্রাথমিক ফাইলগ্রুপ অনলাইন।
  • ফাইলগ্রুপ Y এর ফাইলগুলি পুনরুদ্ধার মুলতুবি রয়েছে৷
  • ফাইলগ্রুপ অফলাইন।

RESTORE DATABASE DB_XYZ FILEGROUP='Y' FROM backup WITH RECOVERY;

এখন, সমস্ত ফাইলগ্রুপ অনলাইন।

অন্যান্য উন্নত মেরামতের কৌশল

মেরামত কি সবসময় ডেটা পুনরুদ্ধারের গ্যারান্টি দেয়? উত্তর হল "না।"

অনেকগুলি সম্ভাব্য সংমিশ্রণ থাকতে পারে যা ডেটাকে দূষিত করতে পারে এবং সমস্ত সংমিশ্রণ পরীক্ষা করা অসম্ভব। উদাহরণস্বরূপ, একটি সিস্টেম টেবিল দূষিত, এবং মেরামত বুট এর মত পৃষ্ঠাগুলিতে কাজ করবে না এবং PFS .

নীচে কিছু মেরামতের বিকল্প রয়েছে:

REPAIR_REBUILD

এই বিকল্পটি একটি মেরামত করে, কিন্তু ক্ষতিগ্রস্ত NCindexes পুনর্নির্মাণ করার সময় এটি ডেটা ক্ষতির কারণ হতে পারে।

REPAIR_ALLOW_DATA_LOSS

এই বিকল্পটি মেরামত করে, তবে এটি ডেটা ক্ষতির কারণ হতে পারে৷

সিস্টেম টেবিল সূচী পুনর্নির্মাণ

আপনি ক্লাস্টারযুক্ত সিস্টেম টেবিল সূচীগুলি মেরামত করতে পারবেন না, তবে আপনি কিছু পরিস্থিতিতে DBCC চেকটেবল বিকল্পটি চেক করে অ-ক্লাস্টারড সূচকগুলি মেরামত করতে পারেন৷

দ্রষ্টব্য: ভয়ানক পরিস্থিতি এড়াতে সর্বদা ডেটাবেসের একটি অনুলিপিতে যেকোন ধরণের উন্নত মেরামতের কৌশলগুলি সম্পাদন করুন এবং মূল ডাটাবেসে নয়৷

একটি নন-ক্লাস্টারড সূচক থেকে পুনর্নির্মাণের তারিখ:

যদি একটি ক্লাস্টারড সূচক বা স্তূপ ক্ষতিগ্রস্ত হয়, তাহলে নন-ক্লাস্টারড (NC) সূচক থেকে ডেটা পুনরুদ্ধার করার জন্য মেরামতই একমাত্র বিকল্প। যাইহোক, কিছু ক্ষেত্রে, মেটাডেটা নষ্ট হলে মেরামত কাজ করবে না।

আপনি অ-ক্ষতিগ্রস্ত NC সূচক নির্বাচন করতে বাধ্য করতে একটি নির্বাচনী বিবৃতি ব্যবহার করতে পারেন, তবে এটি NC সূচকের কলাম-স্তরের কভারেজের উপর নির্ভর করতে পারে।

DBCC পৃষ্ঠা

DBCC PAGE … WITH TABLERESULTS ব্যবহার করা হচ্ছে মূল রেঞ্জ সনাক্ত করতে পারে। আপনি একটি নন-ক্লাস্টারড সূচক থেকে এটি তৈরি করতে পারেন এবং পৃষ্ঠাগুলি থেকে ডেটা পাওয়ার চেষ্টা করার জন্য দূষিত পৃষ্ঠাগুলি পরীক্ষা করতে পারেন৷

উপসংহার

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

কোনো মন্তব্য করতে বা প্রশ্ন জিজ্ঞাসা করতে প্রতিক্রিয়া ট্যাবটি ব্যবহার করুন৷

বিশেষজ্ঞ প্রশাসন, ব্যবস্থাপনা এবং কনফিগারেশনের মাধ্যমে আপনার পরিবেশকে অপ্টিমাইজ করুন

Rackspace এর অ্যাপ্লিকেশন পরিষেবা(RAS) বিশেষজ্ঞরা অ্যাপ্লিকেশনগুলির বিস্তৃত পোর্টফোলিও জুড়ে নিম্নলিখিত পেশাদার এবং পরিচালিত পরিষেবাগুলি প্রদান করে:

  • ইকমার্স এবং ডিজিটাল অভিজ্ঞতার প্ল্যাটফর্ম
  • এন্টারপ্রাইজ রিসোর্স প্ল্যানিং (ERP)
  • ব্যবসায়িক বুদ্ধিমত্তা
  • সেলসফোর্স কাস্টমার রিলেশনশিপ ম্যানেজমেন্ট (CRM)
  • ডাটাবেস
  • ইমেল হোস্টিং এবং উৎপাদনশীলতা

আমরা সরবরাহ করি:

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

শুরু করতে এখনই চ্যাট করুন।


  1. মাইক্রোসফ্ট এসকিউএল সার্ভার ডাটাবেস সামঞ্জস্যের স্তর

  2. একটি AWS RDS উদাহরণে একটি SQL সার্ভার ডাটাবেস স্থানান্তর করুন

  3. বিদ্যমান AlwaysOn ডাটাবেসে Microsoft SQL সার্ভার লগ শিপিং

  4. Microsoft SQL সার্ভার ক্যোয়ারী স্টোর