CentOS 8 இல் PostgreSQL 12 ஸ்ட்ரீமிங் பிரதிகளை எவ்வாறு கட்டமைப்பது


போஸ்ட்கிரெஸ்க்யூல் தரவுத்தளம் உயர்-கிடைக்கும், அளவிடக்கூடிய, தவறு-சகிப்புத்தன்மை கொண்ட பயன்பாடுகளை உருவாக்க பல பிரதி தீர்வுகளை ஆதரிக்கிறது, அவற்றில் ஒன்று எழுது-முன் பதிவு (WAL) கப்பல். கோப்பு அடிப்படையிலான பதிவு கப்பல் அல்லது ஸ்ட்ரீமிங் நகலெடுப்பைப் பயன்படுத்தி காத்திருப்பு சேவையகத்தை செயல்படுத்த இந்த தீர்வு அனுமதிக்கிறது, அல்லது முடிந்தால், இரு அணுகுமுறைகளின் கலவையாகும்.

ஸ்ட்ரீமிங் பிரதி மூலம், மாஸ்டர்/பிரைமரி சேவையகத்துடன் இணைக்க ஒரு காத்திருப்பு (பிரதி அடிமை) தரவுத்தள சேவையகம் கட்டமைக்கப்பட்டுள்ளது, இது WAL கோப்பு நிரப்பப்படுவதற்கு காத்திருக்காமல், அவை உருவாக்கப்படும் போது WAL பதிவுகளை காத்திருப்புக்கு ஸ்ட்ரீம் செய்கிறது.

இயல்பாக, முதன்மை சேவையகத்தில் ஒரு பரிவர்த்தனை செய்யப்பட்ட பின்னர் காத்திருப்பு சேவையகத்திற்கு (கள்) தரவு எழுதப்படும் இடத்தில் ஸ்ட்ரீமிங் பிரதி ஒத்திசைவற்றதாகும். இதன் பொருள், முதன்மை சேவையகத்தில் ஒரு பரிவர்த்தனை செய்வதற்கும் காத்திருப்பு சேவையகத்தில் மாற்றங்கள் காணப்படுவதற்கும் இடையே ஒரு சிறிய தாமதம் உள்ளது. இந்த அணுகுமுறையின் ஒரு தீங்கு என்னவென்றால், முதன்மை சேவையகம் செயலிழந்தால், எந்தவொரு அனுமதிக்கப்படாத பரிவர்த்தனைகளும் நகலெடுக்கப்படாமல் போகலாம், இது தரவு இழப்பை ஏற்படுத்தும்.

சென்டோஸ் 8 இல் ஒரு போஸ்ட்கிரெஸ்க்ல் 12 மாஸ்டர்-ஸ்டாண்ட்பை ஸ்ட்ரீமிங் பிரதிகளை எவ்வாறு அமைப்பது என்பதை இந்த வழிகாட்டி காட்டுகிறது. காத்திருப்பு பெறுவதற்கு முன்பு பழைய வால் பிரிவுகளை மறுசுழற்சி செய்வதிலிருந்து மாஸ்டர் சேவையகத்தைத் தவிர்ப்பதற்கான தீர்வாக காத்திருப்புக்கு rep "பிரதி ஸ்லாட்டுகளை" பயன்படுத்துவோம்.

மற்ற முறைகளுடன் ஒப்பிடும்போது, பிரதி ஸ்லாட்டுகள் தேவை என்று அறியப்பட்ட பிரிவுகளின் எண்ணிக்கையை மட்டுமே வைத்திருக்கின்றன என்பதை நினைவில் கொள்க.

இந்த வழிகாட்டி உங்கள் முதன்மை மற்றும் காத்திருப்பு தரவுத்தள சேவையகங்களுடன் SSH வழியாக ரூட்டாக இணைக்கப்பட்டுள்ளது என்று கருதுகிறது (நிர்வாக உரிமைகளுடன் சாதாரண பயனராக நீங்கள் இணைக்கப்பட்டிருந்தால் தேவையான இடங்களில் சூடோ கட்டளையைப் பயன்படுத்தவும்):

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

இரண்டு தரவுத்தள சேவையகங்களும் Postgresql 12 ஐ நிறுவியிருக்க வேண்டும், இல்லையெனில், காண்க: CentOS 8 இல் PostgreSQL மற்றும் pgAdmin ஐ எவ்வாறு நிறுவுவது.

