you're increasing costs, but you're insuring against the lost profits from your site being down as well as reduced consumer trust. there are ways to keep the cost multiplier down (running many smaller instances vs a single large instance, using containers and running mulitenant machines), but when you start thinking about all layers you want to add redundancy (load balancing, application, database, storage, etc.) you're going to be spending quite a bit of additional money for that insurance. which is why there are good arguments that not every application needs to build in these kinds of redundancy.
For your specific question about databases, you generally have clustering to reduce the impact of any one database instance going down, caching of data to guard against temporary db outages/network issues, and sharding of data across multiple databases to reduce the blast radius of any one logical database going away entirely.