google/mysql-ripple

Request for documentation for supported features

shlomi-noach opened this issue · 2 comments

Congratulations on releaseing ripple! Appreciate the effort it took to get this released.

Is it possible please to clarify whether:

  • semi-sync replication is supported? (both master- and replica- side)
  • parallel replication should be affected? I assume replicas using writesets should be good to go; how about group-commit based replication?
  • which binlog_format are supported?
  • which binlog_row_image are supported?

Thank you!

semi-sync replication is supported? (both master- and replica- side)

Semi-sync is supported master-side (i.e. for downloading binlogs from master). For replica-side semi-sync is not supported. But that doesn't seem to make sense, what kind of semantics that would have? Unless you mean some sort of propagation of semi-sync from master through Ripple to the replicas, which probably is still not worth it. Please tell me if I didn't understand what you mean.

parallel replication should be affected? I assume replicas using writesets should be good to go; how about group-commit based replication?

AFAIR, group commits based and writesets based parallel replication are based purely on the information written into the binlog events, right? Ripple saves binlog events as it receives them from master without any modifications, so I assume it shouldn't affect parallel replication in any way.

which binlog_format are supported?

All formats are supported. All Ripple needs to do is to distinguish BEGIN and COMMIT/XID events, or understand that an event is an independent transaction by itself (like e.g. ALTER TABLE). All of those are the same in all binlog formats, so Ripple doesn't care about the format that much. And we have internal test suite (which I still need to figure out how to opensource), which runs all tests from MySQL's "rpl" test suite with Ripple inserted between master and replica. Those tests are executed and pass with all the binlog formats.

which binlog_row_image are supported?

I don't think binlog_row_image affects Ripple's operation in any way too, so everything should be supported.

If you know the best way to put this information into the repo, please propose a PR.

Thank you for your answers!

Semi-sync is supported master-side (i.e. for downloading binlogs from master).

Heh, actually I considered this to be "replica side" (the binlog server being the replica). So I'm switching terminology to match yours.

For replica-side semi-sync is not supported. But that doesn't seem to make sense, what kind of semantics that would have?

Agreed, on further thought this doesn't make much sense.

If you know the best way to put this information into the repo, please propose a PR.

Happy to.