Sergei Golubchik <serg@askmonty.org> writes:
On Aug 10, Stewart Smith wrote:
Suppose we instead make the decision on the _master_ on how to split up the replication stream for parallel apply. Instead of a single server-id for the master, we can have multiple - let us call them "Source ID".
On the _master_, we will decide that two transactions in different databases are independent, and assign them different Source ID.
How would this work with a cross database transaction that depends on previous transactions in both database?
Same as in MySQL - it won't, so don't use per-database splitting in this case. You've missed the point, the main idea is about *where* to split the replication stream on parallel "independent" source streams. But *how* to split - is a separate question. There are many different approaches, per-database is just one of those.
Idea: if txn touches more than one database, record as metadata the position of other db, so slave just has to wait for at least that id to be applied in other database before applying this txn in this source. This seems like a relatively simple solution to the problem (unless i've missed something). -- Stewart Smith