4

编辑:我不想编辑只读副本。我是说我确实编辑了它,但我对为什么能够这样做感到困惑。

我在美国西部有一个数据库。我在孟买做了一个只读副本,所以印度的用户不会遇到缓慢的问题。出于好奇,我尝试在 Mumbai 只读副本数据库中编辑一行,希望得到一个拒绝我的写入尝试的安全错误(毕竟,它是一个 READ 副本)。但是写操作是成功的。这是为什么?这不应该是一个只读数据库吗?

然后我去了主数据库,希望至少可以同步写入过程,但是我的写入执行没有持续。主数据库现在与这个地方不同。

我还尝试在主数据库中编辑数据,希望它将其复制到从数据库,但也失败了。

显然,我不明白的东西。

4

3 回答 3

7

看看 Amazon Web Service 的这个链接,了解一下:

如何将我的 Amazon RDS 数据库实例只读副本配置为可修改?

可能您的只读副本具有标志read_only = false

在此处输入图像描述


修改新建的参数组,设置如下参数:

  • 在导航窗格中,选择参数组。可用的数据库参数组显示在列表中。
  • 在列表中,选择要修改的参数组。
  • 选择编辑参数并将以下参数设置为指定值: read_only = 0
  • 选择保存更改

我认为您应该阅读一些有关跨区域只读副本及其工作原理的信息。

使用 MariaDB、MySQL 和 PostgreSQL 数据库实例的只读副本

只读副本延迟受许多因素的影响,包括主实例和辅助实例的负载、正在复制的数据量、副本的数量、它们是在同一区域内还是跨区域等。延迟可能会延长秒或分钟,但通常不到一分钟。

参考: https ://stackoverflow.com/a/44442233/1715121

关于 RDS 只读副本的注意事项

  • 在只读副本中,会拍摄主数据库的快照。
  • 只读副本在 Amazon RDS for MySQL、MariaDB 和 PostgreSQL 中可用。
  • Amazon RDS for MySQL、MariaDB 和 PostgreSQL 中的只读副本为 Amazon RDS 多可用区部署提供了一种互补的可用性机制
  • 源数据库和目标数据库之间的所有流量都为只读副本加密。
  • 您需要在创建只读副本之前启用备份。这可以通过将备份保留期设置为 0 以外的值来完成
  • Amazon RDS for MySQL、MariaDB 和 PostgreSQL 目前允许您为给定的源数据库实例创建最多五个只读副本
  • 可以创建另一个只读副本的只读副本。您可以从现有的第一层只读副本创建第二层只读副本。通过创建第二层只读副本,您可以将部分复制负载从主数据库实例转移到第一层只读副本。
  • 即使从源数据库更新了只读副本,目标副本仍可能由于各种原因变得不同步。
  • 您可以随时删除只读副本。
于 2018-01-10T00:07:15.713 回答
1

我遇到过同样的问题。(老问题,但我在其他任何地方都找不到答案,这是我的确切问题)

我创建了一个跨区域只读副本,完成后,所有原始数据都在那里,但两个区域之间没有同步更新。

问题是参数组。

就我而言,我已将我的主要参数组从默认参数组更改为允许不区分大小写的表的参数组。参数组未复制到新区域,因此复制失败:

Error 'Table 'MY_TABLE' doesn't exist' on query. Default database: 'mydb'. Query: 'UPDATE MY_TABLE SET ....''

因此,简而言之,在您的新区域中创建一个与主要区域匹配的参数组,并在创建副本后立即分配该参数组。

我还在新创建的副本上运行了这个脚本:

CALL mysql.rds_start_replication

我不确定这是否是必需的,但我还是运行了它。

于 2020-09-18T15:32:16.810 回答
-1

我认为如果您将只读副本置于写入模式,则只能在亚马逊 rds 的从属数据库上添加索引,并且它将继续以写入模式,直到您更改参数 read_only=1 并立即应用它。

于 2018-01-10T04:59:15.957 回答