குறிப்பு: PostgreSQL 12 ஆனது நகலெடுப்பு செயல்படுத்தல் மற்றும் மீட்டெடுப்பில் பெரிய மாற்றங்களுடன் வருகிறது, அதாவது recovery.conf ஐ மாற்றுவது மற்றும் recovery.conf அளவுருக்களை சாதாரண PostgreSQL உள்ளமைவு அளவுருக்களாக மாற்றுவது, இது கிளஸ்டர் நகலெடுப்பை உள்ளமைப்பதை மிகவும் எளிதாக்குகிறது.

படி 1: PostgreSQL முதன்மை/முதன்மை தரவுத்தள சேவையகத்தை கட்டமைத்தல்

1. முதன்மை சேவையகத்தில், போஸ்ட்கிரெஸ் கணினி கணக்கிற்கு மாறி, வாடிக்கையாளர்களிடமிருந்து வரும் இணைப்புகளுக்கு முதன்மை சேவையகம் கேட்கும் ஐபி முகவரியை (கள்) உள்ளமைக்கவும்.

இந்த விஷயத்தில், எல்லாவற்றையும் குறிக்கும் * ஐப் பயன்படுத்துவோம்.

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

ALTER SYSTEM SET SQL கட்டளை என்பது ஒரு SQL வினவலுடன் நேரடியாக ஒரு சேவையகத்தின் உள்ளமைவு அளவுருக்களை மாற்றுவதற்கான ஒரு சக்திவாய்ந்த அம்சமாகும். தரவு கோப்புறையின் மூலத்தில் அமைந்துள்ள postgresql.conf.auto கோப்பில் உள்ளமைவுகள் சேமிக்கப்படுகின்றன (எ.கா./var/lib/pgsql/12/data /) மற்றும் postgresql.conf இல் சேமிக்கப்பட்டவற்றுடன் கூடுதலாக படிக்கவும். ஆனால் முந்தைய உள்ளமைவுகள் பின்னர் மற்றும் பிற தொடர்புடைய கோப்புகளை விட முன்னுரிமை பெறுகின்றன.

2. பின்னர் படைப்பாற்றல் நிரலைப் பயன்படுத்தி காத்திருப்பு சேவையகத்திலிருந்து முதன்மை சேவையகத்திற்கான இணைப்புகளுக்குப் பயன்படுத்தப்படும் ஒரு பிரதி பாத்திரத்தை உருவாக்கவும். பின்வரும் கட்டளையில், -P கொடி புதிய பாத்திரத்திற்கான கடவுச்சொல்லைக் கேட்கும் மற்றும் -e உருவாக்கும் உருவாக்கியவர் கட்டளைகளை எதிரொலிக்கிறது மற்றும் தரவுத்தள சேவையகத்திற்கு அனுப்புகிறது.

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

3. பின்னர் /var/lib/pgsql/12/data/pg_hba.conf கிளையன்ட் அங்கீகார உள்ளமைவு கோப்பின் முடிவில் பின்வரும் உள்ளீட்டை ஸ்கிரீன்ஷாட்டில் காட்டப்பட்டுள்ளபடி நகலெடுக்க அமைக்கப்பட்ட தரவுத்தள புலத்துடன் உள்ளிடவும்.

host    replication     replicator      10.20.20.8/24     md5

4. மாற்றங்களைப் பயன்படுத்த பின்வரும் systemctl கட்டளையைப் பயன்படுத்தி Postgres12 சேவையை மறுதொடக்கம் செய்யுங்கள்.

# systemctl restart postgresql-12.service

5. அடுத்து, உங்களிடம் ஃபயர்வால்ட் சேவை இயங்கினால், காத்திருப்பு சேவையகத்திலிருந்து கோரிக்கைகளை மாஸ்டருக்கு அனுமதிக்க ஃபயர்வால்ட் உள்ளமைவில் போஸ்ட்கிரெஸ்கல் சேவையைச் சேர்க்க வேண்டும்.

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

படி 2: காத்திருப்பு சேவையகத்தை பூட்ஸ்ட்ராப் செய்ய அடிப்படை காப்புப்பிரதியை உருவாக்குதல்

6. அடுத்து, காத்திருப்பு சேவையகத்திலிருந்து முதன்மை சேவையகத்தின் அடிப்படை காப்புப்பிரதியை நீங்கள் செய்ய வேண்டும்; இது காத்திருப்பு சேவையகத்தை பூட்ஸ்ட்ராப் செய்ய உதவுகிறது. நீங்கள் காத்திருப்பு சேவையகத்தில் postgresql 12 சேவையை நிறுத்த வேண்டும், போஸ்ட்கிரெஸ் பயனர் கணக்கிற்கு மாறவும், தரவு கோப்பகத்தை காப்புப் பிரதி எடுக்கவும் (/ var/lib/pgsql/12/data /), பின்னர் அடித்தளத்தை எடுப்பதற்கு முன், அதன் கீழ் உள்ள அனைத்தையும் நீக்க வேண்டும். காப்புப்பிரதி.

