sql >> Base de Datos >  >> RDS >> PostgreSQL

La sincronización de 2 bases de datos no se pudo confirmar

Dado que desea realizar una transacción distribuida , necesita el protocolo de confirmación de dos fases .

Inicia transacciones en ambas bases de datos como de costumbre, pero en lugar de confirmarlas, ejecuta

PREPARE TRANSACTION 'some_name';

Esto realiza todo lo que podría fallar durante una confirmación y persiste en las transacciones. Una vez que haya tenido éxito, ejecute lo siguiente en ambas bases de datos:

COMMIT PREPARED 'some_name';

para confirmar las transacciones.

Si algo falla durante PREPARE TRANSACTION , ejecute lo siguiente para deshacerse de las transacciones ya preparadas:

ROLLBACK PREPARED 'some_name';

Tenga en cuenta que necesita software de administrador de transacciones si usa transacciones preparadas, de modo que cualquier transacción preparada que quede atrás después de un bloqueo u otro problema inesperado se limpie de manera confiable. Las transacciones preparadas que no se comprometen o revierten permanecen para siempre y con absoluta certeza romperán su base de datos.