bind配置mysql后台

参考文档: http://blog.csdn.net/lishangwen_alan/article/details/53332889

http://www.cnblogs.com/xiongpq/p/3384681.html

需求说明:  bind下用mysql可以动态加载DNS记录(dlz), 唯一有点不爽的是mysql  bind 都需要源码编译安装,

简直吐血, 所以整理下来.

1. mysql 编译安装:

 安装依赖包 yum -y install make gcc-c++ cmake bison-devel  ncurses-devel

下载mysql

wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.35.tar.gz
 tar xvf mysql-5.6.35.tar.gz

 cd mysql-5.6.35

编译安装:
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci

make && make install

配置mysql设置权限:# groupadd mysql# groupadd -g mysql mysql# chown -R mysql:mysql /usr/local/mysql

初始化配置:# cd /usr/local/mysql# scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

注意: 将/etc/my.cnf 改成其他名字,以防冲突

启动MySQl
# cp support-files/mysql.server /etc/init.d/mysql
# chkconfig mysql on
# service mysql start  --启动MySQL

配置用户

# PATH=/usr/local/mysql/bin:$PATH

# export PATH

# source /etc/profile

# mysql -urootmysql> set password = password(‘123456‘)

设置远程访问mysql> GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘*‘ IDENTIFIED BY ‘123456‘ WITH GRANT OPTION;

mysql 配置完成

2. bind 编译安装: # ./configure --prefix=/usr/local/bind/ --with-dlz-mysql=/usr/local/mysql --enable-threads=no --enable-largefile --disable-ipv6 --with-openssl=no 
  //--enable-threads 多线程支持(官网解析是需要关闭),--enable-largefile 启用大文件支持,--disable-ipv6 关闭ipv6支持,--with-dlz-mysql意思是使用mysql存储域名解析 

# make make install

3. 配置bind:# cd /usr/local/bind/etc/ # /usr/local/bind/sbin/rndc-confgen > rndc.conf # cat rndc.conf >rndc.key # tail -10 rndc.conf | head -9 | sed s/#\ //g > named.conf

4. named.conf文件
key "rndc-key" {   algorithm hmac-md5;   secret "mvCUyhyDvNNGywhoVHbSaQ==";};

controls {   inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; };};

