Background:
I am a programmer. I still have a lot to learn about hosting and DNS. I am using a cheap shared hosting provider (DreamHost) to host a client website. They have decided that they would like to manage their own account. I thought this would be as easy as asking DreamHost to just move my stuff to its own account, but apparently it is not this easy.
The gist of it is that since DreamHost is hosting the DNS records, they have to remove the DNS records (for a short period of time) in order for the DNS systems to clear their caches, then re-instate the DNS records which will point to the new account (hosted on some new server in their data center)...at least that's how I understand it anyway. Here's their actual response:
-- What amount of downtime can I expect? Are we talking minutes/hours/days?
The length varies by location and the amount of time it takes you to recreate the hosting for the domain on the destination account, but would be in the range of minutes to hours (days would be for extreme DNS caching).
-- Why will there be new DNS records? Won't the DNS records stay the same since the account is still hosted and registered with dreamhost?
The reason is that you are not guaranteed to be hosted on the same machine on the destination account. Since it would be a new machine, there's new network addresses used, so that's a DNS change to have the new machine address information set for the domain. In case it wasn't clear, the domain is completely removed from the Dreamhost DNS system for a (brief) time, so when it's added back, the system treats it like any other domain that's added. That's why all the content must be backed up before it's removed. No pointers to that content would exist (and in some cases, the content becomes completely unavailable, permanently).
Question:
My question (for you professional server administrators): How can I transfer the code, database, and subdomains in a way that has the least amount of down-time, and so email (hosted by Google Apps) doesn't get lost? Is the DreamHost recommended way, the best way? Would it reduce down-time to transfer to another host, then transfer back to DreamHost? Am I making a big deal out of something that isn't going to get noticed if it happens late at night?
Normally when changing the public IP of a website I like to run the site on both IPs for at least a couple of days as there are lots of people out there who have cached IPs in their DNS servers and they'll keep getting the old IP. Using this approach, assuming that when Dreamhost removes the website from DNS they also shutdown the old site on the old server people using the cached (now wrong) IP would get an error message instead of the site.
The worst I've seen was when moving one site for a client we had people hitting the old server for a month (just a couple people). We ended up having to call those clients to have them flush their DNS cache manually.
It's a dark side of every mass-service and automated tasks.
For really transparent (but manual) movement you can
Last and last-1 operations can be exchanged in list
Most shared services (HostGator is good with this) provides a temporary way to preview a domain. So simply, set up the server before you transfer by using their temporary URL and make sure everything is pristine.
However, if you hard-coded in the paths to other sources, you will have to go into change those as the domain is now changed.
Then of course, after you have everything moved over and set up, you will be able to route the domain over to the new account. This method will have no downtime, however, users may be directed to different servers so anything user-editable (forums are a very good example), you might want to disable on the old box as you do not want users with very cached DNS servers to be serving them to the old account and the ones with up-to-date DNS served to the new server.
As long as you have everything set up (especially e-mail), you'll be fine. Some content may lie on the old server like e-mail, but you'll have to speak with your client to check the email manually (using cPanel's tools) on the old box.
Keep the old server on for a week tops and your users will hardly notice. But if it's a forum or other user-generated site, you might have "downtime" for the users who do not have the updated DNS, but there is absolutely nothing you can do for that except having a low TTL for the domains in your DNS config...
Hope that helps you out!