ວິທີການ ກຳ ຫນົດຄ່າແບບທົດລອງການ ນຳ ໃຊ້ PostgreSQL 12 ໃນ CentOS 8


ຖານຂໍ້ມູນ PostgreSQL ສະ ໜັບ ສະ ໜູນ ວິທີແກ້ໄຂການ ຈຳ ລອງແບບ ຈຳ ນວນ ໜຶ່ງ ເພື່ອສ້າງໂປແກຼມ ນຳ ໃຊ້ທີ່ສາມາດ ນຳ ໃຊ້ໄດ້, ສາມາດປັບຂະ ໜາດ ໄດ້, ຄວາມຜິດພາດ, ໜຶ່ງ ໃນນັ້ນແມ່ນການ ນຳ ສົ່ງ Write-Ahead Log (WAL). ວິທີແກ້ໄຂນີ້ຊ່ວຍໃຫ້ເຄື່ອງແມ່ຂ່າຍສະແຕນບາຍຖືກຈັດຕັ້ງປະຕິບັດໂດຍ ນຳ ໃຊ້ການຂົນສົ່ງໄມ້ທ່ອນທີ່ອີງໃສ່ແຟ້ມເອກະສານຫຼືການ ຈຳ ລອງການຖ່າຍທອດທາງອິນເຕີເນັດຫຼືຖ້າເປັນໄປໄດ້, ການລວມກັນຂອງທັງສອງວິທີການ.

ດ້ວຍການ ຈຳ ລອງແບບ streaming, ເຄື່ອງແມ່ຂ່າຍຖານຂໍ້ມູນ (ສຳ ລອງແບບ ຈຳ ລອງ) ຖືກຕັ້ງຄ່າໃຫ້ເຊື່ອມຕໍ່ກັບ server/server ຕົ້ນຕໍ, ເຊິ່ງກະແສ WAL ບັນທຶກໄວ້ໃນສະແຕນບາຍທີ່ພວກມັນຖືກຜະລິດ, ໂດຍບໍ່ຕ້ອງລໍຖ້າໃຫ້ເອກະສານ WAL ເຕັມ.

ໂດຍຄ່າເລີ່ມຕົ້ນ, ການ ຈຳ ລອງແບບການສະຕີມແມ່ນບໍ່ສະ ໝ ່ ຳ ສະ ເໝີ ບ່ອນທີ່ຂໍ້ມູນຖືກຂຽນໃສ່ເຄື່ອງແມ່ຂ່າຍສະແຕນບາຍຫລັງຈາກການເຮັດທຸລະ ກຳ ທີ່ໄດ້ເຮັດສັນຍາລັກໃນ server ຕົ້ນຕໍ. ນີ້ ໝາຍ ຄວາມວ່າມີການຊັກຊ້າເລັກ ໜ້ອຍ ລະຫວ່າງການເຮັດທຸລະ ກຳ ໃນ server server ແລະການປ່ຽນແປງຈະກາຍເປັນທີ່ເຫັນໄດ້ໃນເຄື່ອງແມ່ຂ່າຍສະແຕນບາຍ. ຂໍ້ບົກຜ່ອງ ໜຶ່ງ ຂອງວິທີການນີ້ແມ່ນວ່າໃນກໍລະນີທີ່ເຄື່ອງແມ່ຂ່າຍຂອງ master គាំង, ການເຮັດທຸລະ ກຳ ໃດໆທີ່ບໍ່ໄດ້ຮັບການຍອມຮັບອາດຈະບໍ່ຖືກ ນຳ ໄປໃຊ້ ໃໝ່ ແລະນີ້ອາດເຮັດໃຫ້ຂໍ້ມູນສູນເສຍ.

ຄຳ ແນະ ນຳ ນີ້ສະແດງໃຫ້ເຫັນວິທີການຕັ້ງຄ່າການ ຈຳ ລອງແບບ Postgresql 12 master-standby streaming ໃນ CentOS 8. ພວກເຮົາຈະ ນຳ ໃຊ້“ ສະລັອດຕິງແບບ ຈຳ ລອງ” ສຳ ລັບສະແຕນບາຍເປັນວິທີແກ້ໄຂເພື່ອຫລີກລ້ຽງເຄື່ອງແມ່ຂ່າຍແມ່ບົດຈາກການ ນຳ ກັບມາໃຊ້ຊິ້ນສ່ວນ WAL ເກົ່າກ່ອນທີ່ສະແຕນບາຍໄດ້ຮັບພວກມັນ.

