Mysql 能否在AWS RDS上重新连接副本?

Mysql 能否在AWS RDS上重新连接副本?,mysql,amazon-web-services,rds,Mysql,Amazon Web Services,Rds,我们的主要分析数据库中有大量用户,他们不仅希望读取数据,还希望创建大型派生数据表。这在成本方面开始变得令人望而却步,当有太多人同时向大型表写入数据时,数据库的速度会令人无法接受 我预期的解决方案是创建多个读/写副本,这样我们的核心数据就可以从一个主副本复制到多个启用了写功能的副本,并且每个用户都可以在其中一个副本上工作 然而,我担心的是,这似乎不是启用副本写入的预期用途。我担心的是,用户将在其复制副本上建立大量有价值的数据。如果复制副本崩溃,我该怎么办 使用只读复制副本,您当然可以重新创建复制副

我们的主要分析数据库中有大量用户,他们不仅希望读取数据,还希望创建大型派生数据表。这在成本方面开始变得令人望而却步,当有太多人同时向大型表写入数据时,数据库的速度会令人无法接受

我预期的解决方案是创建多个读/写副本,这样我们的核心数据就可以从一个主副本复制到多个启用了写功能的副本,并且每个用户都可以在其中一个副本上工作

然而,我担心的是,这似乎不是启用副本写入的预期用途。我担心的是,用户将在其复制副本上建立大量有价值的数据。如果复制副本崩溃,我该怎么办

使用只读复制副本,您当然可以重新创建复制副本,一切正常

但是,如果您的复制副本上有您关心的数据,并且与主副本分离,那么事情就更加困难了。您不能只是启动复制副本的恢复并将其重新连接到主机,因为您不能连接现有复制副本,只能启动新的复制副本


在AWS上有这样的体系结构解决方案吗?也许有一种附加现有副本的方法?

您不能将已读副本重新附加回原始主副本

您无法使用Amazon RDS设置读写副本

注意:Amazon上有一篇文章介绍了如何启用对MySQL读取副本的写入。我从未测试过这一点,因此我不知道其含义

从主机断开读取副本时,读取副本将成为主机。为了保护数据,请像在原始主机上一样设置定时备份


因为您的问题是写性能,所以有两种选择。放大实例大小或增加配置的IOPS。使用CloudWatch创建指标,以确定出现问题的性能领域(CPU、内存、磁盘I/O)。另一种可能的选择是切换到Aurora。

您不能将读取副本重新连接回原始主机

您无法使用Amazon RDS设置读写副本

注意:Amazon上有一篇文章介绍了如何启用对MySQL读取副本的写入。我从未测试过这一点,因此我不知道其含义

从主机断开读取副本时,读取副本将成为主机。为了保护数据,请像在原始主机上一样设置定时备份

因为您的问题是写性能,所以有两种选择。放大实例大小或增加配置的IOPS。使用CloudWatch创建指标,以确定出现问题的性能领域(CPU、内存、磁盘I/O)。另一个可能的选择可能是切换到极光

如果复制副本崩溃,我该怎么办

RDS副本现在支持多AZ

Multi-AZ在两个AZ中提供了两个实例,每个实例都有自己的EBS卷,在任何时候都只能访问其中一个,另一个作为热备用闲置。发生故障时,备份实例将接管,实例的DNS主机名将从一个切换到另一个

Multi-AZ的实际实现没有公开文档,但据说复制是同步的。唯一可能的方法是,如果复制是存储级复制而不是逻辑(binlog)复制,那么您可以通过各种观察来证明这一点。似乎活动实例实际上写入了两个卷,而备份实例上的MySQL守护进程没有运行。发生故障转移事件时,备份上的服务器守护进程将启动并执行标准的MySQL崩溃恢复

启用Multi-AZ应该解决发生崩溃时会发生什么的问题。。。取决于你对“崩溃”的定义

副本可以有每日备份和快照,并且可以像独立或主实例一样通过时间点恢复进行恢复。。。RDS中DB实例的时间点恢复从不修改正在“恢复”的实例——它从快照创建一个新实例,然后使用binlog向前滚动它

…但在这种情况下,“恢复”实例当然将是另一个实例,不再是RDS副本

在这种情况下,您需要做的是将失败的实例恢复到某个时间点,然后创建一个新的副本,然后将数据从恢复的实例转储并加载到其替换项上——但仅限于主服务器上不存在的表——可写副本所特有的表

需要说明的是,MySQL本机复制对于复制副本上存在的表没有问题,但对于主副本上不存在的表没有问题。MySQL复制对于主副本和副本上都存在但表中数据不同的表确实存在问题——这是一种不受支持的配置,因此任何使副本可写的计划都必须要求不更改来自主副本的表(除了少数例外——特别是,为了查询优化目的,可以安全地将其他非唯一索引添加到副本上的表中)——否则,复制将被中断,并且无法在副本上执行进一步的复制事件

如果由于复制副本的误用而导致复制失败(例如,删除或更改主副本随后修改的表)就RDS而言,它仍然是一个副本,只是一个损坏的副本,可以恢复到包括RDS复制在内的正常操作……但这是一个微妙的操作,需要对MySQL本机复制有一个较低的了解。这种修复的要点是必须修改副本数据集中的相关数据,使其成为ide在复制失败事件执行后,立即将数据还原为主机上存在的数据。每年一次