仅在 Linux 上针对 AWS RDS“刷新表”错误的 mysqldump

cja*_*ell 30 linux amazon-rds mariadb

我有一个使用 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)
Run Code Online (Sandbox Code Playgroud)

AWS的官方解释似乎是,因为它们不允许主用户或全局读锁的超级权限,所以如果设置了 --master-data 选项,mysqldump 就会失败。

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

mysqldump -h ${SOURCE_DB_HOST} ${SOURCE_CREDENTIALS} ${SOURCE_DB_NAME} --single-transaction --compress | grep -v '^SET .*;$' > /tmp/dump.sql
Run Code Online (Sandbox Code Playgroud)

从我的本地 Mac 执行时 mysqldump 工作正常。它失败并出现错误,无法仅从 Linux 环境执行 FLUSH TABLES WITH READ LOCK。

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

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

Ser*_*ayu 23

几天前我遇到了同样的问题。我的 mysqldump 脚本多年来一直工作得很好,直到它开始给我错误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 文档中。经过几个小时的调查,结果发现这是最新 5.7.41 版本 mysql 的一个错误(它于 1 月 17 日发布,正是我们开始出现错误的时间)。降级到 5.7.40 解决了该问题。有趣的是,5.7.41 变更日志没有列出任何接近 FLUSH TABLES WITH READ LOCK 或默认值的内容。

  • 对于想要回滚的 Ubuntu 上的任何人,这就是我所做的:“sudo apt-get install mysql-client-8.0=8.0.19-0ubuntu5”,然后是“sudo apt-get install mysql-client-core-8.0=8.0.19” -0ubuntu5` 这将为您提供 mysqldump 版本 8.0.19,它解决了问题> 我还保留了两个软件包:`sudo apt-markhold mysql-client-8.0` 和 `sudo apt-markhold mysql-client-core -8.0` (14认同)
  • 回答我自己的评论,如果有人在 ubuntu 22.04 中遇到此问题,根据“apt-cache madison”,要修复的版本是初始“jammy”,即“8.0.28-0ubuntu4” (3认同)
  • @Kay在我的例子中(在AWS托管的ubuntu 22.04) `apt-get install mysql-client-core-8.0=8.0.28-0ubuntu4 mysql-client-8.0=8.0.28-0ubuntu4; apt-markhold mysql-client-core-8.0 mysql-client-8.0` 请注意,您的可用软件包可能会根据可用的发行版/存储库等而有所不同。作为任何基于 apt 的发行版的通用解决方案,是使用 `apt- 检查可用版本缓存 madison <package>` 查看为您的系统提供的版本 (3认同)
  • 我向 Ubuntu 提交了一个错误(https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/2003866),他们指向 [109685](https://bugs.mysql.com /bug.php?id=109685) 上游。109701 也可能相关。 (2认同)

小智 23

除了授予我的用户 PROCESS 权限外,我发现该--set-gtid-purged=OFF选项对我有用。

mysqldump --single-transaction --set-gtid-purged=OFF -h {host} {schema}

从 Ubuntu 22.04 升级到 AWS RDS MySQL 8.0.33


小智 13

我发现安装 MariaDB 客户端可以解决这个问题。

在 Ubuntu 中,运行:

sudo apt remove mysql-client -y && sudo apt install mariadb-client -y
Run Code Online (Sandbox Code Playgroud)