ໃຫ້ສັງເກດວ່າເມື່ອທຽບໃສ່ກັບວິທີການອື່ນໆ, ສະລັອດຕິງແບບ ຈຳ ລອງພຽງແຕ່ ຈຳ ນວນສ່ວນທີ່ຮູ້ວ່າ ຈຳ ເປັນ.

ຄູ່ມືນີ້ຄາດວ່າທ່ານໄດ້ເຊື່ອມຕໍ່ກັບແມ່ບົດຂອງທ່ານແລະເຄື່ອງແມ່ຂ່າຍຖານຂໍ້ມູນແບບຖາວອນເປັນຮາກຜ່ານ SSH (ໃຊ້ Sudo ຄຳ ສັ່ງໃນກໍລະນີທີ່ ຈຳ ເປັນຖ້າທ່ານຖືກເຊື່ອມຕໍ່ເປັນຜູ້ໃຊ້ ທຳ ມະດາທີ່ມີສິດປົກຄອງ):

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

ເຄື່ອງແມ່ຂ່າຍຖານຂໍ້ມູນທັງສອງຕ້ອງມີການຕິດຕັ້ງ Postgresql 12, ຖ້າບໍ່ດັ່ງນັ້ນ, ເບິ່ງ: ວິທີການຕິດຕັ້ງ PostgreSQL ແລະ pgAdmin ໃນ CentOS 8.

ໝາຍ ເຫດ: PostgreSQL 12 ມາພ້ອມກັບການປ່ຽນແປງທີ່ ສຳ ຄັນໃນການຈັດຕັ້ງປະຕິບັດແລະການຕັ້ງຄ່າການເຮັດແບບ ຈຳ ລອງເຊັ່ນ: ການປ່ຽນແທນການ recovery.conf ແລະການປ່ຽນຕົວ ກຳ ນົດການ recovery.conf ໃຫ້ເປັນຕົວ ກຳ ນົດການຕັ້ງຄ່າ PostgreSQL ທຳ ມະດາ, ເຮັດໃຫ້ມັນງ່າຍຕໍ່ການ ກຳ ນົດການ ຈຳ ລອງແບບກຸ່ມ.

ຂັ້ນຕອນທີ 1: ການຕັ້ງຄ່າຖານຂໍ້ມູນ PostgreSQL Master/Primary Database

1. ຢູ່ໃນ server server, ປ່ຽນໄປທີ່ບັນຊີລະບົບ postgres ແລະ ກຳ ນົດຄ່າທີ່ຢູ່ IP (ທີ່ຢູ່) ເຊິ່ງ server server ຈະຟັງເພື່ອເຊື່ອມຕໍ່ຈາກລູກຄ້າ.

ໃນກໍລະນີນີ້, ພວກເຮົາຈະໃຊ້ * ໝາຍ ຄວາມວ່າທັງ ໝົດ.

# 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. ຫຼັງຈາກນັ້ນສ້າງບົດບາດການ ຈຳ ລອງແບບເຊິ່ງຈະຖືກ ນຳ ໃຊ້ ສຳ ລັບການເຊື່ອມຕໍ່ຈາກເຄື່ອງແມ່ຂ່າຍສະແຕນບາຍກັບເຄື່ອງແມ່ຂ່າຍແມ່ບົດ, ໂດຍໃຊ້ໂປແກຼມ createuser. ໃນ ຄຳ ສັ່ງຕໍ່ໄປນີ້, ທຸງ -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. ດຽວນີ້ເລີ່ມບໍລິການ Postgres12 ໂດຍໃຊ້ ຄຳ ສັ່ງ systemctl ຕໍ່ໄປນີ້ເພື່ອໃຊ້ການປ່ຽນແປງ.

# systemctl restart postgresql-12.service

5. ຕໍ່ໄປ, ຖ້າທ່ານມີການບໍລິການ firewalld ແລ່ນ, ທ່ານຕ້ອງການເພີ່ມບໍລິການ Postgresql ໃນການຕັ້ງຄ່າ firewalld ເພື່ອອະນຸຍາດການຮ້ອງຂໍຈາກເຄື່ອງແມ່ຂ່າຍສະແຕນບາຍໄປຫາແມ່ບົດ.

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

ຂັ້ນຕອນທີ 2: ການເຮັດ Backup ສຳ ຮອງໃສ່ Bootstrap the Standby Server

6. ຕໍ່ໄປ, ທ່ານ ຈຳ ເປັນຕ້ອງເຮັດການ ສຳ ຮອງຂໍ້ມູນພື້ນຖານຂອງ server server ຈາກເຄື່ອງແມ່ຂ່າຍສະແຕນບາຍ; ນີ້ຊ່ວຍໃນການຕັ້ງຄ່າເຄື່ອງແມ່ຂ່າຍສະແຕນບາຍ. ທ່ານ ຈຳ ເປັນຕ້ອງຢຸດການໃຫ້ບໍລິການ postgresql 12 ໃນເຄື່ອງແມ່ຂ່າຍສະແຕນບາຍ, ປ່ຽນໄປໃຊ້ບັນຊີຜູ້ໃຊ້ postgres, ສຳ ຮອງຂໍ້ມູນໄດເລກະທໍລີຂໍ້ມູນ (/ 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 tool ເພື່ອ ທຳ ການ ສຳ ຮອງພື້ນຖານດ້ວຍຄວາມເປັນເຈົ້າຂອງທີ່ຖືກຕ້ອງ (ຜູ້ໃຊ້ລະບົບຖານຂໍ້ມູນ i.e Postgres, ພາຍໃນບັນຊີຜູ້ໃຊ້ Postgres) ແລະດ້ວຍສິດທີ່ຖືກຕ້ອງ.

ໃນ ຄຳ ສັ່ງຕໍ່ໄປນີ້, ຕົວເລືອກ:

  • -h - ລະບຸເຈົ້າພາບເຊິ່ງແມ່ນ server server.
  • -D - ລະບຸໄດເລກະທໍລີຂໍ້ມູນ.
  • -U - ລະບຸຜູ້ໃຊ້ເຊື່ອມຕໍ່.
  • -P - ຊ່ວຍໃຫ້ມີການລາຍງານຄວາມຄືບ ໜ້າ.
  • -v - ຊ່ວຍໃຫ້ໂຫມດ verbose.
  • -R - ຊ່ວຍໃນການສ້າງການຕັ້ງຄ່າການກູ້ຄືນ: ສ້າງເອກະສານ standby.signal ແລະເພີ່ມການຕັ້ງຄ່າການເຊື່ອມຕໍ່ໃຫ້ 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/

ສຳ ລອງແບບ ຈຳ ລອງຈະ ດຳ ເນີນການໃນຮູບແບບ“ Hot Standby” ຖ້າຕົວ ກຳ ນົດ hot_standby ຕັ້ງ (ຄ່າເລີ່ມຕົ້ນ) ໃນ postgresql.conf ແລະມີເອກະສານ standby.signal ທີ່ ນຳ ສະ ເໜີ ຢູ່ໃນໄດເລກະທໍລີຂໍ້ມູນ.

9. ດຽວນີ້ກັບມາໃຊ້ໃນ server server, ທ່ານຄວນຈະສາມາດເຫັນຊ່ອງວ່າງແບບ ຈຳ ລອງທີ່ເອີ້ນວ່າ pgstandby1 ເມື່ອທ່ານເປີດ pg_replication_slots ເບິ່ງດັ່ງຕໍ່ໄປນີ້.

# 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 Streaming

12. ເມື່ອການເຊື່ອມຕໍ່ໄດ້ຖືກສ້າງຕັ້ງຂື້ນຢ່າງ ສຳ ເລັດຜົນລະຫວ່າງແມ່ບົດແລະສະແຕນບາຍ, ທ່ານຈະເຫັນຂະບວນການຮັບ WAL ໃນເຊີຟເວີສະແຕນບາຍທີ່ມີສະຖານະການສາຍ, ທ່ານສາມາດກວດສອບສິ່ງນີ້ໂດຍໃຊ້ມຸມມອງ pg_stat_wal_receiver.

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

ແລະຂັ້ນຕອນຂອງຜູ້ສົ່ງ WAL ທີ່ສອດຄ້ອງກັນຢູ່ໃນ server/server ຕົ້ນຕໍທີ່ມີສະຖານະການສາຍແລະ sync_state ຂອງ async, ທ່ານສາມາດກວດເບິ່ງ pg_stat_replication pg_stat_replication ນີ້.

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

ຈາກພາບ ໜ້າ ຈໍຂ້າງເທິງ, ການ ຈຳ ລອງແບບຖ່າຍທອດສົດແມ່ນບໍ່ສະ ໝໍ່າ ສະ ເໝີ. ໃນພາກຕໍ່ໄປ, ພວກເຮົາຈະສະແດງວິທີການເລືອກແບບ ຈຳ ລອງແບບ synchronous.

13. ຕອນນີ້ທົດສອບຖ້າການເຮັດແບບ ຈຳ ລອງເຮັດວຽກໄດ້ດີໂດຍການສ້າງຖານຂໍ້ມູນທົດສອບໃນ server server ແລະກວດເບິ່ງວ່າມັນມີຢູ່ໃນເຊີບເວີແບບຢືນຢູ່ບໍ.
[ຕົ້ນສະບັບ] postgres = # ສ້າງ CATATE DATABASE tecmint;
[standby] postgres = # \ l

ທາງເລືອກ: ເຮັດໃຫ້ການ ຈຳ ລອງແບບ Synchronous

14. ການ ຈຳ ລອງແບບ ຈຳ ລອງແບບ Synchronous ໃຫ້ຄວາມສາມາດໃນການເຮັດທຸລະ ກຳ (ຫລືຂຽນຂໍ້ມູນ) ໃສ່ຖານຂໍ້ມູນຫລັກແລະສະແຕນບາຍ/ຈຳ ລອງພ້ອມກັນ. ມັນພຽງແຕ່ຢືນຢັນວ່າການເຮັດທຸລະ ກຳ ແມ່ນປະສົບຜົນ ສຳ ເລັດເມື່ອການປ່ຽນແປງທັງ ໝົດ ທີ່ເຮັດໂດຍການເຮັດທຸລະ ກຳ ໄດ້ຖືກໂອນໄປຫາ ໜຶ່ງ ຫຼືຫຼາຍກວ່າເຄື່ອງແມ່ຂ່າຍທີ່ໃຊ້ງານໄດ້.

ເພື່ອເຮັດໃຫ້ການ ຈຳ ລອງແບບ synchronous_commit ຍັງຕ້ອງ ກຳ ນົດ (ເຊິ່ງແມ່ນຄ່າເລີ່ມຕົ້ນ, ດັ່ງນັ້ນບໍ່ ຈຳ ເປັນຕ້ອງມີການປ່ຽນແປງໃດໆ) ແລະທ່ານກໍ່ ຈຳ ເປັນຕ້ອງ ກຳ ນົດພາລາມິເຕີ synchronous_standby_names ໃຫ້ເປັນຄ່າທີ່ບໍ່ມີຄ່າ. ສຳ ລັບ ຄຳ ແນະ ນຳ ນີ້, ພວກເຮົາຈະ ກຳ ນົດມັນໃຫ້ທຸກຄົນ.

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

15. ຫຼັງຈາກນັ້ນໃຫ້ບໍລິການ PostgreSQL 12 ເພື່ອ ນຳ ໃຊ້ການປ່ຽນແປງ ໃໝ່.

# systemctl reload postgresql-12.service

16. ດຽວນີ້ເມື່ອທ່ານສອບຖາມຂັ້ນຕອນຂອງຜູ້ສົ່ງ WAL ໃນເຊີຟເວີຫລັກອີກເທື່ອ ໜຶ່ງ, ມັນຄວນຈະສະແດງສະຖານະພາບຂອງກະແສແລະຊິ້ງຂໍ້ມູນ sync_state.

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

ພວກເຮົາໄດ້ມາຮອດທ້າຍຂອງ ຄຳ ແນະ ນຳ ນີ້ແລ້ວ. ພວກເຮົາໄດ້ສະແດງວິທີການຕັ້ງຄ່າການ ຈຳ ລອງການ ນຳ ໃຊ້ຖານຂໍ້ມູນແບບ PostgreSQL 12 master-standby ໃນ CentOS 8. ພວກເຮົາຍັງໄດ້ກວມເອົາວິທີການເຮັດແບບ ຈຳ ລອງແບບ synchronous ໃນກຸ່ມ PostgreSQL.

ມີການ ນຳ ໃຊ້ແບບ ຈຳ ລອງຫຼາຍຢ່າງແລະທ່ານສາມາດເລືອກເອົາວິທີແກ້ໄຂທີ່ຕອບສະ ໜອງ ສະພາບແວດລ້ອມດ້ານໄອທີຂອງທ່ານແລະ/ຫຼື ຄຳ ຮ້ອງສະເພາະຂອງຂໍ້ມູນ. ສຳ ລັບລາຍລະອຽດເພີ່ມເຕີມ, ເຂົ້າໄປທີ່ Servers Log-Shipping Standby Servers ໃນເອກະສານ PostgreSQL 12.