Saya mencoba Postgres-XC dan belum mengimplementasikan SQL penuh (seperti SERIAL)
Postgres-R terlihat menarik tetapi "belum siap produksi" menurut pengembang.
Jadi saya menggunakan pgpool-II 3.0.1. Ya, itu bekerja dengan baik. Tapi sejauh yang saya bisa lihat itu hanya untuk 2 node PG.
Apakah ada sesuatu di luar sana yang sebenarnya siap produksi DAN mampu bekerja dengan banyak node PG?
replication
postgresql
mrkafk
sumber
sumber
Jawaban:
Sudahkah Anda mempertimbangkan Bucardo ? Ini multimaster asinkron. Ini belum sepenuhnya diketahui dan bukan solusi umum, tetapi mungkin patut dicoba.
sumber
Saya harus setuju dengan penilaian Peter: Tidak ada replikasi multi-master yang benar - benar bagus untuk Postgres sekarang. (Melakukan replikasi multi-master sejati adalah masalah yang sangat sulit, dan saya tidak terpikat dengan solusi yang tersedia.)
Dengan mengutip daftar solusi potensial Wikipedia yang mungkin ingin Anda selidiki:
sumber
Ini berorientasi pada Java, tetapi API klien basis data asli dapat dijembatani ke sumber data JDBC. Tungsten Myosotis adalah contoh untuk MySQL asli untuk JDBC bridging.
Tungsten Enterpriese baik untuk multi-master asinkron. Saya pikir ini berfungsi untuk MySQL, PostgreSQL, dan Oracle. Itu dapat menjalankan mandiri atau tertanam di aplikasi Java. Saya telah melihatnya berfungsi untuk MySQL, tetapi mereka mengklaim PostgreSQL. Komponen Replikator mereka adalah open-source, tetapi solusi lengkap memiliki lebih banyak bagian dan membutuhkan biaya lisensi. Continuent awalnya memiliki Sequoia untuk multi-master sinkron tetapi mereka meninggalkannya, dan menciptakan Tungsten sebagai gantinya untuk multi-master asinkron - mereka menganggap skala bisnis yang lebih strategis daripada konsistensi ACID sinkron. Tungsten ditulis di Jawa, oleh karena itu mereka menawarkan Myosotis untuk menjembatani klien database asli.
SymmetricDS baik untuk multi-master asynchronous. Ini adalah open-source. Ini menginstal / mencopot pemasangan memicu untuk menangkap pembaruan, bukan bin logging. Itu dapat menjalankan mandiri atau tertanam di aplikasi Java.
HA-JDBC baik untuk multi-master sinkron. Ini menggantikan perangkat lunak lama yang tidak berfungsi seperti C-JDBC dan Sequoia. Ini adalah open-source. Ia menggunakan komit dua fase dan berfungsi untuk PostgreSQL, MySQL, Oracle, SQL Server, Derby, Sybase, dan banyak lainnya melalui dialek. Ini terutama untuk embedded, jadi embed dalam aplikasi Java untuk menjembataninya ke PostgreSQL. Kunci, urutan, waktu, rand, dan sebagainya yang didistribusikan, ditangani oleh jGroups dari Redhat / JBoss. Salah satu fitur yang bagus adalah mode transaksi "serial" alih-alih "paralel", jika aplikasi Anda mengalami kebuntuan dan tidak mendukung rollback. Saya berhasil menggunakan mode "serial" ini untuk me-retrofit aplikasi lawas yang tidak disadari DB-cluster, jadi tidak ada kode coba lagi transaksi. Mode serial menyelamatkan hari dan menghindari penulisan ulang yang tidak menyenangkan.
H2 baik untuk multi-master sinkron. Ini adalah open-source. Ini mendukung database atau cluster mandiri menggunakan komit dua fase, mirip dengan arsitektur HA-JDBC, tetapi semuanya dalam satu alih-alih memerlukan komponen tambahan untuk komit dua fase. Tidak yakin apakah kunci itu didistribusikan sendiri, atau tergantung pada pihak ketiga seperti jGroups atau Hazelcast.
Setiap replikasi berbasis JDBC untuk PostgreSQL dan basis data lainnya memerlukan asli ke jembatan JDBC, kecuali aplikasi Anda sudah ditulis dalam Java. Untuk MySQL, Tungsten Enterprise menawarkan komponen opsional yang disebut Myosotis. Saya berhasil menggunakan ini untuk menjembatani PHP / Perl / C / mysqlclient ke JDBC, di mana sumber data JDBC kebetulan merupakan sumber data proxy HA-JDBC yang menunjuk ke 4-node MySQL / InnoDB cluster.
Tungsten mendukung PostgreSQL dalam komponen Replicator dan Router mereka, tetapi tidak yakin tentang komponen Myosotis. Mungkin. Tungsten Replicator / Router komponen untuk multi-master asynchronous, tetapi Myosotis dapat menjembatani Anda ke back-end JDBC alternatif seperti HA-JDBC atau H2 untuk sinkron.
Jika ada PostgreSQL asli dari JDBC bridge, saya ingin mendengarnya. Secara teori, basis data apa pun dengan driver JDBC Type 4 dapat dijembatani. Tipe 4 JDBC berbicara protokol basis data asli seperti antarmuka klien asli untuk basis data itu, jadi harus ada pemetaan satu-ke-satu dari panggilan asli ke panggilan JDBC.
sumber
Jawabannya adalah no.
sumber
Saya telah menggunakan londiste selama 2 tahun terakhir untuk replikasi multi-master di postgresql.
Anda menempatkan tabel Anda dalam antrian menggunakan pg_queue dan Anda dapat berlangganan sebanyak mungkin basis data lain yang Anda inginkan untuk setiap antrian, replikasinya bersifat atomis demi antrian dan sangat tangguh.
Anda dapat membaca tentang londiste di sini ( http://pgfoundry.org/projects/skytools/ ), inilah yang digunakan orang-orang Skype untuk kluster mereka, juga mereka yang membuatnya, jadi gandakan kerennya :)
sumber
Jika Anda masih tertarik, coba yang ini: http://www.symmetricds.org/ (khusus Java)
sumber
Saya menemukan sistem replikasi "multi-master" yang dapat digunakan:
dapatkan RabbitMQ http://www.rabbitmq.com/ - ini adalah pesan middleware.
mengkonfigurasi cluster Rabbit MQ di Rabbit.
buat antrian untuk setiap node dalam sebuah cluster dan ikat mereka ke pertukaran tipe 'fanout'.
Dengan cara ini pesan dikirim ke simpul mana saja dan antrian apa pun akan direplikasi ke semua simpul lainnya. Saya punya kode yang berfungsi untuk ini!
sumber