For some time now, I’ve been running Microsoft Server 2012 with IIS and Microsoft Sql Server. I run a small photo upload service built in C# and asp.net that was once a university project (although is still not as complete as I would like.) I’ve recently been running a few more sites with MySql and so decided to converge all my databases into one MySql database.
So why do this? There were three factors I considered before doing this.
- Scalability- and more accurately, load balancing. My server is growing at a much faster rate than I ever anticipated. I feel the purchase of a rack is inevitable. Either way, I will undoubtably need to expand on my hardware in the very near future. Having one dedicated virtual machine for databases allows me to simply move that VM onto a new server, freeing up resources to the web server.
- Security. There are three ports open on my database server. MySql, HTTP (for phpmyadmin) and SSH. Less is definitely more in this department.
- Resources. I’m not going to get into a debate over which is more efficient but MS Server in general requires more more CPU power, RAM and hard disk space than the equivalent Linux environment- provided you know how to run it, of course. SQL Server may be free for small operations but MS Server is most definitely not. I’m quite fortunate to currently have access to free Microsoft products, including MS Server 2012, but will I be paying £300 for a licence when that expires just to host one mostly-for-fun website? Will I f***.
So far the merge has been successful (your mileage may vary) but of course only time will tell. It should also be noted that this is not a click and forget task. Syntax between the two platforms is different, meaning that either a third party tool will be required to complete the merge or that a new database must be built from scratch. I chose the later for security reasons (not that I’m suggesting any particular tools are insecure, just that my database didn’t contain anything important and I don’t like installing additional software unless I have to.) The other problem is that C# applications will have to be refactored to enable them to communicate with the MySql server.
Hopefully my time will have been well spent…