1

我想刷新然后锁定 RDS 实例上所有 Mysql 数据库中的所有表。

按照 Mysql 文档,最简单的方法是运行:

FLUSH LOCAL TABLES WITH READ LOCK

参看。:http ://dev.mysql.com/doc/refman/5.6/en/flush.html

但是当我使用主用户(使用 RDS 实例创建向导创建)运行此查询时,我收到此错误:

Mysql::Error: Access denied for user 'my_db_user'@'%' (using password: YES)

my_db_user 在 %.

Mysql 引擎是 5.6.13。

我在这里想念什么?

4

2 回答 2

3

你不能在 RDS 上这样做。

FLUSH [LOCAL] TABLES WITH READ LOCK;不支持。我的假设是,它可能会干扰他们的“rdsadmin”用户(在进程列表中可见)为监视或管理您的实例所做的任何事情。

如果您正在尝试使用 mysqldump,那么--single-transaction就是要走的路:

https://forums.aws.amazon.com/thread.jspa?threadID=57642#

否则,如果您试图阻止写入,我知道的唯一选择是手动锁定所有表或使用可以枚举表并获取锁的自动脚本。

于 2013-10-24T16:29:28.340 回答
0

万一其他人来到这里尝试使用 AWS RDS Mysql 作为外部副本的源:

获取转储+二进制日志位置的方法是:

  1. 创建 RDS 只读副本
  2. 断开复制
  3. 从 RDS 副本转储并使用从副本中获取的主 binlog 位置
  4. 将转储从 RDS 只读副本导入到外部副本
  5. 将主 RDS 实例设置为外部副本中的源。

这里有更详细的描述。

于 2021-09-08T20:21:59.630 回答