summaryrefslogtreecommitdiff
path: root/sql/log.h
diff options
context:
space:
mode:
authorSachin Setiya <sachinsetia1001@gmail.com>2017-12-25 05:09:49 +0530
committerSachin Setiya <sachin.setiya@mariadb.com>2017-12-25 13:57:42 +0530
commit2fe6186124abeda19f2ae01cd41dd1907ba611b8 (patch)
tree6c2c50f9f771fcc445b936d60095e504860d9cb2 /sql/log.h
parentdb3bdca7c2982aeb6848eb3517a669686381c760 (diff)
downloadmariadb-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.h8
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