Since I'm right in the middle of migrating our servers to new hardware, I'll toss into the ring for this one.
First, if at all possible, do not expose your master server (the one where all the changes should occur) to the internet. Even if it means building a small VM session to host a hidden master, it makes moving stuff around and keeping it secure far easier.
As an example, here's part of my bind layout (in /etc/bind):
-rw-r----- 1 root bind 2.6K 2009-08-07 10:41 named.conf
-rw-r----- 1 root bind 112K 2009-07-24 07:54 named.external.conf
-rw-r----- 1 root bind 112K 2009-07-24 07:53 named.internal.conf
-rw-r----- 1 root bind 792 2009-07-01 10:28 named.logging.conf
-rw-r----- 1 root bind 834 2009-07-01 10:28 named.options.conf
-rw-r----- 1 root bind 373 2009-07-01 10:28 rndc.conf
-rw-r----- 1 root bind 131 2009-07-01 10:28 rndc.key
named.conf contains my basic settings, and then includes the other files with:
include "/etc/bind/named.logging.conf";
include "/etc/bind/named.options.conf";
include "/etc/bind/rndc.key";
Build your new servers and point them at the old master server:
zone "adnszone.com" {
type slave;
masters ( your.master.server.ip; etc.etc.etc.etc; };
file "internal/adnszone.com";
};
Let them populate.
Once the new master server (hopefully hidden) is ready, you can very easily go in and modify the particular conf file to point to the new master and viola!