sql >> Database >  >> RDS >> PostgreSQL

Synchroniseren van 2 database één mislukt om te committen

Aangezien u een gedistribueerde transactie wilt uitvoeren , hebt u het tweefasige commit-protocol nodig .

U start transacties op beide databases zoals gewoonlijk, maar in plaats van ze vast te leggen, voert u

PREPARE TRANSACTION 'some_name';

Dit voert alles uit dat zou kunnen mislukken tijdens een vastlegging en houdt de transacties in stand. Als dat gelukt is, voer je het volgende uit op beide databases:

COMMIT PREPARED 'some_name';

om de transacties vast te leggen.

Als er iets niet lukt tijdens de PREPARE TRANSACTION , voer je het volgende uit om reeds voorbereide transacties te verwijderen:

ROLLBACK PREPARED 'some_name';

Merk op dat je nodig transacrion manager software als u voorbereide transacties gebruikt, zodat voorbereide transacties die achterblijven na een crash of ander onverwacht probleem betrouwbaar worden opgeruimd. Voorbereide transacties die niet worden vastgelegd of teruggedraaid, blijven voor altijd bestaan ​​en zullen met absolute zekerheid uw database breken.




  1. Mysql drop-gebruiker met subsidies voor meerdere hosts

  2. mysql-tabel bijwerken met waar-parameter uit jtable-cel

  3. Splits een mysqldump-bestand op met meerdere databases, per database

  4. SQL Server voorwaardelijke stroom