PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Solusi Ketersediaan Tinggi Pengelompokan PG Teratas untuk PostgreSQL

Jika sistem Anda bergantung pada PostgreSQL dan Anda mencari solusi pengelompokan untuk Ketersediaan Tinggi, kami ingin memberi tahu Anda sebelumnya bahwa ini adalah tugas yang rumit tetapi bukan tidak mungkin untuk dicapai.

Dengan mempertimbangkan persyaratan toleransi kesalahan Anda, berikut adalah beberapa solusi pengelompokan ketersediaan tinggi yang dapat dipilih yang dapat membantu.

PostgreSQL tidak secara native mendukung solusi pengelompokan multi-master seperti MySQL atau Oracle. Namun demikian, banyak produk komersial dan komunitas menawarkan implementasi ini, termasuk replikasi dan penyeimbangan beban untuk PostgreSQL.

Untuk memulai, mari kita tinjau beberapa konsep dasar:

Apa itu Ketersediaan Tinggi?

Ketersediaan tinggi mengacu pada jumlah waktu layanan tersedia dan biasanya ditentukan oleh tingkat kinerja yang disepakati bisnis.

Redundansi adalah dasar untuk ketersediaan tinggi; jika terjadi insiden, Anda dapat terus mengoperasikan dan mengakses sistem tanpa masalah.

Pemulihan Berkelanjutan

Saat insiden terjadi, jika Anda harus memulihkan cadangan dan kemudian menerapkan log WAL (Write-Ahead Logging), waktu pemulihan akan sangat tinggi, dan tidak akan tersedia banyak.

Namun, jika Anda memiliki cadangan dan log yang diarsipkan di server darurat, Anda dapat menerapkan log saat mereka tiba. Jika log dikirim dan diterapkan setiap menit, basis kontingensi akan berada dalam pemulihan berkelanjutan dan akan memiliki status usang untuk produksi paling lama satu menit.

Basis Data Siaga

Ide dari database siaga adalah untuk menyimpan salinan database produksi yang selalu memiliki data yang sama dan siap digunakan jika terjadi insiden.

Ada beberapa cara untuk mengklasifikasikan database standby.

Berdasarkan sifat replikasi:

  • Siaga fisik:Blok disk disalin.

  • Siaga logis:Streaming perubahan data.

Dengan sinkronisitas transaksi:

  • Asinkron:Ada kemungkinan kehilangan data.

  • Sinkron:Tidak ada kemungkinan kehilangan data; Komit di master menunggu respons dari standby.

Berdasarkan penggunaan:

  • Siaga hangat:Tidak mendukung koneksi.

  • Siaga aktif:Mendukung koneksi hanya-baca.

Cluster

Kluster adalah sekelompok host yang bekerja bersama dan terlihat sebagai satu. Ini memberikan cara untuk mencapai skalabilitas horizontal dan kemampuan untuk memproses lebih banyak pekerjaan dengan menambahkan server.

Dapat menahan kegagalan sebuah node dan terus bekerja secara transparan. Bergantung pada apa yang dibagikan, ada dua model cluster:

  • Penyimpanan bersama:Semua node mengakses penyimpanan yang sama dengan informasi yang sama.

  • Tidak ada yang dibagikan:Setiap node memiliki penyimpanannya sendiri, yang mungkin atau mungkin tidak memiliki informasi yang sama dengan yang lain node, tergantung pada struktur sistem kami.

Sekarang mari kita tinjau beberapa opsi pengelompokan yang kita miliki di PostgreSQL.

Perangkat Blok Replika yang Didistribusikan

DRBD adalah modul kernel Linux yang mengimplementasikan replikasi blok sinkron menggunakan jaringan. Itu sebenarnya tidak mengimplementasikan cluster dan tidak menangani failover atau pemantauan. Anda memerlukan software pelengkap untuk itu, misalnya Corosync + Pacemaker + DRBD.

Contoh:

  • Corosync:Menangani pesan antar host.

  • Pacemaker:Memulai dan menghentikan layanan, memastikan layanan hanya berjalan pada satu host.

  • DRBD:Menyinkronkan data pada tingkat perangkat blok.

ClusterControl

ClusterControl adalah perangkat lunak manajemen dan otomatisasi tanpa agen untuk cluster database. Ini membantu menyebarkan, memantau, mengelola, dan menskalakan server/cluster database Anda langsung dari antarmuka penggunanya. Ini dapat menangani sebagian besar tugas administrasi yang diperlukan untuk memelihara server atau cluster database.

