Bagaimana caranya mensetup dua server identik untuk failover otomatis di PostgreSQL 9.1.
OS
Centos 5
PostgreSQL 9.1 dikompilasi dari sumber
. Akun pengguna postgres ada di kedua mesin dan memiliki kunci ssh tanpa kata sandi untuk terhubung ke kedua mesin.
Pengaturan Saya Saat Ini:
Konfigurasi server master:
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
Server Siaga
postgresql.conf dan pg_hba.conf identik dengan apa yang dikonfigurasikan pada server master.
recovery.conf:
standby_mode = 'on'
primary_conninfo = 'host=10.0.66.1'
trigger_file = '/opt/pgsql91/data/trigger.txt'
Berkat hzRoot, saya sekarang mengerti cara beralih server dari standby ke master.
Dengan menggunakan perintah berikut, saya dapat menyinkronkan budak baru dengan master baru dan kemudian mendapatkan cadangan replikasi dan berjalan.
Pada master baru (10.0.66.2)
- su - postgres
- sentuh trigger.txt di / opt / pgsql91 / data /
- recovery.conf menjadi recovery.done
- psql -c "; SELECT pg_start_backup ('backup', true)";
- rsync -a -v -e ssh / opt / pgsql91 / data / 10.0.66.1:/opt/pgsql91/data/ - kecuali postmaster.pid
- psql -c "; SELECT pg_stop_backup ()";
Pada budak baru (10.0.66.1)
- buat recovery.conf: cp recovery.done ke recovery.conf
- vi recovery.conf ubah alamat ip: primary_conninfo = 'host = 10.0.66.2'
- mulai postgresql
Jadi pertanyaan saya sekarang:
- Apakah ini cara yang benar untuk berganti peran?
- Adakah yang mengotomatiskan proses ini, jika demikian apa yang Anda lakukan?
- Jika replikasi sinkron diaktifkan, saya perhatikan server master baru tidak akan melakukan transaksi apa pun karena menunggu budak merespons. Namun tidak ada budak karena server lain, master lama turun. Apakah ini benar atau apakah saya perlu menonaktifkan replikasi sinkron sementara sementara budak baru turun?