Amazon RDS MySQL - 无法执行“使用读锁刷新表”

问题描述 投票:0回答:1

我正在使用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 中?

mysql amazon-rds
1个回答
0
投票
如果您的服务器设置为生成

mysqldump

(全局事务标识符),即使启用 
--single-transaction
GTID
也需要锁定表。如果您将转储加载到属于复制集群一部分的服务器,则需要避免某些复制竞争条件。

如果同时有

RELOAD
FLUSH_TABLES
,则需要
--single-transaction
gtid_mode=ON
权限以及
--set-gtid=purged=ON|AUTO
。 MySQL 8.0.32 中添加了此要求。

如果您的服务器上未启用

gtid
(并且您已在注释中指定未启用),则不需要这样做,并且
mysqldump
不应发出
FLUSH TABLES WITH READ LOCK

有一个 bug 仍然导致它锁定,但应该已在 8.0.33(您正在使用的版本)中修复。也许它还在那里。

尝试运行 8.1 版本或 8.0.31 版本的

mysqldump
,看看是否可以解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.