编辑:我没有尝试编辑只读副本。我说我做了编辑它,我对我能够做到的原因感到困惑。
我在美国西部有一个数据库。我在孟买做了一个只读复制品,所以印度的用户不会经历缓慢。出于好奇,我试图编辑Mumbai读副本数据库中的一行,希望得到一个安全错误,拒绝我的写入尝试(因为毕竟,它是一个READ副本)。但写操作是成功的。这是为什么?难道这不是一个只读数据库吗?
然后我去了master数据库,希望写入过程至少可以同步,但是我的写入执行并没有持续。主数据库现在与地点不同。
我还尝试在master数据库中编辑过数据,希望它能将它复制到slave数据库,但也失败了。
显然,我不理解某事。
答案 0 :(得分:2)
How do I configure my Amazon RDS DB instance read replica to be modifiable?
您的只读副本可能包含标记read_only = false
修改新创建的参数组并设置以下参数:
- 在导航窗格中,选择参数组。可用的数据库参数组显示在列表中。
- 在列表中,选择要修改的参数组。
- 选择编辑参数并将以下参数设置为指定值:
read_only = 0
- 选择保存更改。
Working with Read Replicas of MariaDB, MySQL, and PostgreSQL DB Instances
只读副本滞后受许多因素的影响,包括主要和次要实例的负载,要复制的数据量,副本数量,如果它们位于同一区域或跨区域等。滞后可以延伸到几秒或几分钟,但通常不到一分钟。
答案 1 :(得分:0)
我认为如果你把read副本放在write模式下,只能在amazon rds中对slave db进行添加索引,并且它将继续处于写入模式,直到你更改参数read_only = 1并立即应用它。
答案 2 :(得分:0)
我有同样的问题。 (旧问题,但是我在其他任何地方都找不到答案,这是我的确切问题)
我创建了一个跨区域的只读副本,完成后,所有原始数据都存储在其中,但是两个区域之间没有更新同步。
问题出在参数组上。
就我而言,我已将主数据库从默认参数组更改为允许不区分大小写的表的组。参数组未复制到新区域,因此复制失败并显示:
Error 'Table 'MY_TABLE' doesn't exist' on query. Default database: 'mydb'. Query: 'UPDATE MY_TABLE SET ....''
简而言之,请在与主区域匹配的新区域中创建一个参数组,并在创建副本后立即分配该参数组。
我还在新创建的副本上运行了该脚本:
CALL mysql.rds_start_replication
我不确定是否需要这样做,但是我还是运行了它。