আমি কীভাবে নির্বিঘ্নে কোনও এডাব্লুএস আরডিএস পোস্টগ্রিজ ডাটাবেসের প্রধান সংস্করণটি আপগ্রেড করতে পারি?


13

এই সকালে আমি এডাব্লুএস আরডিএসে পোস্টগ্রিজ এসকিউএল ডাটাবেস আপগ্রেড করার সাথে জড়িত ছিলাম। আমরা 9.3.3 সংস্করণ থেকে 9.4.4 সংস্করণে যেতে চেয়েছি। আমরা একটি মঞ্চের ডেটাবেজে আপগ্রেডের "পরীক্ষা" করেছি, তবে মঞ্চের ডাটাবেসটি অনেক কম, এবং মাল্টি-এজেড ব্যবহার করে না। দেখা গেল এই পরীক্ষাটি বেশ অপর্যাপ্ত।

আমাদের উত্পাদনের ডাটাবেসটি মাল্টি-এজেড ব্যবহার করে। আমরা অতীতে ছোটখাটো সংস্করণ আপগ্রেড করেছি এবং সে ক্ষেত্রে আরডিএস প্রথমে স্ট্যান্ডবাই আপগ্রেড করবে এবং তারপরে এটিকে মাস্টার হিসাবে উন্নীত করবে। সুতরাং ব্যর্থতার সময় একমাত্র ডাউনটাইম ~ 60s হয়।

আমরা ধরে নিয়েছি যে মূল সংস্করণ আপগ্রেডের ক্ষেত্রেও এটি ঘটবে, তবে ওহে আমরা কী ভুল ছিল।

আমাদের সেটআপ সম্পর্কে কিছু বিশদ:

  • db.m3.large
  • প্রভিশনড আইওপিএস (এসএসডি)
  • 300 জিবি স্টোরেজ, যার মধ্যে 139 জিবি ব্যবহৃত হয়
  • আমাদের আরডিএস ওএস আপগ্রেডগুলি অসামান্য ছিল, ডাউনটাইম হ্রাস করার জন্য আমরা এই আপগ্রেডের সাথে ব্যাচ করতে চেয়েছিলাম

আমরা আপগ্রেড করার সময় লগ করা আরডিএস ইভেন্টগুলি এখানে রয়েছে:

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

ডাটাবেস সিপিইউ প্রায় 08:44 এবং 10: 27 এর মধ্যে সর্বাধিক আউট করা হয়েছিল। এই সময় অনেকটা প্রাক-আপগ্রেড এবং পোস্ট-আপগ্রেড স্ন্যাপশট গ্রহণ করে আরডিএসের দখলে চলেছে বলে মনে হচ্ছে।

এডাব্লুএস ডকস এই জাতীয় প্রতিক্রিয়া সম্পর্কে সতর্ক করে না, যদিও এগুলি পড়ে আমাদের স্পষ্টতই বোঝা যায় যে আমাদের পদ্ধতির একটি স্পষ্ট ত্রুটি হ'ল আমরা মাল্টি-এজেড সেটআপে প্রোডাকশন ডাটাবেসের একটি অনুলিপি তৈরি করি নি এবং এটি হিসাবে আপগ্রেড করার চেষ্টা করি নি একটি ট্রায়াল রান

সাধারণভাবে এটি খুব হতাশার কারণ আরডিএস আমাদের এটি কী করছে এবং কতটা সময় লাগবে তা নিয়ে খুব কম তথ্য দিয়েছে। (আবারও, ট্রায়াল রান করা সাহায্য করতে পারে ...)

তা ছাড়া, আমরা এই ঘটনাটি থেকে শিখতে চাই তাই আমাদের প্রশ্নগুলি এখানে রয়েছে:

  • আরডিএসে কোনও বড় সংস্করণ আপগ্রেড করার সময় কি এই জাতীয় জিনিসটি স্বাভাবিক?
  • আমরা যদি সর্বনিম্ন ডাউনটাইম সহ ভবিষ্যতে একটি বড় সংস্করণ আপগ্রেড করতে চাই, আমরা কীভাবে এটি ব্যবহার করব? প্রতিলিপিটিকে আরও বিরামবিহীন করার জন্য কি কোনও ধরণের চৌকস উপায় রয়েছে?

