免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 10093 | 回复: 8
打印 上一主题 下一主题

[DNS] 求助:BIND+DLZ+MYSQL+VIEW 运行一段时间后提示不能连接数据库 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-17 12:50 |只看该作者 |倒序浏览
安装什么都是正常的,启动也是没有问题的,但是运行一段时间后连接MYSQL数据库的进程就没有掉了,也没有什么日志,只是在BIND的日志有这样的一句

17-Oct-2007 12:24:13.587 client: client @0xb56dd130: udprecv
17-Oct-2007 12:24:13.587 database: mysql driver unable to return result set for findzone query

出现这个总是生新reload一下又是正常了,查询什么的都是可以的,但过了一段时间后又会出现这样的问题,不能连接MYSQL ,这个时间不是固定的

BIND的版本是9.4.1-P1

named.conf如下:

  1. options {
  2.         listen-on port 53 { 127.0.0.1;192.168.0.8; };
  3.         directory       "/var/named";
  4.         dump-file       "/var/named/data/cache_dump.db";
  5.         statistics-file "/var/named/data/named_stats.txt";
  6.         memstatistics-file "/var/named/data/named_mem_stats.txt";
  7.         allow-query     { any; };
  8.         //recursion no;
  9.         allow-query-cache { none; };
  10.         allow-recursion { none; };
  11.         datasize 2098;
  12.         //auth-nxdomain no;
  13. };

  14. controls {
  15.         inet 127.0.0.1 allow { localhost; } keys { rndckey; };
  16. };

  17. logging {
  18.         channel default_debug {
  19.                 file "data/named.run";
  20.                 severity dynamic;
  21.                 print-time yes;
  22.                 print-category yes;
  23.         };
  24.         category queries {
  25.                 default_debug;
  26.         };
  27.         category queries {
  28.                 default_debug;
  29.         };
  30.         category config {
  31.                 default_debug;
  32.         };
  33.         category database {
  34.                 default_debug;
  35.         };
  36. };
  37. include "/etc/cnc.ip";
  38. include "/etc/view.conf";
  39. include "/etc/rndc.key";
复制代码


view.conf的内容如下:
  1. view "cnc_view" {
  2.         match-clients{ CNC; };
  3.         //recursion no;
  4.         allow-query-cache { none; };
  5.         allow-recursion { none; };
  6.         zone "." IN {
  7.                 type hint;
  8.                 file "named.ca";
  9.         };
  10.         include "/etc/named.rfc1912.zones";
  11.         dlz "cnc_view" {
  12.                 database "mysql
  13.                 {host=127.0.0.1 port=3306 dbname=dns user=dns pass=****}
  14.                 {SELECT zone FROM chinacnc_records WHERE zone = '%zone%'}
  15.                 {SELECT ttl, type, mx_priority, CASE WHEN lower(type)='txt' THEN '\"' || data || '\"' ELSE data END FROM chinacnc_re
  16. cords WHERE zone = '%zone%' AND host = '%record%' AND NOT (type = 'SOA' OR type = 'NS')}
  17.                 {SELECT ttl, type, mx_priority, data, contact, serial, refresh, retry, expire, minimum FROM chinacnc_records WHERE z
  18. one = '%zone%' and (type = 'SOA' or type='NS')}
  19.                 {SELECT ttl, type, host, mx_priority, data, contact, serial, refresh, retry, expire, minimum FROM chinacnc_records W
  20. HERE zone = '%zone%'}
  21.                 {select zone from chinacnc_xfr_table where zone = '%zone%' and client = '%client%'}
  22.                 {update chinacnc_count set count = count + 1 where zone ='%zone%'}";
  23.         };
  24. };
  25. //
  26. //chinanet and other view
  27. //
  28. view "chinanet_other_view" {
  29.         match-clients{ any; };
  30.         //recursion no;
  31.         allow-query-cache { none; };
  32.         allow-recursion { none; };
  33.         
  34.         zone "." IN {
  35.                 type hint;
  36.                 file "named.ca";
  37.         };
  38.         include "/etc/named.rfc1912.zones";
  39.         dlz "chinanet_other_view" {
  40.                 database "mysql
  41.                 {host=127.0.0.1 port=3306 dbname=dns user=dns pass=*****}
  42.                 {SELECT zone FROM chinanet_records WHERE zone = '%zone%'}
  43.                 {SELECT ttl, type, mx_priority, CASE WHEN lower(type)='txt' THEN '\"' || data || '\"' ELSE data END FROM chinanet_re
  44. cords WHERE zone = '%zone%' AND host = '%record%' AND NOT (type = 'SOA' OR type = 'NS')}
  45.                 {SELECT ttl, type, mx_priority, data, contact, serial, refresh, retry, expire, minimum FROM chinanet_records WHERE z
  46. one = '%zone%' and (type = 'SOA' or type='NS')}
  47.                 {SELECT ttl, type, host, mx_priority, data, contact, serial, refresh, retry, expire, minimum FROM chinanet_records W
  48. HERE zone = '%zone%'}
  49.                 {select zone from chinanet_xfr_table where zone = '%zone%' and client = '%client%'}
  50.                 {update chinanet_count set count = count + 1 where zone ='%zone%'}";
  51.         };
  52. };
