Before migrating to PDNS a few things should be considered.
If your customers send questions to PDNS for which you are not authoritative, PDNS will not supply an answer. This is by design but may be changed in the future. The general feeling is that an authoritative nameserver should only give out authoritative answers and that recursing nameservers should traverse the DNS hierarchy to answer questions, and not assume that they are authoritative. Mixing the two can lead to strange effects.
A well known example is a customer leaving his ISP where the ISP neglects to remove the zone from the nameserver. Other customers from that ISP will now continue to see old data for the domain in question because the recursing nameserver is sure that it still owns the domain when in fact it does not. Separating authoritative and recursing prevents this problem from ever occuring.
PDNS will happily read your Bind named.conf but will not, right now, honor statements regarding master/slave operation. The recommended setup is to replicate nameserver data by using your database's native replication facility, or, when using zonefiles, rsync.
Zone2sql parses Bind named.conf files and zonefiles and outputs SQL on standard out, which can then be fed to your database.
Zone2sql understands the Bind master file extension '$GENERATE' and will also honor '$ORIGIN' and '$TTL'.
By default, zone2sql outputs code suitable for the mysqlbackend, which can also be read by PostgreSQL incidentally. The following commands are available:
Output in a bare format, suitable for further parsing. The output is formatted as follows:
domain_id<TAB>'qname'<TAB>'qtype'<TAB>'content'<TAB>prio<TAB>ttl
Output in format suitable for the default configuration of the Generic PostgreSQL backend.
List options.
Output in format suitable for the default configuration of the MySQL backend. Default.
Parse this named.conf to find locations of zones.
Ignore missing files during parsing. Dangerous.
Output in format suitable for the default configuration of the Generic Oracle backend.
Supply a value for the first domain_id generated. Defaults at 0.
Be verbose during conversion.
Parse only this zone file. Conflicts with --named-conf parameter.
When parsing a single zone without $ORIGIN statement, set this as the zone name.