options {listen-on port 53 {any;};    //开启侦听53端口,any表示接受任意ip连接directory "/usr/local/bind/var";pid-file "named.pid";  //文件内容就是named进程的id  allow-query{any;};     //允许任意ip查询forwarders{114.114.114.114;8.8.8.8;};   //设置转发的公网ip};

dlz "Mysql zone" {   database "mysql   {dbname=dns_data port=3306 host=localhost user=root pass=123456 ssl=false}   {select zone from dns_records where zone = ‘$zone$‘ and status = 1}   {select ttl, type, mx_priority, case when lower(type)=‘txt‘ then concat(‘\"‘, data, ‘\"‘) else data end from dns_records where zone = ‘$zone$‘ and host = ‘$record$‘ and not (type = ‘SOA‘ or type = ‘NS‘) and status = 1}   {select ttl, type, mx_priority, data, resp_person, serial, refresh, retry, expire, minimum from dns_records where zone = ‘$zone$‘ and (type = ‘SOA‘ or type=‘NS‘) and status = 1}   {select ttl, type, host, mx_priority, data, resp_person, serial, refresh, retry, expire, minimum from dns_records where zone = ‘$zone$‘ and not (type = ‘SOA‘ or type = ‘NS‘) and status = 1}";};

5. mysql 配置:

create database dns_data

use dns_data
create table `dns_records` (  `id` bigint(20) not null auto_increment comment ‘主健‘,  `zone` varchar(255) not null default ‘‘ comment ‘域名‘,  `host` varchar(255) not null default ‘@‘ comment ‘记录名称‘,  `type` varchar(255) not null default ‘A‘ comment ‘记录类型‘,  `data` varchar(255) default null comment ‘记录值‘,  `ttl` int(11) not null default ‘800‘ comment ‘ttl(存活时间)‘,  `mx_priority` int(11) default null comment ‘mx优先级‘,  `refresh` int(11) default null comment ‘刷新时间间隔‘,  `retry` int(11)  default null comment ‘重试时间间隔‘,  `expire` int(11) default null comment ‘过期时间‘,  `minimum` int(11) default null comment ‘最小时间‘,  `serial` bigint(20) default null comment ‘序列号,每次更改配置都会在原来的基础上加1‘,  `resp_person` varchar(64) default null comment ‘责任人‘,  `primary_ns` varchar(64) default null comment ‘主域名‘,  `status` tinyint(4) default 1 comment ‘0:该记录无效, 1:该记录有效‘,  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘创建时间‘,  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘更新时间‘,  primary key (`id`),  key `ix_created_at` (`created_at`),  key `ix_updated_at` (`updated_at`)) engine=InnoDB default charset=utf8 comment=‘内网DNS记录‘;

6. 插入正向解析数据
INSERT INTO dns_records (zone, host, type, data, ttl) VALUES (‘phpfensi.com‘, ‘www‘, ‘A‘, ‘1.1.1.1‘, ‘60‘);INSERT INTO dns_records (zone, host, type, data, ttl) VALUES (‘phpfensi.com‘, ‘cloud‘, ‘A‘, ‘2.2.2.2‘, ‘60‘);INSERT INTO dns_records (zone, host, type, data, ttl) VALUES (‘phpfensi.com‘, ‘ns‘, ‘A‘, ‘3.3.3.3‘, ‘60‘);INSERT INTO dns_records (zone, host, type, data, ttl) VALUES (‘phpfensi.com‘, ‘blog‘, ‘CNAME‘, ‘cloud.phpfensi.com.‘, ‘60‘);INSERT INTO dns_records (zone, host, type, data, ttl) VALUES (‘phpfensi.com‘, ‘@‘, ‘NS‘, ‘ns.phpfensi.com.‘, ‘60‘);INSERT INTO dns_records (zone, host, type,  ttl, data,refresh, retry, expire, minimum, serial, resp_person) VALUES (‘phpfensi.com‘, ‘@‘, ‘SOA‘, ‘60‘, ‘ns‘, ‘28800‘, ‘14400‘, ‘86400‘, ‘86400‘, ‘2012020809‘, ‘admin‘);

7. 插入反向解析数据
insert into dns_records (zone,host,type,data,ttl,mx_priority,refresh,retry,expire,minimum,serial,resp_person,primary_ns) values (‘1.168.192in-addr.arpa‘,‘@‘,‘SOA‘,‘node02.example.com‘,86400,NULL,3600,15,86400,3600,2008082700,‘node02.example.com‘,‘node02.example.com‘);   //添加SOA(授权区域定义)记录insert into dns_records (zone,host,type,data)values(‘1.168.192.in-addr.arpa‘,‘@‘,‘NS‘,‘node02.example.com.‘);   //添加NS(标记区域的域名服务器以及授权子域)记录insert into dns_records(zone,host,type,data)values(‘1.168.192.in-addr.arpa‘,‘250‘,‘PTR‘,‘node02.example.com.‘),(‘1.168.192.in-addr.arpa‘,‘111‘,‘PTR‘,‘x.example.com.‘);     //添加PTR(与A记录相反,将ip转换成主机名,反向解析操作)记录
8. debug 模式下运行 bind 服务# /usr/local/bind/sbin/named -g d 1

-g d 1 是debug的参数 可以查看到后台的日志信息

8. 测试结果:

9. over

 

				
时间: 2024-10-09 20:46:24

bind配置mysql后台的相关文章

Windows 2003 IIS下配置MySQL+PHP+ISAPI_Rewrite+Zend+Xcache

Windows 2003 IIS下配置MySQL+PHP+ISAPI_Rewrite+Zend+Xcache zend  mysql  php  iis  windows  extension 一.准备工作 windows 2003,自己买吧... 安装IIS 6.0:安装系统后在"控制面板"->"添加或删除程序"->"添加/删除Windows组件"->双击"应用程序服务器"->然后选中"In

DNS和Bind配置指南

/////////////////////////////目录//////////////////////////////////////一.DNS原理相关二.使用bind搭建最简单的DNS服务器三.使用bind搭建可以解析自己添加的域名的DNS服务器四.配置DNS转发五.配置主从配置主从六.测试主从同步 拓展学习:DNS and BIND配置指南  http://anyisalin.blog.51cto.com/10917514/1753638bind配置视图(view)   http://w

bind支持mysql

最近打算将bind的记录信息存入到数据库中去,网上找了下,原来早有老外写好了mysql-bind的补丁,重新编译bind即可实现bind支持mysql存储.(http://mysql-bind.sourceforge.net/)按照官方的做法是行不通的,有个小地方要修改下,下文中会提到.环境centos5.2yum install mysql*装完mysql.下载mysql-bind补丁,google下就找到了.下载bind源码,官方网站有的下https://www.isc.org/解压完上述两

合理配置MySQL缓存 提高缓存命中率

众所周知,系统读取数据时,从内存中读取要比从硬盘上速度要快好几百倍.故现在绝大部分应用系统,都会最大程度的使用缓存(内存中的一个存储区域),来提高系统的运行效率.MySQL数据库也不例外.在这里,笔者将结合自己的工作经验,跟大家探讨一下,MySQL数据库中缓存的管理技巧:如何合理配置MySQL数据库缓存,提高缓存命中率. 一.什么时候应用系统会从缓存中获取数据? 数据库从服务器上读取数据时,可以从硬盘的数据文件中获取数据,也可以从数据库缓存中读取数据.现在数据库管理员需要搞清楚的是,在什么样的情

利用docker镜像配置mysql集群+nextcloud集群+haproxy负载均衡

测试环境: docker xampp 9.1.1 ubuntu 16.0.4 hadoop 2.7 jdk 1.8 一.配置mysql集群 通过docker拉取mysql集群镜像创建容器,包括ndb_mgm(管理节点).ndb_mgmd01.ndbd01(数据节点1).ndbd02(数据节点2).mysqld01(sql节点1).mysqld02(sql节点2) docker run -itd --name ndb_mgmd01 --net=scg --ip 192.166.0.2 -v /ro

使用amoeba配置mysql读写分离

一,背景介绍: Amoeba(变形虫)项目,专注 分布式数据库 proxy 开发.座落与Client.DB Server(s)之间.对客户端透明.具有负载均衡.高可用性.sql过滤.读写分离.可路由相关的query到目标数据库.可并发请求多台数据库合并结果.要想搭建Amoeba读写分离,首先需要知道MySQL的主从配置.具体的架构图如下图: 二,配置所需的环境: Amoeba for mysql:192.168.1.28 Master : 192.168.1.247 Slave : 192.16

Windows下面安装和配置MySQL(5.6.20)

1.首先到http://dev.mysql.com/ 上下载windows版mysql5.6免安装zip包.然后将zip包解压到D:\mysql-5.6.20-winx64下. 2.复制mysql下的my-default.ini, 在同目录下创建my.ini. my.ini为mysql的配置.最简单的配置: 1 basedir=D:/mysql-5.6.20-winx64 2 datadir=D:/mysql-5.6.20-winx64/data base config 我的配置为: 1 # F

Django项目的创建与介绍.应用的创建与介绍.启动项目.pycharm创建启动项目.生命周期.三件套.静态文件.请求及数据.配置Mysql完成数据迁移.单表ORM记录的增删改查

一.Django项目的创建与介绍 ''' 安装Django #在cmd中输入pip3 #出现这个错误Fatal error in launcher: Unable to create process using '"' #可以直接用 python3 -m pip 代替 pip3 #这个问题是pip3 版本过低直接在cmd中执行 python3 -m pip install --upgrade pip 更新pip3 # 在指定解释器环境下安装django 1.11.9 # 在真实python3环境

使用docker配置mysql主从复制

MySQL的主从复制之前也没做过,刚百度了下发现并不算难,但同时开两个虚机挺麻烦,于是我就想到了使用docker来配置MySQL主从复制. 环境:docker,centos,MySQL镜像,这里我直接pull了一个镜像 运行一个master容器 docker run -d --name master -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root mysql docker ps -a 这里将master容器的3306端口映射给主机的3307端口,-e代表设置环境