VReplication FAQ
Common issues/questions while operating VReplication workflows.
What mysql permissions are needed by VReplication?
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, FILE,
REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES,
LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW,
SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER
ON *.* TO 'vt_filtered'@'localhost';
``` Why am I seeing io.EOF errors in my workflow?
`io.EOF` errors can be difficult to track down. These are usually caused by an issue at the mysql server layer. You will need to consult the source and target vttablet logs in order to know for sure in each case. Here are some possible reasons:
- GTID is not enabled on the server. VReplication requires `GTID=on` (`permissible` is **not** supported)
- Permissions are not setup correctly for the vreplication related mysql users (in particular the \`vt\_filtered\` user by defualt).
- Row-based replication (RBR) `binlog_format=row` is not enabled. Statement-based replication (SBR) is **not** supported by VReplication
- The mysql server is down or not reachable
What GTID-related options do I need to set in my my.cnf?
log_bin=1 binlog_format=ROW binlog_row_image=full ``` If I can’t turn GTIDs on, can I run a VReplication workflow using —db_flavor=FilePos instead?
Yes, you can run VReplication workflows with the pre MySQL 5.6 file and position method but this should only be used as a last resort when it’s not possible to modify the configuration of the source. This is because the File and Position method is not fault tolerant and if any error or failure/failover is encountered you will need to throw away the existing workflow and start another one anew.