Skip to content
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

Merged
merged 1 commit into from
Dec 31, 2024

Conversation

mattlord
Copy link
Collaborator

@mattlord mattlord commented Dec 21, 2024

Copy link

netlify bot commented Dec 21, 2024

Deploy Preview for vitess ready!

Name Link
🔨 Latest commit 87e5a1c
🔍 Latest deploy log https://app.netlify.com/sites/vitess/deploys/676714b433e7df0008d4ccd8
😎 Deploy Preview https://deploy-preview-1906--vitess.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

@mattlord mattlord force-pushed the vrepl_efficient_repl branch from 615da6d to be1df4f Compare December 21, 2024 19:17
@mattlord mattlord force-pushed the vrepl_efficient_repl branch from be1df4f to 87e5a1c Compare December 21, 2024 19:19
@deepthi deepthi changed the title Add some documentation for https://github.com/vitessio/vitess/pull/17345 Add some documentation for supported MySQL replication modes Dec 31, 2024

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).
Copy link
Member

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.

Copy link
Collaborator Author

@mattlord mattlord Dec 31, 2024

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.

@deepthi deepthi merged commit d5e3c71 into prod Dec 31, 2024
5 checks passed
@deepthi deepthi deleted the vrepl_efficient_repl branch December 31, 2024 05:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants