PostgreSQL Streaming Replication จะสตรีมข้อมูล Write-Ahead Log (WAL) อย่างต่อเนื่องจากโหนดหลัก (มาสเตอร์) ไปยังโหนดสแตนด์บาย (สเลฟ) สร้างสำเนาฐานข้อมูลที่ใกล้เคียงเรียลไทม์เพื่อความพร้อมใช้งานสูงและความทนทานต่อข้อผิดพลาด
มาสเตอร์อ่าน/เขียน WAL Slave 1 Slave 2 อ่านอย่างเดียว อ่านอย่างเดียวการกำหนดค่าโหนดหลัก
1. เปิดใช้งานการเก็บถาวร WAL
แก้ไข postgresql.conf ?
archive_mode = on archive_command = 'cp %p /var/lib/pgsql/12/archive/%f' wal_level = replica max_wal_senders = 3
2. อนุญาตการเชื่อมต่อการจำลอง
แก้ไข pg_hba.conf ?
# TYPE DATABASE USER ADDRESS METHOD host replication repluser 192.168.1.20/32 md5
3. สร้างผู้ใช้การจำลอง
CREATE ROLE repluser WITH REPLICATION LOGIN PASSWORD 'securepass';
รีสตาร์ท PostgreSQL บนต้นแบบหลังจากการเปลี่ยนแปลงเหล่านี้
การกำหนดค่าโหนดรอง
1. การสำรองข้อมูลพื้นฐานจาก Master
sudo -u postgres pg_basebackup -h master_ip -D /var/lib/pgsql/12/data -U repluser -P -R
2. กำหนดค่า recovery.conf
สร้าง /var/lib/pgsql/12/data/recovery.conf ?
standby_mode = 'on' primary_conninfo = 'host=master_ip port=5432 user=repluser password=securepass' restore_command = 'cp /var/lib/pgsql/12/archive/%f "%p"'
3. เริ่มทาส
sudo systemctl start postgresql-12 sudo systemctl enable postgresql-12
ยืนยันการจำลอง
รันบนต้นแบบเพื่อตรวจสอบเรพลิกาที่เชื่อมต่อ ?
SELECT client_addr, state, sync_state FROM pg_stat_replication;
client_addr | state | sync_state ----------------+-----------+------------ 192.168.1.20 | streaming | async
การเฟลโอเวอร์ด้วยตนเอง
หากต้นแบบล้มเหลว
- ยกเลิกการเชื่อมต่อการจำลองจากต้นแบบที่ล้มเหลว
- บนทาส ให้ตั้งค่า
recovery_target_timeline = 'latest'ในrecovery.conf - รีสตาร์ท PostgreSQL บนทาสที่ได้รับการเลื่อนระดับ
- ตรวจสอบทาสอื่น ๆ ที่เชื่อมต่อกับต้นแบบใหม่โดยใช้
pg_stat_replication
บทสรุป
การจำลองแบบสตรีมมิ่ง PostgreSQL 12 บน CentOS 8 เกี่ยวข้องกับการกำหนดค่าการเก็บถาวร WAL และการเข้าถึงการจำลองแบบบนต้นแบบ การสร้างการสำรองข้อมูลพื้นฐานและ recovery.conf บนทาส จากนั้นตรวจสอบด้วย pg_stat_replication . การเฟลโอเวอร์ด้วยตนเองจะเลื่อนระดับทาสให้เป็นต้นแบบเมื่อจำเป็น