Postgresql এর ধারাবাহিক ব্যাকআপের জন্য স্টোরেজ স্ন্যাপশট - বিভিন্ন ডেটা এবং লগ ভলিউম


11

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

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

সে লক্ষ্যে, আমরা ডিজি-তে যত দ্রুত সম্ভব ডিজিটি লিখতে গিয়ে কিছু পরীক্ষা-নিরীক্ষা চালিয়েছিলাম পিজি_বেঞ্চ ব্যবহার করে। পরীক্ষাগুলির পরে, আমরা আমাদের স্ন্যাপশটের ভলিউমগুলি পুনরুদ্ধার করেছি এবং ভিএম + পোস্টগ্রাগগুলি শুরু করেছি

  • উভয় ডেটা এবং লগ ভলিউম একসাথে কাছাকাছি স্ন্যাপশট - ফলাফল: ডিবি উদ্ধার
  • স্ন্যাপশটের ডেটা ভলিউম প্রথমে, লগ ভলিউম ~ 1 মিনিট পরে - ফলাফল: ডিবি উদ্ধার করা
  • স্ন্যাপশট লগের ভলিউম প্রথমে, ডেটা ভলিউম ~ 1 মিনিট পরে - ফলাফল: ডিবি উদ্ধার হয়েছে
  • প্রথমে স্ন্যাপশট লগের ভলিউম, ডেটা ভলিউম minutes 3 মিনিট পরে, একটি ডাব্লিউএল চেকপয়েন্ট ডেটাফাইলে নতুন ডেটা লেখার পরে: ফলাফল: ডিবি উদ্ধার করে

সুতরাং টেস্টিং আমাদের দু'টি স্ন্যাপশট যতক্ষণ না ভলিউম স্তরে সামঞ্জস্যপূর্ণ এবং অপেক্ষাকৃত একসাথে কাছাকাছি হবে তা বলে দেবে বলে মনে হচ্ছে আপনি ডাব্লুএল / লগ ভলিউমের স্ন্যাপশটের সময়ের উপর ভিত্তি করে ডিবিটির একটি ধারাবাহিক অনুলিপি পাবেন।

আমার প্রশ্ন: এটি কি নিরাপদ? আমাদের পরীক্ষায় আমরা যে কোণার বিষয়গুলি অনুপস্থিত তা কী কী এবং কী ভুল হতে পারে?

পোস্টগ্রিসের ডকটি ইঙ্গিত দেয় যে এটি নিরাপদ নয়, তবে পরীক্ষার মাধ্যমে এটির দুর্দান্ত দৃ pretty়তা বোঝানো হচ্ছে: http://www.postgresql.org/docs/9.1/static/backup-file.html

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

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


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

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

উত্তর:


2

আপনি যে ডকুমেন্টেশন উদ্ধৃত করেছেন এটি সবই বলছে, তবে আপনি একই সময়ে তোলা স্ন্যাপশট সম্পর্কিত বিক্রেতার দাবী যাচাই করতে চাইলে আমি আপনাকে দোষ দেব না। সম্ভবত কোনও কিছু উন্মোচন করার একটি উপায় হ'ল ওয়াল সিস্টেমটিকে আরও বিশেষভাবে পরীক্ষা করার জন্য চাপ দেওয়া ।

আপনার pgbench ভিত্তিক পরীক্ষা ছাড়াও যেমন ইন, এর র্যান্ডম কল যোগ করার চেষ্টা pg_switch_xlog()বল লগ ঘুর্ণন, খাটো এবং আর চেকপয়েন্ট অন্তর (সংক্ষেপিত এবং দীর্ঘায়ীত করার checkpoint_timeoutএবং checkpoint_timeout) এবং এমনকি ছোট বা বড় ওয়াল ফাইলের মাপ ব্যবহার করে।

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

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