-
Notifications
You must be signed in to change notification settings - Fork 205
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add some documentation for supported MySQL replication modes #1906
Conversation
✅ Deploy Preview for vitess ready!
To edit notification comments on pull requests, go to your Netlify site configuration. |
615da6d
to
be1df4f
Compare
Signed-off-by: Matt Lord <[email protected]>
be1df4f
to
87e5a1c
Compare
|
||
Vitess requires the use of [Row-Based Replication (RBR)](https://dev.mysql.com/doc/refman/en/replication-formats.html) with [GTIDs](https://dev.mysql.com/doc/refman/en/replication-gtids.html) enabled: [`--binlog-row-format=ROW`](https://dev.mysql.com/doc/refman/en/replication-options-binary-log.html#sysvar_binlog_format) and [`--gtid-mode=ON`](https://dev.mysql.com/doc/refman/en/replication-options-gtids.html#sysvar_gtid_mode). | ||
|
||
Vitess also recommends [`FULL`](https://dev.mysql.com/doc/refman/en/replication-options-binary-log.html#sysvar_binlog_row_image) binary log images in order to support all manner of transformations in [VReplication workflows](../../vreplication/vreplication/), but in v17 we added *experimental* support for [`--binlog-row-image=NOBLOB`](https://dev.mysql.com/doc/refman/en/replication-options-binary-log.html#sysvar_binlog_row_image) (see [#1290](https://github.com/vitessio/vitess/pull/12905) for more details). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What would it take to move NOBLOB out of "experimental"? I'm curious why this was done as experimental whereas we seem to be more confident about our ability to support PARTIAL_JSON.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We expect and know that some things will fail with NOBLOB, because we lose information in the binary log events. There's no before OR after image value for the BLOB/TEXT columns when not updated in the row, which means we lose information and we know that some OnlineDDL and Materialize workflows will fail because we lack information to perform accurate transformations. We also know e.g. that changing the PK definitions on a table on the target will cause MoveTables workflows to fail if you update the PK column values in the table. That's what this is about: https://github.com/vitessio/vitess/pull/17345/files#r1892674955
With PARTIAL_JSON nothing should fail. That's because we don't lose information: there's always the BEFORE image value along with a diff in the AFTER image that can be applied to that before value in order to get the full after value.
Docs for vitessio/vitess#17345
Preview: https://deploy-preview-1906--vitess.netlify.app/docs/22.0/reference/features/mysql-replication/#mysql-replication-modes