CentOS 8 এ পোস্টগ্রিএসকিউএল 12 স্ট্রিমিং প্রতিরূপটি কীভাবে কনফিগার করবেন


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

স্ট্রিমিংয়ের অনুলিপি সহ, স্ট্যান্ডবাই (প্রতিলিপি স্লেভ) ডাটাবেস সার্ভারটি মাস্টার/প্রাইমারী সার্ভারের সাথে সংযোগ স্থাপনের জন্য কনফিগার করা হয়েছে, যা ওয়াল ফাইলটি পূরণ হওয়ার অপেক্ষায় না রেখে স্ট্যান্ডবাইতে ওয়াল রেকর্ডগুলি প্রবাহিত করে।

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

এই গাইডটি সেন্টোস 8-তে পোস্টগ্র্যাস্কল 12 মাস্টার-স্ট্যান্ডবাই স্ট্রিমিংয়ের প্রতিলিপি কীভাবে সেট আপ করবেন তা দেখায় আমরা স্ট্যান্ডবাই প্রাপ্তির আগে পুরানো ওয়াল বিভাগগুলি পুনর্ব্যবহার করা থেকে মাস্টার সার্ভারকে এড়াতে সমাধান হিসাবে সমাধান হিসাবে "প্রতিলিপি স্লট" ব্যবহার করব।

নোট করুন যে অন্যান্য পদ্ধতির তুলনায়, প্রতিলিপি স্লট কেবল প্রয়োজনীয় বিভাগগুলির সংখ্যা বজায় রাখে।

এই গাইডটি আপনাকে এসএসএইচ এর মাধ্যমে রুট হিসাবে আপনার মাস্টার এবং স্ট্যান্ডবাই ডাটাবেস সার্ভারের সাথে সংযুক্ত বলে ধরেছে (প্রশাসনিক অধিকার সহ সাধারণ ব্যবহারকারী হিসাবে আপনি যদি সংযুক্ত থাকেন তবে সুডো কমান্ডটি ব্যবহার করুন):

Postgresql master database server: 		10.20.20.9
Postgresql standby database server:		10.20.20.8

উভয় ডাটাবেস সার্ভারে অবশ্যই পোস্টগ্র্যাস্কল 12 ইনস্টল করা থাকতে হবে, অন্যথায়, দেখুন: CentOS 8 এ পোস্টগ্র্রেএসকিউএল এবং পিজিএডমিন ইনস্টল করা যায় কীভাবে।

দ্রষ্টব্য: পোস্টগ্রিএসকিউএল 12 পুনরুদ্ধারকরণ বাস্তবায়ন এবং কনফিগারেশনের বড় পরিবর্তনগুলির সাথে আসে যেমন পুনরুদ্ধারকনফের প্রতিস্থাপন এবং পুনরুদ্ধারকনফ পরামিতিগুলিকে সাধারণ পোস্টগ্র্যাসকিউএল কনফিগারেশন প্যারামিটারে রূপান্তরকরণ, ক্লাস্টারের প্রতিলিপিটিকে কনফিগার করা অনেক সহজ করে তোলে।

পদক্ষেপ 1: PostgreSQL মাস্টার/প্রাথমিক ডাটাবেস সার্ভার কনফিগার করা uring

১. মাস্টার সার্ভারে, পোস্টগ্রিস সিস্টেম অ্যাকাউন্টে স্যুইচ করুন এবং আইপি ঠিকানা (এস) কনফিগার করুন যার উপর মাস্টার সার্ভার ক্লায়েন্টদের কাছ থেকে সংযোগের জন্য শুনবে।

এই ক্ষেত্রে, আমরা * সমস্ত অর্থ ব্যবহার করব।

# su - postgres
$ psql -c "ALTER SYSTEM SET listen_addresses TO '*';"

