PostgreSQL 9.1'de otomatik yük devretme için iki özdeş sunucu nasıl kurulur?
işletim sistemi
Centos 5
PostgreSQL 9.1 kaynaktan derlendi
Postgres kullanıcı hesabı her iki makinede de mevcuttur ve her iki makineye bağlanmak için ssh şifresiz bir anahtara sahiptir.
Geçerli Kurulumum:
Ana sunucu yapılandırması:
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
Bekleme Sunucusu
postgresql.conf ve pg_hba.conf ana sunucuda yapılandırılanla aynıdır.
recovery.conf:
standby_mode = 'on'
primary_conninfo = 'host=10.0.66.1'
trigger_file = '/opt/pgsql91/data/trigger.txt'
HzRoot sayesinde, sunucuyu bekleme modundan master'a nasıl geçireceğimizi şimdi anlıyorum.
Aşağıdaki komutları kullanarak, yeni slave'i yeni master ile senkronize edebilir ve daha sonra replikasyon yedekleme ve çalıştırma elde edebilirim.
Yeni master'da (10.0.66.2)
- su - postgres
- / opt / pgsql91 / data / içindeki tetikleyici.txt'ye dokunun
- recovery.conf, recovery.done olur
- psql -c "; SEÇ pg_start_backup ('yedekleme', doğru)";
- rsync -a -v -e ssh / opt / pgsql91 / data / 10.0.66.1:/opt/pgsql91/data/ - postmaster.pid'i ekleyin
- psql -c "; SEÇ pg_stop_backup ()";
Yeni köle (10.0.66.1)
- recovery.conf dosyasını oluşturun: cp recovery.done to recovery.conf
- vi recovery.conf ip adresini değiştir: Primary_conninfo = 'host = 10.0.66.2'
- postgresql başlat
Sorularım şu an:
- Rolleri değiştirmenin doğru yolu bu mu?
- Kimse bu süreci otomatikleştirdi, eğer öyleyse ne yaptınız?
- Eşzamanlı çoğaltma etkinse, yeni ana sunucunun, slave'in yanıt vermesini beklediği için herhangi bir işlem yapmayacağını fark ettim. Ancak diğer sunucu, eski master kapalı olduğu için köle yoktur. Bu doğru mu veya yeni bağımlı çalışırken eşzamanlı çoğaltmayı geçici olarak devre dışı bırakmam gerekir mi?