sql >> Databasteknik >  >> RDS >> PostgreSQL

Synkronisering av 2 databas en misslyckades

Eftersom du vill utföra en distribuerad transaktion , behöver du tvåfas protokollet .

Du startar transaktioner på båda databaserna som vanligt, men istället för att utföra dem kör du

PREPARE TRANSACTION 'some_name';

Detta utför allt som kan misslyckas under en commit och kvarstår transaktionerna. När det har lyckats kör du följande på båda databaserna:

COMMIT PREPARED 'some_name';

för att genomföra transaktionerna.

Om något misslyckas under PREPARE TRANSACTION , kör du följande för att bli av med redan förberedda transaktioner:

ROLLBACK PREPARED 'some_name';

Observera att du behöver transacrion manager programvara om du använder förberedda transaktioner, så att alla förberedda transaktioner som lämnas kvar efter en krasch eller andra oväntade problem rensas upp på ett tillförlitligt sätt. Förberedda transaktioner som inte har begåtts eller återställts finns kvar för alltid och kommer med absolut säkerhet att bryta din databas.




  1. Vad betyder det när jag säger att det förberedda uttalandet är förkompilerat?

  2. PHP ser inte mysql-tillägget

  3. MySQL Query - får saknade poster när du använder group-by

  4. Oracle 10g:MIN/MAX kolumnvärdesuppskattning