অলটার সিস্টেম সেট এসকিউএল কমান্ড হ'ল একটি এসকিউএল কোয়েরি সহ একটি সার্ভারের কনফিগারেশন প্যারামিটারগুলি পরিবর্তন করার একটি শক্তিশালী বৈশিষ্ট্য। কনফিগারেশনগুলি ডেটা ফোল্ডারের (উদাঃ/var/lib/pgsql/12/ডেটা /) মূলের মধ্যে অবস্থিত postgresql.conf.auto ফাইলে সংরক্ষণ করা হয় এবং postgresql.conf এ সঞ্চিত সেগুলি ছাড়াও পড়ুন। তবে পূর্বের কনফিগারেশনগুলি পরে এবং অন্যান্য সম্পর্কিত ফাইলগুলির চেয়ে বেশি প্রাধান্য পায়।

2. তারপরে একটি প্রতিরূপ ভূমিকা তৈরি করুন যা স্ট্যান্ডবাই সার্ভার থেকে মাস্টার সার্ভারে সংযোগের জন্য, ক্রিয়েউজার প্রোগ্রামটি ব্যবহার করে ব্যবহৃত হবে। নিম্নলিখিত কমান্ডে -পি পতাকাটি নতুন ভূমিকার জন্য একটি পাসওয়ার্ডের জন্য অনুরোধ জানায় এবং -e ক্রমান্ডার তৈরি করে এবং ডাটাবেস সার্ভারে প্রেরণকারী আদেশগুলি প্রতিধ্বনিত করে।

# su – postgres
$ createuser --replication -P -e replicator
$ exit

Then. তারপরে /var/lib/pgsql/12/data/pg_hba.conf ক্লায়েন্ট প্রমাণীকরণ কনফিগারেশন ফাইলের শেষে স্ক্রিনশটের মত প্রতিলিপি সেট করতে ক্লায়েন্ট প্রমাণীকরণ কনফিগারেশন ফাইলটি প্রবেশ করুন।

host    replication     replicator      10.20.20.8/24     md5

৪. এখন পরিবর্তনগুলি প্রয়োগ করতে নিম্নলিখিত সিস্টেস্টিটল কমান্ডটি ব্যবহার করে পোস্টগ্র্রেস 12 পরিষেবা পুনরায় চালু করুন।

# systemctl restart postgresql-12.service

৫. এর পরে, আপনার যদি ফায়ারওয়াল্ড পরিষেবা চলমান থাকে তবে আপনাকে স্ট্যান্ডবাই সার্ভার থেকে মাস্টারকে অনুরোধ জানাতে ফায়ারওয়াল্ড কনফিগারেশনে পোস্টগ্র্রেসকিএল পরিষেবা যুক্ত করতে হবে।

# firewall-cmd --add-service=postgresql --permanent
# firewall-cmd --reload

পদক্ষেপ 2: স্ট্যান্ডবাই সার্ভার বুটস্ট্র্যাপ করতে একটি বেস ব্যাকআপ তৈরি করা

Next. এর পরে, আপনাকে স্ট্যান্ডবাই সার্ভার থেকে মাস্টার সার্ভারের একটি বেস ব্যাকআপ তৈরি করতে হবে; এটি স্ট্যান্ডবাই সার্ভারটি বুটস্ট্র্যাপ করতে সহায়তা করে। স্ট্যান্ডবাই সার্ভারে আপনার পোস্টগ্রেক্কল 12 পরিষেবা বন্ধ করতে হবে, পোস্টগ্রিজ ব্যবহারকারী অ্যাকাউন্টে স্যুইচ করতে হবে, ডেটা ডিরেক্টরিটি (/ var/lib/pgsql/12/ডেটা /) ব্যাকআপ করতে হবে, তারপরে বেসটি নেওয়ার আগে এটির অধীনে সমস্ত কিছু মুছে ফেলা উচিত ব্যাকআপ

