diff options
author | Sachin Setiya <sachinsetia1001@gmail.com> | 2017-12-25 05:09:49 +0530 |
---|---|---|
committer | Sachin Setiya <sachin.setiya@mariadb.com> | 2017-12-25 13:57:42 +0530 |
commit | 2fe6186124abeda19f2ae01cd41dd1907ba611b8 (patch) | |
tree | 6c2c50f9f771fcc445b936d60095e504860d9cb2 /sql/log.h | |
parent | db3bdca7c2982aeb6848eb3517a669686381c760 (diff) | |
download | mariadb-git-2fe6186124abeda19f2ae01cd41dd1907ba611b8.tar.gz |
MDEV-10715 Galera: Replicate MariaDB GTID to other nodes in the cluster
Problem:- Gtid are not transferred in Galera Cluster.
Solution:- We need to transfer gtid in the case on either when cluster is
slave/master in async replication. In normal Gtid replication gtid are generated on
recieving node itself and it is always on sync with other nodes. Because galera keeps
node in sync , So all nodes get same no of event groups. So the issue arises when
say galera is slave in async replication.
A
| (Async replication)
D <-> E <-> F {Galera replication}
So what should happen is that all node should apply the master gtid but this does
node happen, becuase node E, F does not recieve gtid from D in write set , So what E(or F)
does is that it applies wsrep_gtid_domain_id, D server-id , E gtid next seq no. This
generated gtid does not always work when say A has different domain id.
So In this commit, on galera node when we see that this event is recieved from master
we simply write Gtid_Log_Event in write_set and send it to other nodes.
Diffstat (limited to 'sql/log.h')
-rw-r--r-- | sql/log.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/sql/log.h b/sql/log.h index 3026ca11e31..2118bd7a059 100644 --- a/sql/log.h +++ b/sql/log.h @@ -559,7 +559,13 @@ class MYSQL_BIN_LOG: public TC_LOG, private MYSQL_LOG bool write_transaction_to_binlog_events(group_commit_entry *entry); void trx_group_commit_leader(group_commit_entry *leader); bool is_xidlist_idle_nolock(); - +#ifdef WITH_WSREP + /* + When this mariadb node is slave and galera enabled. So in this case + we write the gtid in wsrep_run_commit itself. + */ + inline bool is_gtid_cached(THD *thd); +#endif public: /* A list of struct xid_count_per_binlog is used to keep track of how many |