অনলাইনে থাকাকালীন এসকিউএল সার্ভার ডাটাবেসটিকে একটি নতুন ডিস্কে সরানো


11

আমার কাছে একটি 1.4TB এসকিউএল সার্ভার ডেটাবেস যা ডিস্ক I / O এর সাথে ব্যাপকভাবে লড়াই করে। আমরা সার্ভারে একটি নতুন এসএসডি অ্যারে ইনস্টল করেছি যা আমাদের সমস্ত সমস্যার সমাধান করবে, আমরা কেবল ডাটাবেসটি সরিয়ে নেওয়ার সবচেয়ে ভাল উপায় নিয়ে বিতর্ক করছি। আদর্শভাবে যদি আমরা ডাউনটাইম ছাড়াই এটি করতে পারি তবে এটি সবচেয়ে ভাল। তবে যেখানে বিকল্পটি দু'দিনের ডাউন পারফরম্যান্সের তুলনায় দু'দিনের দুর্বল পারফরম্যান্সের (যেমন ডেটা অনুলিপি করার সময়) মধ্যে রয়েছে, সেখানে দ্বিতীয়টি সম্ভবত পছন্দনীয়।

এখনও অবধি, আমরা যে সমাধানগুলি নিয়ে এসেছি সেগুলি হ'ল:

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

  • ব্লক-স্তরের অনুলিপি। আরএসসিএন-এর মতো ইউটিলিটি ব্যবহার করে, আমরা ডিবি থাকাকালীন ফাইলগুলি পটভূমিতে অনুলিপি করি। আমরা যখন মাইগ্রেট করার জন্য প্রস্তুত থাকি, আমরা ডিবি অফলাইনে নিই, এই ইউটিলিটিটি ব্যবহার করে একটি ডিফারেনশিয়াল অনুলিপি করব, তারপরে নতুন ফাইলগুলিতে এসকিউএল সার্ভারটি নির্দেশ করুন এবং এটি অনলাইনে আনুন। এখানে সময় অজানা। 1.4TB এর একটি ডিফারেনশিয়াল বিশ্লেষণ করতে এবং এটি অনুলিপি করতে কতক্ষণ সময় লাগবে তা আমরা জানি না। আমাদের অন্যান্য উদ্বেগ হ'ল ব্লক-স্তরের অনুলিপি এসকিউএল সার্ভারের দ্বারা ফাইলগুলি কিছু অপঠনযোগ্য ছাড়বে এবং আমরা আমাদের সময় নষ্ট করব।

  • এসকিউএল স্থানান্তর নতুন ডিস্কে একটি নতুন 1.4TB এসকিউএল ডেটা ফাইল তৈরি করুন এবং অন্যান্য সমস্ত ফাইলে অটোগ্রোথ অক্ষম করুন। তারপরে অন্যান্য সমস্ত ডেটা ফাইলের পরিবর্তে DBBC SHRINKFILE (-file_name-, EMPTYFILE) চালান। সমস্ত ডেটা শেষ হয়ে গেলে আমি এমডিএফ ফাইলটি এসএসডি-তে স্থানান্তর করতে এবং অন্য অব্যবহৃত ফাইলগুলি সরিয়ে নেওয়ার জন্য একটি সময় নির্ধারিত উইন্ডো নিয়ে যাব। আমি এটি পছন্দ করি কারণ এটি ডাউনটাইম হ্রাস করে। তবে আমি জানি না যে এটি কতটা সময় নেবে এবং এটি ঘটতে গিয়ে কর্মক্ষমতা হ্রাস পাবে কিনা cause

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


আপনার ডেটাফাইলগুলি একটি এলভিএম পার্টিশনে সঞ্চয় করা আছে?
মার্কো