Dengan ClusterControl, Anda dapat:

  • Terapkan database mandiri, replika, atau kluster pada tumpukan teknologi pilihan Anda.

  • Otomatiskan failover, pemulihan, dan tugas sehari-hari secara seragam di seluruh database poliglot dan infrastruktur dinamis.

  • Buat pencadangan penuh atau tambahan secara manual atau jadwalkan.

  • Lakukan pemantauan real-time terpadu dan komprehensif dari seluruh database dan infrastruktur server Anda.

  • Menambahkan atau menghapus simpul dengan mudah dengan satu tindakan.

  • Klon kluster Anda ke pusat data/penyedia cloud lain

Jika Anda memiliki insiden di PostgreSQL, node Siaga Anda dapat dipromosikan ke Primer secara otomatis.

Ini adalah alat lengkap yang menawarkan manajemen siklus hidup operasi penuh dan otomatisasi melalui satu panel kaca. ClusterControl juga menyediakan uji coba gratis selama 30 hari sehingga Anda dapat mengevaluasinya, tanpa pamrih.

Rubyrep

Rubyrep adalah solusi yang menyediakan replikasi asinkron, multi-master, multi-platform (diimplementasikan di Ruby atau JRuby) dan multi-DBMS (MySQL atau PostgreSQL).

Ini didasarkan pada pemicu, dan tidak mendukung DDL, pengguna, atau hibah. Kesederhanaan penggunaan dan administrasi adalah tujuan utamanya.

Beberapa fitur termasuk:

  • Konfigurasi sederhana

  • Instalasi sederhana

  • Independen platform, desain tabel independen.

Pgpool-II

Pgpool-II adalah middleware yang bekerja antara server PostgreSQL dan klien database PostgreSQL.

Beberapa fitur termasuk:

  • Kolam koneksi

  • Replikasi

  • Keseimbangan beban

  • Kegagalan otomatis

  • Kueri paralel

Dapat dikonfigurasi di atas replikasi streaming:

Bucardo

Bucardo menawarkan replikasi master-slave berjenjang asinkron, berbasis baris, menggunakan pemicu dan antrian dalam database, dan replikasi master-master asinkron, berbasis baris, menggunakan pemicu dan resolusi konflik yang disesuaikan.

Bucardo memerlukan database khusus dan berjalan sebagai daemon Perl yang berkomunikasi dengan database ini dan semua database lain yang terlibat dalam replikasi. Itu dapat berjalan sebagai multi-master atau multi-slave.

Replikasi master-slave melibatkan satu atau lebih sumber menuju satu atau lebih target. Sumbernya harus PostgreSQL, tetapi targetnya bisa PostgreSQL, MySQL, Redis, Oracle, MariaDB, SQLite, atau MongoDB.

Beberapa fitur termasuk:

  • Keseimbangan beban

  • Budak tidak dibatasi dan dapat ditulis

  • Replikasi sebagian

  • Replikasi sesuai permintaan (perubahan dapat didorong secara otomatis atau sesuai keinginan)

  • Slave dapat "dihangatkan" untuk penyiapan cepat

Kekurangan:

  • Tidak dapat menangani DDL

  • Tidak dapat menangani objek besar

  • Tidak dapat mereplikasi tabel secara bertahap tanpa kunci unik

  • Tidak akan berfungsi pada versi yang lebih lama dari Postgres 8

Postgres-XC

Postgres-XC adalah proyek sumber terbuka untuk menyediakan solusi klaster PostgreSQL yang skalabel, sinkron, simetris, dan transparan. Ini adalah kumpulan komponen database yang digabungkan erat yang dapat diinstal di lebih dari satu perangkat keras atau mesin virtual.

Write-scalable berarti Postgres-XC dapat dikonfigurasi dengan server database sebanyak yang Anda inginkan dan menangani lebih banyak penulisan (memperbarui pernyataan SQL) dibandingkan dengan yang dapat dilakukan oleh satu server database.

Anda dapat memiliki lebih dari satu server database yang terhubung dengan klien, memberikan tampilan database tunggal yang konsisten di seluruh cluster.

Setiap pembaruan basis data dari server basis data mana pun segera terlihat oleh transaksi lain yang berjalan pada master yang berbeda.

Transparan berarti Anda tidak perlu khawatir tentang bagaimana data Anda disimpan di lebih dari satu server database secara internal.

