একটি ডাটাবেস এসকিউএল সার্ভার 2012 আয়না করতে অক্ষম


11

নিম্নলিখিত কমান্ড ব্যবহার করে একটি ডাটাবেস আয়না করার চেষ্টা করার সময়

ALTER AVAILABILITY GROUP SQLAlwaysonGroup ADD DATABASE test0916aj8CJ

আমি নিম্নলিখিত ত্রুটি পেয়েছি

এমএসজি 1475, স্তর 16, রাজ্য 105, লাইন 1
ডাটাবেস "টেস্ট0916 এজে 8 সিজে" তে প্রচুর লগড পরিবর্তন থাকতে পারে যা ব্যাক আপ করা হয়নি। প্রধান ডাটাবেস বা প্রাথমিক ডাটাবেসে লগ ব্যাকআপ নিন। তারপরে এই ব্যাকআপটি হয় মিরর ডাটাবেসে ডেটাবেস মিররিং সক্ষম করতে বা প্রতিটি গৌণ ডাটাবেসে আপনাকে এটিকে প্রাপ্যতা গ্রুপে যোগ দিতে সক্ষম করতে পুনরুদ্ধার করুন।

এটি ডাটাবেস সমর্থন না করে করা যেতে পারে? অথবা আমার ব্যাকআপ নেওয়া উচিত এবং তারপরে ব্যাকআপটি বাতিল করা উচিত। এটি একটি নতুন নির্মিত ডিবি-র জন্য, সুতরাং আমার এই মুহুর্তে ব্যাকআপের দরকার নেই।

আমি নিম্নলিখিত চেষ্টা করেছি ...

BACKUP
DATABASE [test0916aj8CJ] TO DISK = NNUL
WITH COPY_ONLY, NOFORMAT, INIT,
NAME = Ntest-Full Database Backup’,
SKIP, NOREWIND, NOUNLOAD
GO

কিন্তু উপরের পদ্ধতিটিও কার্যকর হয়নি।

ধন্যবাদ


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

উত্তর:


15

আপনার যে ত্রুটিটি পেয়েছিল তা ত্রুটিযুক্ত করা সহজ

  • প্রাথমিকটিতে সম্পূর্ণ পুনরুদ্ধার মোডে ডাটাবেস তৈরি করুন।
  • মাধ্যমিকটিতে পূর্ণ পুনরুদ্ধার মোডে ডাটাবেস তৈরি করুন।
  • জিইউআই চালু করুন এবং প্রাথমিক এবং মাধ্যমিকের মধ্যে মিররিংটি কনফিগার করার চেষ্টা করুন।

নীচে ত্রুটিটি আপনি পাবেন:

ডাটাবেস "টেস্ট_মিররিং_কিন" এ প্রচুর লগ পরিবর্তন থাকতে পারে যা ব্যাক আপ করা হয়নি। প্রধান ডাটাবেস বা প্রাথমিক ডাটাবেসে লগ ব্যাকআপ নিন। তারপরে এই ব্যাকআপটি হয় মিরর ডাটাবেসে ডাটাবেস মিররিং সক্ষম করতে বা প্রতিটি গৌণ ডাটাবেসে আপনাকে এটি উপলব্ধতার গ্রুপে যোগ দিতে সক্ষম করতে পুনরুদ্ধার করুন। (মাইক্রোসফ্ট এসকিউএল সার্ভার, ত্রুটি: 1475)

এখানে চিত্র বর্ণনা লিখুন

বুঝতে দিন যে ত্রুটিটি কী:

আপনি আপনার ডাটাবেস সম্পূর্ণ পুনরুদ্ধার মোডে কনফিগার করেছেন এবং মনে করেন যে ডাটাবেসটি পুরোপুরি পুনরুদ্ধার মোডে রয়েছে।

উপরেরটি সত্য নয়। ডাটাবেস তৈরির পরে, আপনি যদি পুরো ব্যাকআপ না করেন, যদিও ডাটাবেস সম্পূর্ণ পুনরুদ্ধার মোডে রয়েছে, এটি সিউডো-সিম্পল পুনরুদ্ধারে রয়েছে

আপনি সহজেই এটি যাচাই করতে পারেন dbcc dbinfo-> পল রান্ডালের স্ক্রিপ্টেরdbi_dbbackupLSN মান 0:0:0(0x00000000:00000000:0000)বা ব্যবহার করে

dbcc traceon (3604)
go
dbcc dbinfo('test_mirroring_kin') with tableresults
go
dbcc traceoff (3604)

এখানে চিত্র বর্ণনা লিখুন

সম্পাদনা করুন: এমনকি COPY_ONLYবিকল্পের সাথে প্রথম পূর্ণ ব্যাকআপ নেওয়া ব্যাকআপ চেইনও প্রতিষ্ঠিত করে না

backup database test_mirroring_kin
to disk = 'D:\test_mirroring_kin_FULL.bak'
with init, stats=10, COPY_ONLY

dbcc dbinfo-> dbi_dbbackupLSNএর এখনও মূল্য রয়েছে 0:0:0(0x00000000:00000000:0000)। এর অর্থ ডাটাবেসটি এখনও ছদ্ম-সরল পুনরুদ্ধার মোডে রয়েছে।

উপরের ত্রুটিটি সমাধান করার জন্য আপনাকে কী করতে হবে?

প্রাথমিক পর্যায়ে আপনাকে একটি সম্পূর্ণ ব্যাকআপ + এক লেনদেনের লগ ব্যাকআপ নিতে হবে এবং তারপরে এটি মাধ্যমিক ডাটাবেসে পুনরুদ্ধার করতে হবে with norecoveryএবং তারপরে এজি গ্রুপে বা মিররিংয়ে ডাটাবেসে যোগ দিতে হবে।

পার্শ্ব নোট হিসাবে এবং সম্পূর্ণতার জন্য, আপনার স্ক্রিপ্ট বলার জন্য backup to NUL, গাইল শ এর এই ব্লগ পোস্টটি পড়ুন।


5

কেন TO DISK = N’NUL’?

আপনি কেন ব্যবহার করছেন তা আমি বুঝতে পারি না TO DISK = N’NUL’:

BACKUP
DATABASE [test0916aj8CJ] TO DISK = NNUL

যদি আপনি এটি করেন তবে ব্যাকআপটি সংরক্ষণ করা হবে NUL, (অর্থাত্ = = কোথাও / কিছুই নেই) এবং ব্যবহার করা যাবে না কারণ এর ফাইলটি বিদ্যমান নেই।

যদিও NULএছাড়াও লগ ব্যাকআপ গন্তব্য হিসেবে ব্যবহার করা যেতে পারে, তবে হয় এটি ব্যবহার করা যাবে না, বিশেষ করে উৎ সার্ভারে কারণ লগ হারিয়ে যাবে এবং ব্যাকআপ শৃঙ্খল ভাঙ্গা হবে। (a এ এর ​​মতো SHRINKFILE)

লগ ব্যাকআপ

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

সুতরাং আপনাকে অবশ্যই প্রাথমিক ডিবিতে লেনদেনের লগগুলি ব্যাকআপ করতে হবে:

BACKUP LOG [test0916aj8CJ] TO  DISK = N'....bak' 
WITH  COPY_ONLY, FORMAT, INIT,  NAME = N'test0916aj8CJ-Transaction Log  Backup', STATS = 10

COPY_ONLYবিকল্প ব্যবহার করা আবশ্যক। এটি নিশ্চিত করে যে লগগুলি LOG ব্যাকআপের শেষে কাটা না।

প্রাথমিক ডিবি ব্যাকআপ চেইন

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

যেহেতু COPY_ONLYবিকল্পটি ব্যাকআপ চেইনটি ভঙ্গ করে না, তাই এটি ব্যাকআপ চেইন তৈরি করে না। COPY_ONLYবিকল্প ডাটাবেস ব্যাকআপ জন্য ব্যবহার করা যেতে পারে।

ব্যাকআপগুলি ক্রমে:

  • COPY_ONLYবিকল্প ব্যতীত সম্পূর্ণ ডাটাবেস ব্যাকআপ
  • .চ্ছিক ডিফারেনশিয়াল ব্যাকআপ
  • COPY_ONLYবিকল্পের সাথে 1 লোগ ব্যাকআপ
  • প্রয়োজনে অন্য (বা আরও) এলওজি ব্যাকআপ ...

মাধ্যমিক ডিবি পুনরুদ্ধার করুন

তারপরে ডাটাবেস ব্যাকআপটি মাধ্যমিকটিতে পুনরুদ্ধার করতে হবে (+ ডিফারেনশিয়াল)।

এটি অবশ্যই NORECOVERYবিকল্পের সাথে পুনঃস্থাপন করতে হবে কারণ আপনি সম্পূর্ণ ব্যাকআপ পুনরুদ্ধার করার পরে আপনিও লগ ব্যাকআপ (গুলি) পুনরুদ্ধার করতে চান।

ফাইনালি আপনি এলওজি ব্যাকআপ পুনরুদ্ধার করবেন। আপনার এখনও NORECOVERYবিকল্পটি ব্যবহার করতে হবে কারণ আয়না একবারে স্থানে লেনদেন পুনরুদ্ধার করতে থাকবে।

  • NORECOVERYবিকল্পের সাথে সম্পূর্ণ ব্যাকআপ পুনরুদ্ধার করুন
  • NORECOVERYবিকল্প সহ ডিআইএফএফ ব্যাকআপ পুনরুদ্ধার করুন
  • NORECOVERYবিকল্পের সাথে তালিকায় সমস্ত এলওজি ব্যাকআপ পুনরুদ্ধার করুন

আসুন এটি সমস্ত একসাথে রাখুন (এটি আপনার এনভির সাথে মানিয়ে নিন)

  • প্রাথমিক সার্ভারে রান করুন:

    USE master
    Go
    BACKUP DATABASE [test0916aj8CJ] TO DISK = N'....bak'
    WITH FORMAT, INIT, NAME = N'test0916aj8CJ-Full Database Backup', STATS = 10
    GO
    BACKUP LOG [test0916aj8CJ] TO DISK = N'....bak' 
    WITH COPY_ONLY, FORMAT, INIT, NAME = N'test0916aj8CJ-Transaction Log Backup', STATS = 10
    GO
    
  • সেকেন্ডারি সার্ভার রান:

    USE master
    Go
    RESTORE DATABASE [test0916aj8CJ] FROM DISK = N'....bak' 
    WITH FILE = 1, NORECOVERY, NOUNLOAD, REPLACE, STATS = 10
    GO
    RESTORE LOG [test0916aj8CJ] FROM DISK = N'....bak' 
    WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 10
    
  • তারপরে আপনি উপলভ্যতা গোষ্ঠীতে নতুন গৌণ ডিবি যুক্ত করে এগিয়ে যেতে পারেন ...

.চ্ছিক ক্রিয়া

  • প্রাথমিক এবং মাধ্যমিক উভয় সার্ভার থেকে উপলব্ধ একটি ভাগ করা ফোল্ডারে DISK বিকল্পটি সেট করা আরও ভাল।
  • প্রাথমিক ও মাধ্যমিক উভয় সার্ভারে অনুরূপ ডিস্ক এবং অবস্থানের জন্য ডিবি ফাইলগুলি সংরক্ষণ করা আরও ভাল।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.