复制代码


请大家帮偶看看是什么问题。
先谢谢大家了

[ 本帖最后由 lzylwy 于 2007-10-17 12:52 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-10-17 14:14 |只看该作者
BIND+MYSQL达到实用的程度很难(主要是MYSQL不堪重负)。建议LZ检查MYSQL的并发连接数限制。

论坛徽章:
0
3 [报告]
发表于 2007-11-10 17:46 |只看该作者

回复 #2 llzqq 的帖子

这个问题后来用bind+SDB+mysql来做了,这个方案对于不用经常添加\删除域来说还算是比较的稳定.

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之上海
日期:2016-05-05 09:45:14
4 [报告]
发表于 2007-11-19 10:20 |只看该作者
LS的,,,
bind+SDB+mysql怎么做呀,楼上的可否写个文档?

论坛徽章:
0
5 [报告]
发表于 2007-12-18 11:19 |只看该作者
您把您的所有配置都发上来,看下是不是配置路径有问题。我配置的mysql可以连接但是不能正常使用,我看我的配置和你的有什么不同。

论坛徽章:
0
6 [报告]
发表于 2008-01-09 20:10 |只看该作者

回复 #4 badb0y 的帖子

BIND + SDB + DLZ 都会存在当连接到MYSQL的空闲时间达到MYSQL最大的空闲时间时连接被强行断开的情况,最糟糕的是连接断开后SDB 和 DLZ都不会进行自动重连,要实现自动重连需要修改SDB 和 DLZ的源码, 在连接数据库时加上自动重连的参数,这个可以参考MYSQL  C 语言的 API.

对于我前面说的 BIND + DLZ会不定时的断开数据库连接,是因为BIND +DLZ 在LINUX 下不能用多线程的原故(官方有说明的),我一直是开启多线程的,关于这一点在DLZ的官方网站有详细的说明.(那时偶怎么就会去官方网站去看看,到后面是实在没有招了,去官方网站认真的看了一遍文档,唉.) 对于已经开启线程编译好的BIND 可以在启动时加上 "-n 1" 的参数就可以让named 只开启一个工作线程了.

BIND + SDB 对域名数较少,不经常增减域名的还是比较合适的,效率也较可以,要是再加上 memcache 的缓存那样应该就会更好了.
BIND + DLZ 灵活些,但效率会比较低点(一个DNS查询要执行多条SQL语句.),但是要是也加上memcache的缓存可能会好些.
(偶是这么想的,不知道对不对.呵呵)

[ 本帖最后由 lzylwy 于 2008-1-9 20:17 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2008-01-11 20:50 |只看该作者
原帖由 lzylwy 于 2008-1-9 20:10 发表
BIND + SDB + DLZ 都会存在当连接到MYSQL的空闲时间达到MYSQL最大的空闲时间时连接被强行断开的情况,最糟糕的是连接断开后SDB 和 DLZ都不会进行自动重连,要实现自动重连需要修改SDB 和 DLZ的源码, 在连接数据库 ...



对于不自动重连的情况,有三方补丁解决了这个问题。我的现在的BIND+DLZ+MYSQL+VIEW运行得好好的,还有就是你说的单线程的问题,我的BIND也是单线程的工作的,效率感觉还可以。我的VIEW主要用于CDN网络的智能解析。没有出现过什么特别的问题

论坛徽章:
0
8 [报告]
发表于 2008-08-16 17:37 |只看该作者
原帖由 scyzxp 于 2008-1-11 20:50 发表



对于不自动重连的情况,有三方补丁解决了这个问题。我的现在的BIND+DLZ+MYSQL+VIEW运行得好好的,还有就是你说的单线程的问题,我的BIND也是单线程的工作的,效率感觉还可以。我的VIEW主要用于CDN网络的智 ...

你说的第三方补丁在哪里可以下载?能否完美解决LZ说的问题?
我找到个补丁,但貌似是扩展Bind的关键字的:http://team.lea-linux.org/prae/dlz/

论坛徽章:
0
9 [报告]
发表于 2008-09-26 11:59 |只看该作者
mysql 默认8小时timeout问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP