it-swarm.asia

Mengotomatiskan failover di PostgreSQL 9.1

Bagaimana satu setup 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 dikonfigurasi 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)

  1. su - postgres
  2. sentuh trigger.txt di/opt/pgsql91/data /
  3. recovery.conf menjadi recovery.done
  4. psql -c "; SELECT pg_start_backup ('backup', true)";
  5. rsync -a -v -e ssh/opt/pgsql91/data/10.0.66.1:/opt/pgsql91/data/ --exclude postmaster.pid
  6. psql -c "; SELECT pg_stop_backup ()";

Pada budak baru (10.0.66.1)

  1. buat recovery.conf: cp recovery.done ke recovery.conf
  2. vi recovery.conf ubah alamat ip: primary_conninfo = 'Host = 10.0.66.2'
  3. mulai postgresql

Jadi pertanyaan saya sekarang:

  1. Apakah ini cara yang benar untuk berganti peran?
  2. Adakah yang mengotomatiskan proses ini, jika demikian apa yang Anda lakukan?
  3. 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?
18
Craig Efrein

Lihat repmrg :

repmgr adalah seperangkat alat sumber terbuka yang membantu DBA dan administrator Sistem mengelola sekelompok database PostgreSQL ..

Dengan memanfaatkan kemampuan Hot Standby yang diperkenalkan pada PostgreSQL 9, repmgr sangat menyederhanakan proses pengaturan dan pengelolaan basis data dengan ketersediaan tinggi dan persyaratan skalabilitas.

repmgr menyederhanakan administrasi dan manajemen harian, meningkatkan produktivitas dan mengurangi biaya keseluruhan cluster PostgreSQL dengan:

  • memantau proses replikasi; memungkinkan DBA untuk mengeluarkan tinggi
  • operasi ketersediaan seperti switch-overs dan fail-overs.

Ia melakukan dua hal:

  1. repmgr: program perintah yang melakukan tugas-tugas di cluster Anda dan kemudian keluar
  2. repmgrd: daemon manajemen dan pemantauan yang mengawasi cluster dan dapat mengotomatiskan tindakan jarak jauh.

Untuk failover otomatis, repmgrd melakukan trik dan bukan SPOF di jaringan Anda, seperti pgPool. Namun, masih penting untuk memantau semua dinamo dan membawanya kembali setelah kegagalan.

Versi 2.0 akan segera dirilis, termasuk RPM.

8
Frank Heikens

dalam file recovery.conf Anda, Anda harus menambahkan baris yang memberitahukan postgres ke failover dari master ke slave. Anda harus menambahkan

trigger_file = '/any/file/to/trigger'

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 lebih baik.

4
sftsz

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.

0
Paulo SantAnna