MySQL Router 8.4
The following describes read-only statements:
Statements are read-only if they start with:
If they start with any of the above and do not contain functions or keywords which must be executed on a read-write server. Such as:
GET_LOCK()
FOR UPDATE|SHARE
LOCK IN SHARE MODE
Some functions can produce a write from within a read-only statement. Such statements fail with an error similar to the following
The MySQL server is running with the --super-read-only option so it cannot execute this statement.
Such statements can be explicitly routed to a read-write
server, with ROUTER SET or
query_attributes. See
Per-Session Configuration.
You can also wrap the statement in a
START
TRANSACTION ... COMMIT.
The following describes read-write statements:
The following DML: CALL,
INSERT,
UPDATE,
DELETE,
REPLACE,
IMPORT TABLE,
LOAD DATA,
LOAD XML,
WITH...UPDATE/DELETE.
The following Account Management statements:
GRANT,
REVOKE,
RENAME USER,
CREATE ROLE,
CREATE USER,
DROP ROLE,
DROP USER,
SET PASSWORD,
SET ROLE,
SET DEFAULT ROLE.
The following Transaction and Locking statements:
BEGIN,
START
TRANSACTION , XA,
SAVEPOINT,
ROLLBACK,
COMMIT.
The following database administration statements:
SHOW CREATE...,
SHOW VARIABLES,
SHOW STATUS,
SET TRANSACTION
(including SET SESSION ...),
SET NAMES,
SET CHARACTER SET,
FLUSH PRIVILEGES.
The following table maintenance statements:
ANALYZE TABLE,
OPTIMIZE TABLE,
CHECK TABLE,
REPAIR TABLE.
The following statements are not supported if
access_mode=auto:
Any statement which is not read-only or read-write. This includes ALTER RESOURCE GROUP Statement, Replication Statements, and Other Administrative Statements.