Anda dapat mengonfigurasi Postgres-XC untuk berjalan di beberapa server. Data Anda disimpan dengan cara terdistribusi, dipartisi atau direplikasi, seperti yang Anda pilih untuk setiap tabel. Saat Anda mengeluarkan kueri, Postgres-XC menentukan di mana data target disimpan dan mengeluarkan kueri terkait ke server yang berisi data target.

Citus

Citus adalah pengganti PostgreSQL dengan fitur ketersediaan tinggi bawaan seperti sharding otomatis dan replikasi. Citus memecah database Anda dan mereplikasi beberapa salinan dari setiap pecahan di kluster node komoditas. Jika sebuah node dalam cluster menjadi tidak tersedia, Citus secara transparan mengalihkan semua penulisan atau kueri ke salah satu node lain yang menampung salinan shard yang terpengaruh.

Beberapa fitur termasuk:

  • Sharding logika otomatis

  • Replikasi bawaan

  • Replikasi sadar pusat data untuk pemulihan bencana

  • Toleransi kesalahan kueri menengah dengan penyeimbangan beban tingkat lanjut

Anda dapat meningkatkan waktu aktif aplikasi waktu nyata yang didukung oleh PostgreSQL dan meminimalkan dampak kegagalan perangkat keras pada kinerja. Anda dapat mencapainya dengan alat ketersediaan tinggi bawaan yang meminimalkan intervensi manual yang mahal dan rawan kesalahan.

PostgresXL

PostgresXL adalah solusi pengelompokan multi-master tanpa berbagi apa pun yang dapat secara transparan mendistribusikan tabel pada sekumpulan node dan mengeksekusi kueri secara paralel dengan node tersebut. Ini memiliki komponen tambahan yang disebut Manajer Transaksi Global (GTM) untuk memberikan tampilan cluster yang konsisten secara global.

PostgresXL adalah cluster database SQL open-source yang dapat diskalakan secara horizontal, cukup fleksibel untuk menangani berbagai beban kerja database:

  • Beban kerja menulis intensif OLTP

  • Kecerdasan Bisnis yang membutuhkan paralelisme MPP

  • Penyimpanan data operasional

  • Penyimpanan nilai kunci

  • GIS Geospasial

  • Lingkungan beban kerja campuran

  • Lingkungan yang dihosting penyedia multi-penyewa

Komponen:

  • Global Transaction Monitor (GTM):Global Transaction Monitor memastikan konsistensi transaksi di seluruh cluster.

  • Koordinator:Koordinator mengelola sesi pengguna dan berinteraksi dengan GTM dan node data.

  • Data Node:Data Node adalah tempat data sebenarnya disimpan.

Menutup

Ada banyak lagi produk yang tersedia untuk mengimplementasikan lingkungan ketersediaan tinggi Anda untuk PostgreSQL, tetapi Anda harus berhati-hati dengan:

  • Produk baru, belum cukup teruji

  • Proyek yang dihentikan

  • Batasan

  • Biaya lisensi

  • Implementasi yang sangat kompleks

  • Solusi tidak aman

Saat memilih solusi yang akan Anda gunakan, pertimbangkan juga infrastruktur Anda. Jika Anda hanya memiliki satu server aplikasi, tidak peduli seberapa banyak Anda telah mengonfigurasi ketersediaan database yang tinggi, jika server aplikasi gagal, Anda tidak dapat diakses. Anda harus menganalisis satu titik kegagalan dalam infrastruktur dengan baik dan mencoba menyelesaikannya.

Dengan mempertimbangkan poin-poin ini, Anda dapat menemukan solusi cluster ketersediaan tinggi yang menyesuaikan dengan kebutuhan dan persyaratan Anda, tanpa pusing. Jika Anda mencari sumber daya HA tambahan untuk database PG Anda, lihat postingan ini tentang penerapan PostgreSQL untuk ketersediaan tinggi.

Untuk tetap mendapatkan informasi terbaru tentang solusi manajemen basis data dan praktik terbaik, ikuti kami di Twitter dan LinkedIn dan berlangganan buletin kami.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL - klausa GROUP BY atau digunakan dalam fungsi agregat

  2. psycopg2.OperationalError:FATAL:protokol frontend tidak didukung 1234.5679:server mendukung 2.0 hingga 3.0

  3. Bagaimana Setseed() Bekerja di PostgreSQL

  4. Membuat pemicu untuk penyisipan tabel anak mengembalikan kesalahan yang membingungkan

  5. Apa yang dijelaskan PostgreSQL kepada saya dengan tepat?