sql >> Database teknologi >  >> RDS >> PostgreSQL

Synkronisering af 2 database en kunne ikke commit

Da du ønsker at udføre en distribueret transaktion , skal du bruge to-faset commit-protokollen .

Du starter transaktioner på begge databaser som normalt, men i stedet for at begå dem, kører du

PREPARE TRANSACTION 'some_name';

Dette udfører alt, hvad der kan fejle under en commit og fortsætter transaktionerne. Når det er lykkedes, kører du følgende på begge databaser:

COMMIT PREPARED 'some_name';

for at begå transaktionerne.

Hvis noget fejler under PREPARE TRANSACTION , kører du følgende for at slippe af med allerede forberedte transaktioner:

ROLLBACK PREPARED 'some_name';

Bemærk, at du bruger transacrion-managersoftware, hvis du bruger forberedte transaktioner, så eventuelle forberedte transaktioner, der efterlades efter et nedbrud eller andet uventet problem, bliver ryddet op i pålideligt. Forberedte transaktioner, der ikke er forpligtet eller rullet tilbage, forbliver for evigt og vil med absolut sikkerhed bryde din database.




  1. Får maksimal sekventiel streak med begivenheder

  2. Hvordan genereres månedsliste i PostgreSQL?

  3. Vælg distinkt ... indre sammenføjning vs. vælg ... hvor id i (...)

  4. Omdøb MySQL-databasen