Amazon RDS Aurora 与 RDS MySQL 与 EC2 上的 MySQL?
在云上设置数据库时,我一直在寻找最佳实践,但我仍然不清楚我们应该采用以下哪种解决方案?
I've been looking around for best practices when setting up your database on the cloud but it still isn't clear to me which of the following solutions should we be going for?
- 亚马逊 RDS Aurora
- 亚马逊 RDS MySQL
- EC2 实例上的 MySQL
我认为 Amazon Aurora 被认为是更好的替代品,但经过一些研究,似乎人们并没有使用它.它有问题吗?
I see Amazon Aurora being marketed as the better alternative however after some research it doesn't seem like people are using it. Is there a problem with it?
推荐答案
在考虑 Aurora 之前,您应该仔细地对其进行基准测试.启动一个实例并设置您的应用程序和数据库的测试实例.生成尽可能高的负载.我在上一家公司做过,我发现尽管亚马逊声称性能卓越,但 Aurora 却以惊人的失败告终.比RDS慢两个数量级.我们的应用具有很高的写入流量.
You should benchmark Aurora carefully before you consider it. Launch an instance and set up a test instance of your application and your database. Generate as high of load as you can. I did at my last company, and I found that despite Amazon's claims of high performance, Aurora failed spectacularly. Two orders of magnitude slower than RDS. Our app had a high rate of write traffic.
我们的结论:如果你有二级索引,写流量大,Aurora不适合.不过我敢打赌,它对只读流量很有用.
Our conclusion: if you have secondary indexes and have high write traffic, Aurora is not suitable. I bet it's good for read-only traffic though.
(我所描述的测试是在 2017 年第一季度完成的.与大多数 AWS 服务一样,我希望 Aurora 会随着时间的推移而改进.亚马逊有一个明确的策略以 70% 的速度发布想法,然后进行迭代." 由此,我们应该得出结论,AWS 的新产品值得测试,但可能在推出后至少几年内还不能投入生产.
( the testing I'm describing was done in Q1 of 2017. As with most AWS services, I expect Aurora to improve over time. Amazon has an explicit strategy of "Release ideas at 70% and then iterate." From this, we should conclude that a new product from AWS is worth testing, but probably not production-ready for at least a few years after it's introduced).
在那家公司,我推荐了 RDS.他们没有专门的 DBA 人员,RDS 为您提供的数据库操作(如升级和备份)的自动化非常有帮助.您在调整选项上牺牲了一点灵活性,但这应该不是问题.
At that company, I recommended RDS. They had no dedicated DBA staff, and the automation that RDS gives you for DB operations like upgrades and backups was very helpful. You sacrifice a little bit of flexibility on tuning options, but that shouldn't be a problem.
RDS 最大的不便在于您不能拥有具有 SUPER 权限的 MySQL 用户,但 RDS 为大多数需要 SUPER 权限的常见任务提供了存储过程.
The worst inconvenience of RDS is that you can't have a MySQL user with SUPER privilege, but RDS provides stored procs for most common tasks you would need SUPER privilege for.
我将多可用区 RDS 实例与由 Orchestrator 管理的 EC2 实例副本集进行了比较.由于 Orchestrator 需要三个节点才能拥有仲裁,因此 RDS 在成本以及易于设置和操作方面显然是赢家.
I compared a multi-AZ RDS instance versus a replica set of EC2 instances, managed by Orchestrator. Because Orchestrator requires three nodes so you can have quorum, RDS was the clear winner on cost here, as well as ease of setup and operations.
相关文章