Amazon RDS MySQL -无法执行“FLUSH TABLES WITH READ DATA”

6rqinv9w  于 2023-10-15  发布在  Mysql
关注(0)|答案(1)|浏览(131)

我使用的是AWS docummentation中的命令

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中的所有表都被锁定?

更新

感谢@Quassnoi,添加了--set-gtid-purged=off并解决了这个问题,类似于:

mysqldump -h source_MySQL_DB_instance_endpoint ^
    -u user ^
    -ppassword ^
    --port=3306 ^
    --single-transaction ^
    --routines ^
    --triggers ^
    --set-gtid-purged=off ^
    --databases  database database2 > path\rds-dump.sql
guykilcj

guykilcj1#

如果您的服务器设置为生成GTID(全局事务标识符),则即使启用了--single-transactionmysqldump也需要锁定表。如果您将转储加载到复制集群的一部分服务器上,则需要避免复制的某些竞争条件。
如果同时使用gtid_mode=ON--set-gtid=purged=ON|AUTO,则--single-transaction需要RELOADFLUSH_TABLES权限。此要求是在MySQL 8.0.32中添加的。
如果您的服务器上没有启用GTID(并且您在注解中指定了它没有启用),则不需要这样做,并且mysqldump不应该发出FLUSH TABLES WITH READ LOCK
有一个bug仍然使它锁定,但它应该在8.0.33(您正在使用的版本)中得到修复。也许它还在那里
尝试运行8.1或8.0.31版本的mysqldump,看看它是否修复了这个问题。
如果不使用转储填充副本,也可以将变量--set-gtid-purged设置为off。

相关问题