# systemctl stop postgresql-12.service
# su - postgres
$ cp -R /var/lib/pgsql/12/data /var/lib/pgsql/12/data_orig
$ rm -rf /var/lib/pgsql/12/data/*

Then. এরপরে ডান মালিকানার (ডাটাবেস সিস্টেম ব্যবহারকারী, পোস্টগ্র্রেস, পোস্টগ্রিস ব্যবহারকারী অ্যাকাউন্টের মধ্যে) এবং সঠিক অনুমতি নিয়ে বেস ব্যাকআপ নিতে pg_basebackup সরঞ্জামটি ব্যবহার করুন।

নিম্নলিখিত কমান্ডে, বিকল্প:

  • -h - হোস্টটি নির্দিষ্ট করে যা মাস্টার সার্ভার।
  • -D - ডেটা ডিরেক্টরি নির্দিষ্ট করে।
  • -U - সংযোগ ব্যবহারকারীকে নির্দিষ্ট করে।
  • -P - অগ্রগতি প্রতিবেদন সক্ষম করে।
  • -v - ভার্বোস মোড সক্ষম করে
  • -R - পুনরুদ্ধার কনফিগারেশন তৈরি করতে সক্ষম করে: স্ট্যান্ডবাই তৈরি করে ign
  • -X - ব্যাকআপে প্রয়োজনীয় রাইটিং-ফরোয়ার্ড লগ ফাইল (ওয়াল ফাইল) অন্তর্ভুক্ত করতে ব্যবহৃত হয়। স্ট্রিমের একটি মান মানে ব্যাকআপটি তৈরি হওয়ার সময় ওয়াল স্ট্রিম করা।
  • -C - ব্যাকআপটি শুরু করার আগে -S বিকল্প দ্বারা নামের একটি প্রতিরূপ স্লট তৈরি করতে সক্ষম করে
  • -S - প্রতিরূপ স্লট নাম নির্দিষ্ট করে।

$ pg_basebackup -h 10.20.20.9 -D /var/lib/pgsql/12/data -U replicator -P -v  -R -X stream -C -S pgstandby1
$ exit

৮. ব্যাকআপ প্রক্রিয়াটি শেষ হয়ে গেলে, স্ট্যান্ডবাই সার্ভারে থাকা নতুন ডেটা ডিরেক্টরিটিকে স্ক্রিনশটের মতো দেখতে পাওয়া উচিত। একটি স্ট্যান্ডবাই.সইগনাল তৈরি করা হয় এবং সংযোগ সেটিংস পোস্টগ্রেএসএলএলআউটো কোডফ এ সংযুক্ত করা হয়। আপনি ls কমান্ড ব্যবহার করে এর বিষয়বস্তু তালিকাভুক্ত করতে পারেন।

# ls -l /var/lib/pgsql/12/data/

যদি হট_স্ট্যান্ডবাই পরামিতি পোস্টগ্র্রেসক্লাল.কমের (ডিফল্ট মান) সেট করা থাকে এবং ডেটা ডিরেক্টরিতে একটি স্ট্যান্ডবাই.সাইনগল ফাইল উপস্থিত থাকে তবে একটি প্রতিলিপি গোল্ড "হট স্ট্যান্ডবাই" মোডে চলবে।

Now। এখন মাস্টার সার্ভারে, আপনি যখন পিজি_রেপ্লিকেশন_স্লটস ভিউটি নীচের হিসাবে খোলেন তখন আপনার pgstandby1 নামক রেপ্লিকেশন স্লটটি দেখতে পারা উচিত।

# su - postgres
$ psql -c "SELECT * FROM pg_replication_slots;"
$ exit

10. postgresql.auto.conf ফাইলে সংযুক্ত সেটিংস দেখতে ক্যাট কমান্ডটি ব্যবহার করুন।

# cat /var/lib/pgsql/12/data/postgresql.auto.conf

১১. এখন স্ট্যান্ডবাই সার্ভারে পোস্টগ্র্রেএসকিউএল পরিষেবাটি নীচের হিসাবে শুরু করে সাধারণ ডাটাবেস ক্রিয়াকলাপ শুরু করুন।

# systemctl start postgresql-12

পদক্ষেপ 3: পোস্টগ্রিসএসকিউএল স্ট্রিমিংয়ের প্রতিরীক্ষার পরীক্ষা করা

১২. একবার মাস্টার এবং স্ট্যান্ডবাইয়ের মধ্যে কোনও সংযোগ সফলভাবে ইনস্টল হয়ে গেলে আপনি স্ট্যান্ডবাইয়ের স্থিতি সহ স্ট্যান্ডবাই সার্ভারে একটি ওয়াল রিসিভার প্রক্রিয়াটি দেখতে পাবেন, আপনি pg_stat_wal_receiver ভিউ ব্যবহার করে এটি পরীক্ষা করতে পারেন।

$ psql -c "\x" -c "SELECT * FROM pg_stat_wal_receiver;"

এবং মাস্টার/প্রাইমারি সার্ভারে সম্পর্কিত স্ট্রিমিং স্টেট এবং অ্যাসিঙ্কের একটি সিঙ্ক_স্টেটের সাথে সংশ্লিষ্ট ওয়াল প্রেরক প্রক্রিয়া, আপনি এই pg_stat_replication pg_stat_replication ভিউ পরীক্ষা করতে পারেন।

$ psql -c "\x" -c "SELECT * FROM pg_stat_replication;"

উপরের স্ক্রিনশট থেকে, স্ট্রিমিংয়ের প্রতিলিপিটি অ্যাসিনক্রোনাস। পরবর্তী বিভাগে, আমরা কীভাবে nchচ্ছিকভাবে সিঙ্ক্রোনাস প্রতিলিপি সক্ষম করতে হবে তা প্রদর্শন করব।

১৩. এখন মাস্টার সার্ভারে একটি পরীক্ষণ ডাটাবেস তৈরি করে যদি প্রতিলিপিটি ঠিকঠাক কাজ করছে কিনা পরীক্ষা করুন এবং এটি স্ট্যান্ডবাই সার্ভারে উপস্থিত কিনা তা পরীক্ষা করুন
[স্ট্যান্ডবাই] পোস্টগ্রিস = #\l

Alচ্ছিক: সিঙ্ক্রোনাস প্রতিলিপি সক্ষম করা

14. সিঙ্ক্রোনাস প্রতিলিপি একসাথে প্রাথমিক ডাটাবেস এবং স্ট্যান্ডবাই/প্রতিরূপে একটি লেনদেন (বা ডেটা লেখার) করার ক্ষমতা সরবরাহ করে। এটি কেবলমাত্র নিশ্চিত করে যে কোনও লেনদেন সফল হয় যখন লেনদেনের দ্বারা সমস্ত পরিবর্তন এক বা একাধিক সিঙ্ক্রোনাস স্ট্যান্ডবাই সার্ভারে স্থানান্তরিত হয়।

সিঙ্ক্রোনাস প্রতিলিপি সক্ষম করতে, সিঙ্ক্রোনাস_কমিটটিও সেট করতে হবে (যা পূর্বনির্ধারিত মান, সুতরাং কোনও পরিবর্তনের প্রয়োজন হয় না) এবং আপনাকে সিঙ্ক্রোনাস_স্ট্যান্ডবাই_নামগুলির প্যারামিটারটি একটি শূন্য-অবধি মান নির্ধারণ করতে হবে। এই গাইডের জন্য, আমরা এটি সবার জন্য সেট করব।

$ psql -c "ALTER SYSTEM SET synchronous_standby_names TO  '*';"

15. তারপরে নতুন পরিবর্তনগুলি প্রয়োগ করতে PostgreSQL 12 পরিষেবাটি পুনরায় লোড করুন।

# systemctl reload postgresql-12.service

১.. এখন আপনি যখন প্রাথমিক সার্ভারে ওয়াল প্রেরক প্রক্রিয়াটি আবার জিজ্ঞাসা করেন, তখন এটি স্ট্রিমিংয়ের একটি অবস্থা এবং সিঙ্কের একটি সিঙ্ক_স্টেট দেখানো উচিত।

$ psql -c "\x" -c "SELECT * FROM pg_stat_replication;"

আমরা এই গাইডের শেষে এসেছি। আমরা দেখিয়েছি যে কীভাবে পোস্টগ্র্রেএসকিউএল 12 মাস্টার স্ট্যান্ডবাই ডাটাবেস স্ট্রিমিংয়ের প্রতিলিপিটি সেন্টোস ৮ এ সেটআপ করতে হয় We

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