High Availability WordPress with HyperDB
One of the reasons why I have always been so enamored with WordPress is because of the limitless possibilities it has. It seems like if you know PHP and how to leverage data and control it, you can do almost anything. A WordPress database can hold just about any type of data, which has made it even more useful with the added capability of custom post types and custom fields. You can save all sorts of data to a WordPress database.
The problem arises when you collect too much data, which can bog down your servers. Imagine huge websites with thousands of members, storing all sorts of information. This could be anything from member profile data, such as names, locations, and bios, to product information for a business website. One of the challenges is the limitation of using a single database and a single server to handle all of this. What happens when your lone server fails? The whole site and it’s functionality comes tumbling down, until the server is restored to working order.
Along comes HyperDB, a plugin for spreading your site’s load across several servers and databases.
HyperDB has its advantages, which we will discuss as we continue our exploration. Why would you want to use HyperDB for your WordPress install? Here are just a few features.
Just like you might partition a hard drive on your computer, you can partition, or separate your data and spread it across multiple servers. This saves resources and helps to spread the data across multiple databases and servers. Hyper DB will try the most optimal servers first, which is helpful.
Think of it like this. If you stepped on a nail, placing your entire body weight on that single nail, it would easily go through your foot. However, if you distributed your bodyweight over an entire bed of nails, you could lay across it without being pierced. Partitioning in HyperDB is similar to the same idea. Instead of one server or database carrying a heavy load, increasing the likelihood that it will crash, it is spread across multiple servers and databases, so it is distributed evenly.
Replication is where you have multiple copies of the same server. One is a master, while the others are called slaves. You can write to the master, but you can only read from the slave servers. This may be useful for instances where security is your top priority.
It’s important to note that HyperDB does not provide replication services. You have to configure your servers that way on your own. Then, HyperDB can access them once you’ve set it up.
This is like a chain of databases and servers that act as fail safe fallback methods for each other. They all contain the same data, but if one fails, the next one will take over. If the 1st two fail, then the third one will take over. I could see this as being useful for an application that requires 100% uptime and 24/7 accessibility. If you had a site where people paid to be there, you wouldn’t want it to go down, costing you valuable revenue. You’d want to have a backup in place, ready to go if the 1st server goes down.
Failover is something you have to set up beforehand. Once that option is set up, it will query the next available server. If you don’t have it set up, HyperDB will try a few more times on its own, but it will eventually give up, returning an error.
Where HyperDB Really Gets Interesting
Big businesses could really benefit from using HyperDB to their advantage. Imagine the different types of businesses out there that rely on databases and servers to run. Think about the massive amount of storage that would be required for the servers of a nationwide, or even an international company. You aren’t limited to having your servers all in one location. You could configure them to work with remote servers in other physical locations.
A Possible Scenario
Let’s use a hosting company as an example. They don’t store football fields of servers in one location. Most bigger hosting companies have servers located at their main headquarters, but they could also have remote servers located clear across the country. Think about how useful that is, in terms of serving up data. As much as we’d like to think that data is instantaneous to any location, it would take data longer to load from a server in California if you were in New York, than if you had a server located on the East Coast.
HyperDB simply takes the limitation of one server and no configuration options for expansion, and blows the doors off. Who is stronger and will last longer: a lone body builder, or 50 nimble men of average build. Collectively, the group of men can share the work, making everything much more efficient.
HyperDB can be extremely useful for optimizing your own custom server configuration. Think of the performance you could get out of multiple servers, compared to just one. Flexibility, combined with these essential features makes HyperDB a WordPress plugin worth looking at.
If you’re looking for more information on HyperDB, check out the official docs: