Esto está orientado a Java, pero las API de cliente de base de datos nativas se pueden conectar a fuentes de datos JDBC. Tungsten Myosotis es un ejemplo para MySQL nativo del puente JDBC.
Tungsten Enterpriese es bueno para múltiples maestros asincrónicos. Creo que funciona para MySQL, PostgreSQL y Oracle. Puede ejecutarse de forma independiente o incrustada en una aplicación Java. Lo he visto funcionar para MySQL, pero afirman PostgreSQL. Su componente Replicator es de código abierto, pero la solución completa tiene más partes y requiere costos de licencia. Originalmente, Continuent tenía Sequoia para síncrono multimaestro, pero lo abandonaron y crearon Tungsten en su lugar para asíncrono multimaestro; consideran que es un negocio más estratégico que la consistencia ACID síncrona. Tungsten está escrito en Java, de ahí que ofrezcan Myosotis para conectar clientes de bases de datos nativas.
SymmetricDS es bueno para múltiples maestros asincrónicos. Es de código abierto. Instala / desinstala desencadenantes para capturar actualizaciones, en lugar del registro bin. Puede ejecutarse de forma independiente o incrustada en una aplicación Java.
HA-JDBC es bueno para múltiples maestros síncronos. Sustituye a los software obsoletos más antiguos como C-JDBC y Sequoia. Es de código abierto. Utiliza el compromiso de dos fases y funciona para PostgreSQL, MySQL, Oracle, SQL Server, Derby, Sybase y muchos otros a través de dialectos. Es principalmente para incrustar, por lo que incrustar en una aplicación Java para conectarlo a PostgreSQL. JGroups de Redhat / JBoss maneja los bloqueos distribuidos, las secuencias, el tiempo, el rand, etc. Una buena característica es el modo de transacción "serial" en lugar de "paralelo", si su aplicación experimentó puntos muertos y no admite la reversión. Utilicé con éxito este modo "serial" para actualizar una aplicación heredada que no era consciente del clúster DB, por lo que faltaba el código de reintento de transacción. El modo serie salvó el día y evitó una reescritura desagradable.
H2 es bueno para múltiples maestros síncronos. Es de código abierto. Admite bases de datos o clústeres independientes que utilizan el compromiso de dos fases, similar a la arquitectura HA-JDBC, pero es todo en uno en lugar de requerir un componente adicional para el compromiso de dos fases. No estoy seguro de si distribuye bloqueos por sí mismo, o depende de terceros como jGroups o Hazelcast.
Cualquier replicación basada en JDBC para PostgreSQL y otras bases de datos necesita un puente nativo para JDBC, a menos que su aplicación ya esté escrita en Java. Para MySQL, Tungsten Enterprise ofrece un componente opcional llamado Myosotis. Utilicé con éxito esto para conectar PHP / Perl / C / mysqlclient a JDBC, donde la fuente de datos JDBC resultó ser una fuente de datos proxy HA-JDBC que apunta a un clúster MySQL / InnoDB de 4 nodos.
Tungsten admite PostgreSQL en sus componentes Replicator y Router, pero no está seguro sobre el componente Myosotis. Tal vez. Los componentes del replicador / enrutador de tungsteno son para asíncronos multimaestro, pero Myosotis puede conectarlo a un back-end JDBC alternativo como HA-JDBC o H2 para síncrono.
Si hay un PostgreSQL nativo para el puente JDBC, me gustaría saberlo. En teoría, cualquier base de datos con un controlador JDBC Tipo 4 puede ser puenteada. El tipo 4 JDBC habla el protocolo de la base de datos nativa al igual que la interfaz de cliente nativa para esa base de datos, por lo que debe haber una asignación uno a uno de las llamadas nativas a las llamadas JDBC.