1
don't know how long it will take to do a differential analysis of 1.4TBঅন্তত যতক্ষণ না ডেটা পড়তে লাগে। আমি মনে করি না যে আরএসসিএনসি ধারণাটি যদি কিছু থাকে তবে অনেক কিছু সঞ্চয় করে। ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে মিলে যায়
usr ডিরেক্টরির

2
EMPTYFILE ব্যবহার না করে আমি এসএসডি-র অন্তর্ভুক্ত একটি নতুন ফাইলগ্রুপে সমস্ত সূচি পুনর্নির্মাণ করব। এইভাবে সূচকগুলি সুন্দর এবং প্রতারণামূলক বলে মনে হয়। EMPTYFILE এগুলি খণ্ডিত হতে পারে, নিশ্চিত নয়।
usr

উত্তর:


14

পুরো ডাটাবেসটি সরানোর একটি পদ্ধতি হ'ল BACKUPএবং RESTORE। চূড়ান্ত সুইচ চলাকালীন ডাটাবেসটি অনুপলব্ধ থাকবে তবে পরিকল্পনার সাথে ডাউনটাইম ন্যূনতম হওয়া উচিত। এই পদ্ধতি অনুমান FULLবা BULK_LOGGEDপুনরুদ্ধার মডেল:

1) একটি সম্পূর্ণ ব্যাকআপ সম্পাদন করুন (বা আপনার বিদ্যমানটি ব্যবহার করুন)।

2) WITH MOVEএসএসডি স্টোরেজে ফাইলগুলি পছন্দসই হিসাবে স্থানান্তরিত করার NORECOVERYবিকল্প এবং বিকল্পটি যাতে পরবর্তী ডিফারেনশিয়াল এবং লগ ব্যাকআপগুলি পুনরুদ্ধার করা যায় তা উল্লেখ করে একটি ভিন্ন ডাটাবেসের নামে সর্বশেষ পূর্ণ ব্যাকআপ পুনরুদ্ধার করুন।

৩) লেনদেন লগ ব্যাকআপ এবং চূড়ান্ত কাট-ওভারের সময় অবধি নতুন ডাটাবেসে বর্ধিত পরিবর্তনগুলি প্রয়োগ করুন RESTORE...WITH NORECOVERY। নতুন ডাটাবেসে চূড়ান্ত স্যুইচ করার জন্য এটি ডাউনটাইম হ্রাস করবে।

৪) নতুন ডাটাবেসে স্যুইচ করতে, অ্যাপ্লিকেশনটি অফলাইনে নিয়ে যান, একটি চূড়ান্ত লেনদেনের লগ ব্যাকআপ সম্পাদন করুন এবং নতুন ডাটাবেসে প্রয়োগ করুন WITH RECOVERY। শেষ অবধি, মূল ডাটাবেসটিকে একটি ভিন্ন নামে নতুন নামকরণ করুন এবং স্থানান্তরিত ডাটাবেসটিকে মূল নামে পুনরায় নামকরণ করুন। আপনার সুবিধার্থে পুরানো ডাটাবেসটি ফেলে দিন।

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


হ্যাঁ, একই সার্ভারের ডিবি চলাফেরার জন্য সহজ এবং দ্রুততম হিসাবে কিছুই মনে আসে না।
মারিয়ান

-6
Good approach is to use SQL REPLICATION between two server
once all data replicated on SSD server then take current server offline 
and switch to SSD server.

2
আপনি নিম্নচোট পাচ্ছেন কারণ আপনি প্রশ্নের উত্তর দিচ্ছেন না। এই পরিস্থিতিতে আলোচনার মধ্যে রয়েছে কেবলমাত্র একটি সার্ভার।
আকাশম

ডিবিএস সরানোর জন্য একটি ভাল পদ্ধতির প্রতিবিম্ব, লগ শিপিং, প্রাপ্যতা গ্রুপ, ব্যাকআপ এবং .. অন্যান্য। দুর্ভাগ্যক্রমে এটি সমস্যার সমাধান করে না।
মারিয়ান

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