1 、背景
- BIND从文本文件中获取数据,这样容易因为编辑错误出现问题。
- BIND需要将数据加载到内存中,如果域或者记录较多,会消耗大量的内存。
- BIND启动时解析Zone文件,对于一个记录较多的DNS来说,会耽误更多的时间。
- 如果近修改一条记录,那么要重新加载或者重启BIND才能生效,那么需要时间,可能会影响客户端查询。
- BIND reads DNS data from text files. It is very easy to make a mistake when editing a file causing it to be mis-read or made un-readable by BIND.
- BIND stores all DNS data in RAM. If your DNS server is authoritative for a large number of zones, you may have to rebuild the kernel on your machine in order to support BIND's memory needs.
- BIND parses all of its zone files at startup. For a large number of zones this can be time-consuming.
- If you change any information in those zone files, you must reload or restart BIND before those changes take effect. Do this often enough and BIND could spend more time reloading data than answering queries.
2、解决方案
Bind-dlz 可以解决这类似问题。
Be sure to specify --with-dlz-mysql when running configure so that the MySQL driver is built with BIND.
Because of this BIND MUST only run with a single thread when using the MySQL driver. To ensure BIND runs with a single thread pass "-n 1" on the command line when starting BIND (named).
One of the main goals of DLZ is immediate DNS updates. By using zone transfers, the data on your slave DNS servers will not be updated until the zone "expires" and the slave performs a zone transfer. If you have a long zone expiration time, your slave DNS server may be out of sync with your master for a long period of time.
[注:从服务器不会立即更新,直至expires过期]
原文如下:
参考文章: