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?
sumber
Jawaban:
Lihat repmrg :
Ia melakukan dua hal:
Untuk failover otomatis, repmgrd melakukan trik dan bukan SPOF di jaringan Anda, seperti pgPool. Namun, masih penting untuk memantau semua diaken dan membawanya kembali setelah kegagalan.
Versi 2.0 akan segera dirilis, termasuk RPM.
sumber
dalam file recovery.conf Anda, Anda harus menambahkan baris yang memberitahu postgres untuk failover dari master ke slave. Anda harus menambahkan
ketika Anda membuat file ini di jalur yang diberikan. node akan berubah. (file tidak termasuk apa pun itu hanya pemicu)
Anda dapat menemukan informasi tambahan tentang replikasi streaming
di sisi lain, mungkin akan membuatnya secara otomatis dibuat dengan beberapa trik tetapi menggunakan alat pemantauan dan membuat kegagalan manual akan lebih baik ..
sumber
Adakah yang mempertimbangkan menggunakan pgpool-II untuk ini?
http://pgpool.projects.postgresql.org/contrib_docs/simple_sr_setting/index.html
Saya mengatur replikasi untuk PostgreSQL. Tampaknya bagian yang sulit terjadi ketika tuan tua kembali.
Dari apa yang saya baca, pgpool sepertinya bisa mengotomatisasi sebagian besar dari itu. Namun saya tidak yakin apakah memanfaatkan fitur replikasi yang sudah ada di PostgreSQL 9.1.
sumber