5 ms·
They say they moved off ebs and onto local storage for postgres and saw a big increase in reliability and performance. I did the same for my site last year and
by joevandyk 15y ago
They say they moved off ebs and onto local storage for postgres and saw a big increase in reliability and performance.
I did the same for my site last year and it was great.
This is one of the reasons why I haven't moved my Postgres databases to enterprisedb or heroku: they use ebs.
- jarcoal 15y agoWhat a bummer. Amazon advertises EBS as being both faster and more reliable, but it sounds like they are delivering neither.
- cheald 15y agoEBS is fine until it isn't. The problem isn't general EBS suckage, it's unpredictable and sporadic suckage. When your DB server is blocking while it tries to write to a disk that isn't responding, things get really hairy really quickly.
- iand 15y agoBy reliable Amazon mean "won't lose your data" and they deliver on that. The issue in the articlew is around latency and Amazon aren't making any claims in that area. High throughput databases need steady latency guarantees so they're not a great fit for EBS. EBS is great for many other scenarios though.
- tibbon 15y agoBy local storage, do they mean they are running their DB disks on physical hardware, but the database servers still on EC2?
- rogerbinns 15y agoThe Amazon servers have local disks physically attached. They are wiped between customers, on machine failure etc hence "ephemeral". The EBS (elastic block storage) is accessed as a disk but is over the other end of a network connection. Amazon does more to ensure the contents are available and durable (eg replication, backup to S3). The problem with EBS is that performance especially latency is highly variable and unpredictable.
- x3c 15y agoBut how do you achieve data persistence in case of server crash? Snapshots are not reliable for that, slave db servers aren't foolproof either.
- cheald 15y agoLots and lots of replication, more or less. I don't know how it works in Postgres, but with something like Mongo, you set up a replication cluster and presume that up to (half - 1) of the nodes can fail and still maintain uptime. Postgres, being a relational database rather than a document store, likely has an additional set of challenges to overcome there, but it's very possible to do.
- fleitz 15y agoYou just copy the WAL log to another server and replay it. It takes a day to setup and test. Once that is setup you have two options async replication (which means you'll lose about 100ms of data in event of a crash) or you can use sync replication which means the transaction doesn't commit until the WAL log is replicated on the other server. (that adds latency but doesn't really affect throughput) I'm not exactly sure how the failover system works in Postgres, the last time I setup replication on postgres it would only copy the WAL log after it was fully written, but I know they have a much more fine grained system now. If you use SQL Server you can add a 3rd monitoring server and your connections failover to the new master pretty much automatically as long as you add the 2nd server to your connection string. Using the setup with a 3rd server can create some very strange failure modes though.
- darwinGod 15y agoIf this was for Postgres refer this : http://wiki.postgresql.org/wiki/Binary_Replication_Tutorial http://wiki.postgresql.org/wiki/Binary_Replication_Tutorial See the section "Starting Replication with only a Quick Master Restart", I tested this with a DB <10 GB. The setup time for replication was in the order of minutes. On a related note, it would be awesome if someone could point out real-world experiences for Postgres 9.1 synchronous replication.
- notaddicted 15y ago