谁能告诉我,有没有可能在Amazon RDS服务中从包含InnoDB和MyISAM表的数据库中创建一个读取副本。
我知道亚马逊不备份MyISAM表,但在创建read副本时,文档似乎有点武断。
这篇文档对我来说似乎有点争议:“读副本需要事务存储引擎,并且只支持InnoDB存储引擎。MyISAM等非事务引擎会阻止读副本按预期工作。但是,如果您仍然选择将MyISAM与读副本一起使用,我们建议您仔细观察亚马逊CloudWatch”副本延迟“指标(可通过亚马逊网络服务管理控制台或亚马逊云观察API获得),并在由于复制错误而落后时重新创建读副本。”
一方面,它声明事务引擎是必需的,但另一方面,下面的句子并不禁止使用MyIsam表。我的意思是,我愿意在一定程度上冒失去数据并发性的风险。
为什么我需要这个?我注意到我在RDS上有一个相当大的队列,CPU利用率低于20%。我花了一周的时间优化查询,从而得到低CPU使用率的结果。但是,队列是存在的,因为有很大的流量。我的结论是,为了减少队列的大小,我需要创建一个主从解决方案,并将错误宽松查询移到从解决方案中,以减少等待时间。
发布于 2015-04-28 12:05:20
根据AWS文档:
准备使用MyISAM的MySQL DB实例
如果您的MySQL DB实例使用非事务性引擎,如MyISAM,则需要执行以下步骤才能成功设置读取副本。这些步骤是确保读取副本具有一致的数据拷贝所必需的。请注意,如果所有表都使用事务引擎(如InnoDB ),则不需要执行这些步骤。
停止源DB实例中非事务性表上的所有DML和DDL操作,并等待它们完成。SELECT语句可以继续运行。
刷新并锁定源DB实例中的表。
使用以下各节中的方法之一创建读取复制副本。
例如,使用DescribeDBInstances应用编程接口操作检查读取副本创建的进度。读取副本可用后,解锁源DB实例的表并恢复正常的数据库操作。http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ReadRepl.html
发布于 2014-05-10 15:37:27
基本上,文档是说他们建议只使用InnoDB表。这有助于复制和崩溃恢复。从技术上讲,您仍然可以使用MyISAM表,但结果可能不是您所期望的,如果出现问题,您将只能靠自己。
https://stackoverflow.com/questions/22458411
复制相似问题