Kegagalan dan replikasi PostgreSQL


14

Saya mengevaluasi PostgreSQL 9.1 dan memiliki beberapa pertanyaan yang terkait dengan rincian failover dan replikasi.

Saya punya beberapa skenario pengujian. Yang pertama dengan server Master dan beberapa Slave. Jika Guru crash, saya ingin salah satu Budak menjadi Master. Setelah Master kembali ke keadaan normal, itu harus disinkronkan dengan server lain di cluster (terapkan semua perubahan yang dilakukan saat itu turun) dan klaim kembali peran Master atau menjadi seorang budak.

Masalah yang saya lihat dengan PostgreSQL dan skenario saat ini adalah sebagai berikut.

1) Saya tidak melihat alat bawaan untuk mendeteksi pemadaman server utama. Saya membaca bahwa pgpool dapat mengatasinya dan membuat file pemicu, saya juga membaca bahwa orang-orang menggunakan detak jantung Linux atau alat serupa untuk ini. Oke, saya bisa mendeteksi failover dan menetapkan Master in cluster baru. Akankah Budak lainnya mengerti bahwa ada Guru baru dan mereka harus mem-backup-nya sekarang?

2) Saya tidak mengerti prosedur failback. Konfigurasi host Master dan Slave berbeda. Jadi, akankah saya memiliki dua Master setelah kegagalan Master yang gagal? Bagaimana server kembali sinkron? Saya hanya melihat solusi manual seperti "transfer data folder ke server dan restart". Jadi apa solusinya atau praktik terbaik atau setidaknya kepala sekolah utama di sini?

3) Bagaimana saya harus menangani pemadaman server di sisi klien? Ketika saya membuat koneksi saya secara eksplisit menentukan IP server. Haruskah saya mengembangkan semacam ConnectionManager yang akan mengetahui struktur Master-Slave saya, mengirim permintaan hanya kepada Master dan jika ada kehilangan koneksi akan beralih ke server cadangan dan sebagainya? Saya membaca bahwa pgpool dapat menjadi titik masuk untuk aplikasi dan mengelola koneksi dengan cara yang benar. Apakah pgpool satu-satunya solusi di sini? Apakah ini menangani failover dan failback dengan baik?

4) Apakah ada solusi (komersial juga) sehingga saya dapat menghindari menyalin data secara manual, mengkonfigurasi ulang instance PostgreSQL dan hal-hal lain yang harus dilakukan dengan tangan? Jadi jenis konfigurasi cluster ketika semua orang dalam sinkronisasi, jelas siapa Master dan semuanya beralih secara otomatis tanpa perhatian operator?

Menurut utas dan artikel ini

Streaming replikasi dan failover pada PostgreSQL

Mengotomatiskan failover di PostgreSQL 9.1

http://denishjpatel.blogspot.com/2010/11/possibility-of-graceful-switchover.html

tidak ada solusi otomatis sepenuhnya untuk menyelesaikan pertanyaan ini. Apakah saya benar?

Terima kasih!


Mungkin layak untuk menunjuk ke 9.2 dokumen yang relevan .
Mike Sherrill 'Cat Recall'

Jawaban:


4
  1. budak tidak akan mengerti tuan baru. Anda harus melakukannya secara manual.
  2. ya mereka berbeda dan Anda harus membuat yang baru untuk master lama. Bagaimanapun siaga lama akan terus berfungsi sebagai master tetapi Anda harus mengatur max_wal_senders pada node itu. Anda juga harus mengatur pg_hba.conf dari master baru setelah failover. setelah failover (ketika node mengubah peran master-> slave slave-> master), Anda harus mentransfer file wal baru ke direktori data folder siaga baru yang Anda atur dalam file recovery.conf. atau cukup Anda bisa menggunakan rsync.

  3. mungkin Anda bisa menggunakan pgbouncer. dengan cara ini Anda hanya akan mengubah alamat server pgbouncer ke master baru.

  4. EnterpriseDB memiliki beberapa alat komersial. mungkin Anda bisa memeriksanya.

dan akhirnya ya kamu benar. tidak ada solusi otomatis sepenuhnya untuk menyelesaikan pertanyaan ini.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.