PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Синхронизирането на 2 база данни, едната не успя да се ангажира

Тъй като искате да извършите разпределена транзакция , вие се нуждаете от двуфазов протокол за ангажиране .

Започвате транзакции в двете бази данни както обикновено, но вместо да ги ангажирате, изпълнявате

PREPARE TRANSACTION 'some_name';

Това изпълнява всичко, което може да се провали по време на ангажимент и запазва транзакциите. След като това успее, изпълнявате следното и в двете бази данни:

COMMIT PREPARED 'some_name';

за извършване на транзакциите.

Ако нещо се провали по време на PREPARE TRANSACTION , изпълнявате следното, за да се отървете от вече подготвени транзакции:

ROLLBACK PREPARED 'some_name';

Имайте предвид, че имате нужда софтуер за управление на транзакрион, ако използвате подготвени транзакции, така че всички подготвени транзакции, останали след срив или друг неочакван проблем, да бъдат надеждно изчистени. Подготвените транзакции, които не са ангажирани или отменени, остават завинаги и с абсолютна сигурност ще разбият вашата база данни.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получа номера на промяната?

  2. Как да се свържете с localhost PostgreSQL на Mac с помощта на PSequel GUI?

  3. създаване на EJB доставчик javax.persistence.PersistenceContext.synchronization()Ljavax/persistence/SynchronizationType

  4. Как да върнете списък с налични съпоставяния в PostgreSQL

  5. Генериране на времеви серии между две дати в PostgreSQL