# 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/*

7. பின்னர் அடிப்படை காப்புப்பிரதியை சரியான உரிமையுடன் (தரவுத்தள அமைப்பு பயனர் அதாவது போஸ்ட்கிரெஸ், போஸ்ட்கிரெஸ் பயனர் கணக்கில்) மற்றும் சரியான அனுமதிகளுடன் எடுக்க pg_basebackup கருவியைப் பயன்படுத்தவும்.

பின்வரும் கட்டளையில், விருப்பம்:

  • -h - முதன்மை சேவையகமாக இருக்கும் ஹோஸ்டைக் குறிப்பிடுகிறது.
  • -D - தரவு கோப்பகத்தைக் குறிப்பிடுகிறது.
  • -U - இணைப்பு பயனரைக் குறிப்பிடுகிறது.
  • -P - முன்னேற்ற அறிக்கையை செயல்படுத்துகிறது.
  • -v - வெர்போஸ் பயன்முறையை இயக்குகிறது.
  • -R - மீட்டெடுப்பு உள்ளமைவை உருவாக்க உதவுகிறது: ஒரு காத்திருப்பு.சிக்னல் கோப்பை உருவாக்கி, தரவு கோப்பகத்தின் கீழ் postgresql.auto.conf உடன் இணைப்பு அமைப்புகளை சேர்க்கவும்.
  • -X - காப்புப்பிரதியில் தேவையான எழுத-முன்னோக்கி பதிவு கோப்புகளை (WAL கோப்புகள்) சேர்க்க பயன்படுகிறது. ஸ்ட்ரீமின் மதிப்பு என்பது காப்புப்பிரதி உருவாக்கப்படும் போது WAL ஐ ஸ்ட்ரீம் செய்வதாகும்.
  • -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

8. காப்புப்பிரதி செயல்முறை முடிந்ததும், காத்திருப்பு சேவையகத்தில் புதிய தரவு அடைவு ஸ்கிரீன்ஷாட்டில் இருக்க வேண்டும். ஒரு standby.signal உருவாக்கப்பட்டது மற்றும் இணைப்பு அமைப்புகள் postgresql.auto.conf உடன் சேர்க்கப்படுகின்றன. Ls கட்டளையைப் பயன்படுத்தி அதன் உள்ளடக்கங்களை பட்டியலிடலாம்.

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

Postgresql.conf இல் hot_standby அளவுரு (இயல்புநிலை மதிப்பு) என அமைக்கப்பட்டால், தரவு அடைவில் ஒரு standby.signal கோப்பு இருந்தால் ஒரு பிரதி அடிமை Hot "ஹாட் ஸ்டாண்ட்பை" பயன்முறையில் இயங்கும்.

9. இப்போது மீண்டும் மாஸ்டர் சேவையகத்தில், நீங்கள் pg_replication_slots பார்வையை பின்வருமாறு திறக்கும்போது pgstandby1 எனப்படும் பிரதி ஸ்லாட்டைக் காண முடியும்.

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

10. postgresql.auto.conf கோப்பில் சேர்க்கப்பட்டுள்ள இணைப்பு அமைப்புகளைக் காண, பூனை கட்டளையைப் பயன்படுத்தவும்.

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

11. பின்வருமாறு PostgreSQL சேவையைத் தொடங்குவதன் மூலம் காத்திருப்பு சேவையகத்தில் சாதாரண தரவுத்தள செயல்பாடுகளைத் தொடங்கவும்.

# systemctl start postgresql-12

படி 3: PostgreSQL ஸ்ட்ரீமிங் பிரதிகளை சோதித்தல்

12. மாஸ்டருக்கும் காத்திருப்புக்கும் இடையில் ஒரு இணைப்பு வெற்றிகரமாக நிறுவப்பட்டதும், ஸ்ட்ரீமிங் நிலையுடன் காத்திருப்பு சேவையகத்தில் ஒரு WAL ரிசீவர் செயல்முறையைப் பார்ப்பீர்கள், இதை pg_stat_wal_receiver பார்வையைப் பயன்படுத்தி சரிபார்க்கலாம்.

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

