pt-table-sync requires binlog_format=STATEMENT even with --print and --dry-run

I would like to use pt-table-sync to check if the slave has the same data as its master. But I want it to be a read-only check, without any changes to the master or slave.

I tried:

pt-table-sync --print --dry-run --sync-to-master --verbose h=localhost,D=xxx,t=xxx,u=xxx,p=xxx

pt-table-sync --print --dry-run --verbose h=localhost,D=xxx,t=xxx,u=xxx,p=xxx h=master_ip,P=xxx,D=xxx,t=xxx,u=xxx,p=xxx

pt-table-sync --print --dry-run --verbose h=master_ip,P=xxx,D=xxx,t=xxx,u=xxx,p=xxx h=localhost,D=xxx,t=xxx,u=xxx,p=xxx

In all cases I got the error:

This tool requires binlog_format=STATEMENT, but the current binlog_format is set to ROW and an error occurred while attempting to change it.

Is it possible to do a read-only check, without changing anything on either the master or slave? In other words, the users used to do the checking only have the SELECT privilege.

Hi,

If you want to check data consistency of slave with master then you should use pt-table-checksum and for the binlog format check limitations.
You can use, -[no]check-binlog-format
[url]pt-table-checksum — Percona Toolkit Documentation

After checking cheksums, if you found data inconsistency then you can use pt-table-sync to sync the master and slave.