আমি কি আয়না ডাটাবেসে লেনদেনের লগ ফাইলটি সঙ্কুচিত করতে পারি?


9

আমি কেন প্রধান ডাটাবেসে লগ ফাইল সঙ্কুচিত করতে পারি না সে সম্পর্কে এটি পূর্ববর্তী প্রশ্নের একটি অনুসরণের প্রশ্ন ।

একটি দীর্ঘ গল্প সংক্ষিপ্ত করতে, আমি ডাটাবেস মিররিং সেটআপ করেছি তবে লেনদেন লগ ব্যাক আপ করা কাজটি আবার চলছে এবং লেনদেনের লগ প্রায় 60 গিগাবাইটে বেড়েছে তা নিশ্চিত করতে ভুলে গেছি।

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

প্রতি এই প্রশ্ন মিরর ডাটাবেসের উপর লেনদেন লগ রক্ষণাবেক্ষণের সম্পর্কে, আপনি মিরর উপর লগ ব্যাক আপ পারবেন না, কিন্তু যখন বিশেষভাবে জিজ্ঞাসা মন্তব্য কিভাবে একটি মিরর ডাটাবেসের উপর একটি প্রবৃদ্ধ লগ ফাইল সঙ্কুচিত সম্পর্কে, একটি মন্তব্য রইল যে

এটি করার একটি উপায় হ'ল মিরর করা ডাটাবেসে ব্যর্থ হওয়া এবং সেখানে সঙ্কুচিত হওয়া। এটি আপনার চাওয়া / প্রত্যাশার আচরণ রয়েছে তা নিশ্চিত করার জন্য এটি একটি উত্পাদনহীন পরিবেশে পুরোপুরি পরীক্ষা করে দেখুন।

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

কোনও ডাটাবেস আয়নাতে লেনদেনের লগ ফাইলটি নিরাপদে সঙ্কুচিত করার কোনও উপায় আছে?


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

উত্তর:


6

DBCC SHRINKFILEকমান্ড মিরর ডাটাবেসের সাথে প্রধান থেকে প্রতিফলিত হবে। এখানে কিছু প্রমাণ।

অধ্যক্ষের উপর একটি নমুনা ডাটাবেস তৈরি করুন:

create database MirroredDb;
go

এর সাথে ব্যাকআপ থেকে একই ডাটাবেস তৈরি করুন NORECOVERY:

restore database MirroredDb
from disk = '\\backupdir\MirroredDb.bak'
with norecovery;
go

আপনি যেভাবে বেছে বেছে আপনার মিররিং সেশন সেটআপ করুন।

উপর প্রধান ডাটাবেসের ডাটাবেস ফাইলের মাপ তাকান:

use MirroredDb;
go

select
    name,
    size
from sys.database_files;

আমার ফলাফল সেটটি নিম্নলিখিতগুলির মতো দেখাচ্ছে:

name            size
MirroredDb      392
MirroredDb_log  104

উপর আয়না ডাটাবেসের , একটি স্ন্যাপশট তৈরি এবং একই তথ্য তাকান:

create database MirroredDbss
on
(
    name = 'MirroredDb',
    filename = 'c:\sqlserver\MirroedDb.ss'
)as snapshot of MirroredDb;

use MirroredDbss;
go

select
    name,
    size
from sys.database_files;

আমার ফলাফল সেটটি নীচের মত দেখাচ্ছে:

name            size
MirroredDb      392
MirroredDb_log  104

এখন মূল ডাটাবেসে লেনদেনের লগ ফাইলটি বাড়ান (আমি এটি 1 জিবি এনেছি):

alter database MirroredDb
modify file
(
    name = MirroredDb_log,
    size = 1GB
);
go

এ খুঁজছি প্রধান ডাটাবেসের এর লেনদেন লগ আকার, আমরা এখন স্থায়ী আকার দেখুন:

use MirroredDb;
go

select
    name,
    size
from sys.database_files;

আমার ফলাফল সেটটি নীচের মত দেখাচ্ছে:

name            size
MirroredDb      392
MirroredDb_log  131072

মিররড ডাটাবেসে অন্য একটি স্ন্যাপশট তৈরি করুন এবং সেখানে লেনদেনের লগ ফাইলের আকারটি দেখুন:

create database MirroredDbss2
on
(
    name = 'MirroredDb',
    filename = 'c:\sqlserver\MirroedDb2.ss'
)as snapshot of MirroredDb;

use MirroredDbss2;
go

select
    name,
    size
from sys.database_files;

আমার ফলাফল সেটটি নীচের মত দেখাচ্ছে:

name            size
MirroredDb      392
MirroredDb_log  131072

এখন কি DBCC SHRINKFILEউপর প্রধান :

use MirroredDb;
go

dbcc shrinkfile('MirroredDb_log', 0);
go

select
    name,
    size
from sys.database_files;

আমার ফলাফল সেটটি নিম্নলিখিত:

name            size
MirroredDb      392
MirroredDb_log  104

মিরর করা ডাটাবেসে তৃতীয় এবং চূড়ান্ত স্ন্যাপশট তৈরি করুন এবং আকারটি দেখুন:

create database MirroredDbss3
on
(
    name = 'MirroredDb',
    filename = 'c:\sqlserver\MirroedDb3.ss'
)as snapshot of MirroredDb;

use MirroredDbss3;
go

select
    name,
    size
from sys.database_files;

এবং আমি নিম্নলিখিত ফলাফল সেট পেতে:

name            size
MirroredDb      392
MirroredDb_log  104

আপনি এখানে দেখতে পারেন, DBCC SHRINKFILEকমান্ডটি আসলে আয়না ডাটাবেসে মিরর করা হয়।


আপনাকে ধন্যবাদ আমি বুঝতে পারি নি যে লগ ফাইলের আকারটিও মূল সার্ভার থেকে অনুলিপি করা হয়েছিল। তবে লেনদেনের লগের আকারের কারণে আয়না কার্যকর হয় না এমন পরিস্থিতিতে, আয়না মুছতে এবং পুনরায় তৈরি করার একমাত্র সমাধান? মিররিংয়ের প্রক্রিয়াটি কার্যকর না হলে মিরর লগটি নিরাপদে সঙ্কুচিত করার কোনও উপায় নেই?
রাহেল

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

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

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