UPDATE_ROWS_EVENTs are not in MINIMAL row image format

Hi,

I have 3 master servers (5.7.35-38) and all of them have binlog_row_image = MINIMAL. But in binary logs I still see UPDATE_ROWS_EVENTs in FULL row image format if they originate from another master.

This is how UPDATE_ROWS_EVENTs look like in binary logs (same table, PK present):

On master A:
UPDATE from master A → MINIMAL row image format
UPDATE from master B → FULL row image format
UPDATE from master C → FULL row image format

On master B:
UPDATE from master A → FULL row image format
UPDATE from master B → MINIMAL row image format
UPDATE from master C → FULL row image format

On master C:
UPDATE from master A → FULL row image format
UPDATE from master B → FULL row image format
UPDATE from master C → MINIMAL row image format

Is there any way how to store all UPDATE_ROWS_EVENTs in MINIMAL row image format on all master servers?

1 Like

This probably has to do with log_slave_updates functionality not going through a proper code path. Have you searched bugs.mysql.com for similar reports?

1 Like

Yes, I did and found nothing, but I don’t know at all what to search for. Do you recommend to file this behavior as a bug there?

1 Like

I’m wondering if this is intended behavior. You only see this issue when an event originates from another server, so I’m sure this has something to do with log_slave_updates functionality and the potential for a replica to be source for another replica.

1 Like