我正在使用AWS文档
中的确切命令mysqldump -h source_MySQL_DB_instance_endpoint ^
-u user ^
-ppassword ^
--port=3306 ^
--single-transaction ^
--routines ^
--triggers ^
--databases database database2 > path\rds-dump.sql
但我收到错误:
mysqldump: Couldn't execute 'FLUSH TABLES WITH READ LOCK': Access denied for user 'admin'@'%' (using password: YES) (1045)
此命令仅在删除
--single-transaction
选项时才有效。为什么?
我的MySQL RDS版本是
8.0.33
在这种情况下,删除
--single-transaction
时,所有表都被锁定在 Amazon RDS MySQL 中?
mysqldump
(全局事务标识符),即使启用
--single-transaction
,
GTID
也需要锁定表。如果您将转储加载到属于复制集群一部分的服务器,则需要避免某些复制竞争条件。
如果同时有
和RELOAD
,则需要FLUSH_TABLES
或--single-transaction
权限以及gtid_mode=ON
。 MySQL 8.0.32 中添加了此要求。--set-gtid=purged=ON|AUTO
如果您的服务器上未启用
gtid
(并且您已在注释中指定未启用),则不需要这样做,并且 mysqldump
不应发出 FLUSH TABLES WITH READ LOCK
。
有一个 bug 仍然导致它锁定,但应该已在 8.0.33(您正在使用的版本)中修复。也许它还在那里。
尝试运行 8.1 版本或 8.0.31 版本的
mysqldump
,看看是否可以解决问题。