วิธีหนึ่งทำการติดตั้งสองเซิร์ฟเวอร์ที่เหมือนกันสำหรับการเฟลโอเวอร์อัตโนมัติใน PostgreSQL 9.1
ระบบปฏิบัติการ
Centos 5
PostgreSQL 9.1 รวบรวมจากแหล่งข้อมูล
บัญชีผู้ใช้ postgres มีอยู่ในเครื่องทั้งสองเครื่องและมีรหัสผ่าน ssh ที่ไม่มีรหัสผ่านเพื่อเชื่อมต่อกับทั้งสองเครื่อง
การตั้งค่าปัจจุบันของฉัน:
การกำหนดค่าเซิร์ฟเวอร์หลัก:
postgresql.conf:
listen_address = '*'
wal_level = hot_standby
max_wal_senders = 3
checkpoint_segments = 16
wal_keep_segments = 8
archive_mode = on
archive_command = 'cp "%p" /opt/pgsql91/archive/"%f"'
pg_hba.conf:
host replication all 10.0.66.1/32 trust
host replication all 10.0.66.2/32 trust
เซิร์ฟเวอร์แสตนด์บาย
postgresql.conf และ pg_hba.conf เหมือนกับสิ่งที่กำหนดค่าไว้บนเซิร์ฟเวอร์ต้นแบบ
recovery.conf:
standby_mode = 'on'
primary_conninfo = 'host=10.0.66.1'
trigger_file = '/opt/pgsql91/data/trigger.txt'
ขอบคุณ hzRoot ตอนนี้ฉันเข้าใจวิธีการเปลี่ยนเซิร์ฟเวอร์จากโหมดสแตนด์บายเป็นแบบมาสเตอร์
ด้วยการใช้คำสั่งต่อไปนี้ฉันสามารถซิงโครไนซ์ทาสตัวใหม่กับต้นแบบใหม่แล้วรับการสำรองข้อมูลการจำลองแบบและทำงาน
บนต้นแบบใหม่ (10.0.66.2)
- su - postgres
- touch trigger.txt ใน / opt / pgsql91 / data /
- recovery.conf กลายเป็น recovery.done
- psql -c "; SELECT pg_start_backup ('สำรองข้อมูล', จริง)";
- rsync -a -v -e ssh / opt / pgsql91 / data / 10.0.66.1:/opt/pgsql91/data/ --exclude postmaster.pid
- psql -c "; SELECT pg_stop_backup ()";
บนทาสใหม่ (10.0.66.1)
- สร้าง recovery.conf: cp recovery.done ไปที่ recovery.conf
- vi recovery.conf เปลี่ยนที่อยู่ IP: primary_conninfo = 'host = 10.0.66.2'
- เริ่ม postgresql
ดังนั้นตอนนี้คำถามของฉัน:
- นี่เป็นวิธีที่ถูกต้องในการสลับบทบาทหรือไม่
- มีใครที่ทำกระบวนการนี้โดยอัตโนมัติถ้าเป็นเช่นนั้นคุณทำอะไร
- ถ้าเปิดใช้งานการจำลองแบบซิงโครนัสฉันสังเกตว่าเซิร์ฟเวอร์ต้นแบบใหม่จะไม่ยอมรับธุรกรรมใด ๆ เพราะกำลังรอให้สลาฟตอบกลับ ไม่มีทาสอย่างไรก็ตามเนื่องจากเซิร์ฟเวอร์อื่นต้นแบบเก่าไม่ทำงาน สิ่งนี้ถูกต้องหรือฉันต้องปิดใช้งานการจำลองแบบซิงโครนัสชั่วคราวในขณะที่ทาสใหม่ไม่ทำงานหรือไม่