-
pedro.gomes authored
Not being transactional, View Change events always suffered with problems when we wrote them to the binlog and relay log. On Relay log: When the View Change event was the last event in the log, this meant that the relay log positions wouldn't be update. Upon plugin restart this meant that the events would be again written to the binlog. On Binlog: When written to the binlog the events would not any support to allow skipping them when we connected to the same master twice for example. Other problems were that we are not able to track when the event was written to relay_log/binlog without checking log positions or thread states. MTS issues are also predictable in the near future Solution: When queued to the relay log, the View Change event will be surrounded by a transactional block. GTID BEGIN VIEW CHANGE COMMIT This need changes to the event writing routines as it now needs to be written to the binlog cache that will be flushed by the commit.
pedro.gomes authoredNot being transactional, View Change events always suffered with problems when we wrote them to the binlog and relay log. On Relay log: When the View Change event was the last event in the log, this meant that the relay log positions wouldn't be update. Upon plugin restart this meant that the events would be again written to the binlog. On Binlog: When written to the binlog the events would not any support to allow skipping them when we connected to the same master twice for example. Other problems were that we are not able to track when the event was written to relay_log/binlog without checking log positions or thread states. MTS issues are also predictable in the near future Solution: When queued to the relay log, the View Change event will be surrounded by a transactional block. GTID BEGIN VIEW CHANGE COMMIT This need changes to the event writing routines as it now needs to be written to the binlog cache that will be flushed by the commit.
Loading