மற்றும் மாஸ்டர்/முதன்மை சேவையகத்தில் ஸ்ட்ரீமிங் நிலை மற்றும் ஒத்திசைவு ஒத்திசைவு ஆகியவற்றுடன் தொடர்புடைய WAL அனுப்புநர் செயல்முறை, இந்த pg_stat_replication pg_stat_replication view ஐ நீங்கள் சரிபார்க்கலாம்.

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

மேலே உள்ள ஸ்கிரீன்ஷாட்டில் இருந்து, ஸ்ட்ரீமிங் பிரதி ஒத்திசைவற்றது. அடுத்த பகுதியில், ஒத்திசைவான நகலெடுப்பை எவ்வாறு விருப்பமாக இயக்குவது என்பதை நாங்கள் காண்பிப்போம்.

13. முதன்மை சேவையகத்தில் ஒரு சோதனை தரவுத்தளத்தை உருவாக்குவதன் மூலம் பிரதி சிறப்பாக செயல்படுகிறதா என்பதை இப்போது சோதித்துப் பாருங்கள், அது காத்திருப்பு சேவையகத்தில் இருக்கிறதா என்று சோதிக்கவும்.
[முதன்மை] postgres = # தரவுத்தள டெக்மின்டை உருவாக்கவும்;
[காத்திருப்பு] postgres = #\l

விரும்பினால்: ஒத்திசைவான நகலெடுப்பை இயக்குகிறது

14. ஒத்திசைவு பிரதி முதன்மை தரவுத்தளத்திற்கும் ஒரு காத்திருப்பு/பிரதிக்கும் ஒரே நேரத்தில் ஒரு பரிவர்த்தனை (அல்லது தரவை எழுதுதல்) செய்வதற்கான திறனை வழங்குகிறது. பரிவர்த்தனை மூலம் செய்யப்பட்ட அனைத்து மாற்றங்களும் ஒன்று அல்லது அதற்கு மேற்பட்ட ஒத்திசைவான காத்திருப்பு சேவையகங்களுக்கு மாற்றப்படும் போது மட்டுமே ஒரு பரிவர்த்தனை வெற்றிகரமாக இருக்கும் என்பதை இது உறுதிப்படுத்துகிறது.

ஒத்திசைவு நகலெடுப்பை இயக்க, ஒத்திசைவு_காமிட் இயக்கப்பட வேண்டும் (இது இயல்புநிலை மதிப்பு, இதனால் எந்த மாற்றமும் தேவையில்லை) மேலும் நீங்கள் ஒத்திசைவான_ஸ்டாண்ட்பை_பெயர்கள் அளவுருவை வெற்று அல்லாத மதிப்புக்கு அமைக்க வேண்டும். இந்த வழிகாட்டியைப் பொறுத்தவரை, அதை அனைவருக்கும் அமைப்போம்.

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

15. பின்னர் புதிய மாற்றங்களைப் பயன்படுத்த PostgreSQL 12 சேவையை மீண்டும் ஏற்றவும்.

# systemctl reload postgresql-12.service

16. இப்போது நீங்கள் முதன்மை சேவையகத்தில் WAL அனுப்புநர் செயல்முறையை மீண்டும் வினவும்போது, அது ஸ்ட்ரீமிங் நிலை மற்றும் ஒத்திசைவு நிலை ஒத்திசைவு ஆகியவற்றைக் காட்ட வேண்டும்.

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

இந்த வழிகாட்டியின் முடிவுக்கு வந்துள்ளோம். PostOSreSQL 12 மாஸ்டர்-ஸ்டாண்ட்பை தரவுத்தள ஸ்ட்ரீமிங் பிரதிகளை CentOS 8 இல் எவ்வாறு அமைப்பது என்பதைக் காட்டியுள்ளோம். ஒரு PostgreSQL தரவுத்தளக் கிளஸ்டரில் ஒத்திசைவான நகலெடுப்பை எவ்வாறு இயக்குவது என்பதையும் நாங்கள் விவரித்தோம்.

நகலெடுப்பதில் பல பயன்கள் உள்ளன, மேலும் உங்கள் தகவல் தொழில்நுட்ப சூழல் மற்றும்/அல்லது பயன்பாடு சார்ந்த தேவைகளைப் பூர்த்தி செய்யும் தீர்வை நீங்கள் எப்போதும் எடுக்கலாம். மேலும் விவரங்களுக்கு, PostgreSQL 12 ஆவணத்தில் உள்ள பதிவு-கப்பல் காத்திருப்பு சேவையகங்களுக்குச் செல்லவும்.