আপগ্রেড হওয়ার পরে আমরা লক্ষ্য করেছি যে পোস্টগ্রিস কয়েক মিলিয়ন রেকর্ড সহ কয়েকটি টেবিলগুলিতে ক্রমিক স্ক্যান করার চেষ্টা করছে, যেখানে এটির পরিবর্তে একটি সূচি ব্যবহার করা উচিত (এভাবে আমাদের ক্যোয়ারির সময়সীমাটি আঘাত করা)। ANALYZEপরিসংখ্যান আপডেট করার জন্য একটি ম্যানুয়াল এটি সমাধান করেছে। কারও কাছে এ সম্পর্কে কোনও অন্তর্দৃষ্টি থাকলে তাও দুর্দান্ত great
জোনলিটন

উত্তর:


4

এটি একটি ভাল প্রশ্ন,
মেঘের পরিবেশে কাজ করা কখনও কখনও জটিল।

আপনি pg_dumpall -f dump.sqlকমান্ডটি ব্যবহার করতে পারেন , এটি আপনার সম্পূর্ণ ডাটাবেসটিকে এসকিউএল ফাইল ফর্ম্যাটে ফেলে দেবে, এমনভাবে আপনি এটিকে স্ক্র্যাচ থেকে অন্য শেষ পয়েন্টে নির্দেশ করে পুনর্গঠন করতে পারেন। psql -h endpoint-host.com.br -f dump.sqlসংক্ষিপ্ত জন্য ব্যবহার ।

তবে এটি করার জন্য আপনার ডিসিতে কিছু যুক্তিসঙ্গত জায়গা (আপনার ডাটাবেস ডাম্প ফিট করার জন্য) কিছু ইসি 2 উদাহরণ প্রয়োজন। এছাড়াও, yum install postgresql94.x86_64ডাম্প চালাতে এবং কমান্ড পুনরুদ্ধার করতে আপনাকে ইনস্টল করতে হবে।

পিজি ডাম্পল ডিওসি- তে উদাহরণ দেখুন ।

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

এছাড়াও, যদি আপনার জিনিসগুলির গতি বাড়ানোর প্রয়োজন হয় তবে এর pg_dumpপরিবর্তে pg_dumpallপ্যারালালিজম ( -j njobs) পরামিতিটির সুবিধা গ্রহণ করে বিবেচনা করুন , যখন আপনি প্রক্রিয়ায় জড়িত সিপিইউগুলির সংখ্যা নির্ধারণ করেন, উদাহরণস্বরূপ -j 88 টি সিপিইউ ব্যবহার করা হবে। ডিফল্টরূপে pg_dumpallবা pg_dumpএর ব্যবহার কেবলমাত্র ১. এর pg_dumpপরিবর্তে ব্যবহারের একমাত্র সুবিধা pg_dumpallহ'ল আপনার যে প্রতিটি ডাটাবেস রয়েছে তার জন্য কমান্ড চালনা করতে হবে এবং আরএলএলএস (গোষ্ঠী এবং ব্যবহারকারী) কে আলাদা করে ফেলতে হবে।

পিজি ডাম্প ডিওসি এবং পিজি রিস্টোর ডিওসি- তে উদাহরণগুলি দেখুন ।


সমান্তরাল বৈশিষ্ট্যটি ব্যবহার করতে আপনার ব্যবহারের প্রয়োজন হবে:pg_dump -h host -U user -W pass -Fc -f output_file.dmp -j 8 database_name
ভিনিক্স

... এবং সমান্তরালতা ব্যবহার করে পুনরুদ্ধার করতে:pg_restore -h host -d database_name -U user -W pass -C -Fc -j 8 output_file.dmp
ভিনিক্স

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