繁体   English   中英

仅在 linux 上出现 AWS RDS `flush tables` 错误的 mysqldump

[英]mysqldump for AWS RDS `flush tables` error on linux only

我有一个使用 mysqldump 从 AWS RDS MariaDB 导出数据的过程,该过程已在 Concourse 的 docker-image 中成功运行多年。

从两天前的晚上开始,该过程开始失败并出现错误:

mysqldump: Couldn't execute 'FLUSH TABLES WITH READ LOCK': Access denied for user 'admin'@'%' (using password: YES) (1045)

AWS 的官方解释似乎是因为它们不允许主用户或 GLOBAL READ LOCK 的超级权限,如果设置了 --master-data 选项,mysqldump 将失败。

我没有设置该选项。 我正在运行这些标志:

mysqldump -h ${SOURCE_DB_HOST} ${SOURCE_CREDENTIALS} ${SOURCE_DB_NAME} --single-transaction --compress | grep -v '^SET .*;$' > /tmp/dump.sql

从我的本地 Mac 执行时,mysqldump 工作正常。 它失败并显示无法仅从 linux 环境执行带读锁的冲洗表的错误。

我的问题是,有谁知道如何在 linux 上的 mysqldump 中禁用 FLUSH TABLES WITH READ LOCK 命令?

编辑:很高兴接受@sergey-payu 下面的回答,因为它解决了我的问题,但这里有一个指向 MySQL 错误报告的链接,以帮助遇到此问题的其他任何人https://bugs.mysql.com/bug.php? id=109685

几天前我遇到了同样的问题。 我的 mysqldump 脚本多年来一直运行良好,直到它开始给我Access denied; you need (at least one of) the RELOAD privilege(s) for this operation Access denied; you need (at least one of) the RELOAD privilege(s) for this operation 我的第一直觉是授予此特权。 但在那之后我开始遇到Access denied for user 'user'@'%' (using password: YES) (1045)错误,这在 AWS 文档中有记录。 经过几个小时的调查,结果证明这是 mysql 的最新 5.7.41 版本的错误(它于 1 月 17 日发布,正是我们开始出错的时间)。 降级到 5.7.40 解决了这个问题。 有趣的是, 5.7.41 更新日志没有列出任何接近 FLUSH TABLES WITH READ LOCK 或默认值的内容。

根据 5.7.41 变更日志,

同时使用选项 --single-transaction 和 --set-gtid-purged=ON 时,mysqldump 备份的数据和 GTID 不一致。 这是因为 GTID_EXECUTED 是在转储结束时获取的,此时服务器上的 GTID 可能已经增加了。 有了这个修复,在转储开始时执行带读锁的冲洗表,然后立即获取 GTID_EXECUTED,以确保其值与 mysqldump 拍摄的快照一致。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM