Details
-
Task
-
Status: Closed (View Workflow)
-
Critical
-
Resolution: Fixed
-
None
Description
When run after master server crash --tc-heuristic-recover=rollback produces inconsistent server state with binlog still containing transactions that were rolled back by the option.
Such way recovered server may not be used for replication. E.g when such way recovered
ex-master is demoted into slave its binlog state needs further correction to subtract
the rolled back transactions from its binlog status. Otherwise the "new" slave might claim
those transactions as locally present at the (gtid) master-slave connection protocol. At the same time the actual "new" master may never have seen those transactions (because they never arrived at it when it was formerly slave, due to the crash).
This issue should be fixed with refining the recovery procedure with truncating binlog to cut off the prepared rolled back transactions. The method is also known as pioneered by FB
https://percona.community/blog/2018/08/23/question-about-semi-synchronous-replication-answer-with-all-the-details/
Once a transaction reaches the binary logs it should roll forward.
Attachments
Issue Links
- blocks
-
MDEV-11855 Make semisync crash safe with the cluster
- Open
- causes
-
MDEV-33465 an option to enable semisync recovery
- Closed
- includes
-
MDEV-26652 xa transactions binlogged in wrong order
- Stalled
- is duplicated by
-
MDEV-20996 Maxscale auto-failover with semi-sync replication is not providing a true HA solution
- Closed
- relates to
-
MDEV-21168 Active XA transactions stop slave from working after backup was restored.
- Closed
-
MDEV-25395 server recovery hits replication event checksum error
- Stalled
-
MDEV-33424 when both rpl_semi_sync_MASTER,SLAVE_enabled set the server should recover as master
- Closed
-
MDEV-18959 Engine transaction recovery through persistent binlog
- Stalled
- links to