Powerdns


Powerdns安装配置

 

一.安装MYSQL服务组件 2

二.安装PowerDNS 2

三、安装PowerAdmin管理平台 4

四.搭建phpMyadmin管理mysql 8

五.MySQL 主从制作 9

六.MySQL主主制作 14

 

一.安装MYSQL服务组件

yum install wget

cd /usr/local/src
wget http://soft.laozuo.org/powerdns/epel-release-6-8.noarch.rpm
rpm -Uvh ./epel-release-6-8.noarch.rpm

因为PowerDNS是需要用到MYSQL数据库存储数据的,所以需要搭建MYSQL数据库环境。

yum -y install mysql mysql-server #安装MYSQL
chkconfig --levels 235 mysqld on #设置开机启动
/etc/init.d/mysqld start

修改root用户mysql密码

mysqladmin -u root password  mysql^regex$

 

MYSQL登录错误:mysqladmin: connect to server at "localhost" failed

参考:

http://blog.sina.com.cn/s/blog_8442befd01015zld.html

二.安装PowerDNS

yum -y  install pdns pdns-backend-mysql

连接MYSQL,创建数据库

mysql -u root -p

连接之后,输入我们上面设置的密码登录MYSQL,之后开始创建数据库和用户

create database powerdns;      #创建数据库

#创建数据库用户power_user ,并且设置www.laozuo.org为密码,我们设置的时候修改成自己的密码

grant all on powerdns.* to'power_user'@'localhost' identified by'mysql^regex$';
flush privileges;

#创建数据表

use powerdns;
create table domains (
id int auto_increment,
name varchar(255) not null,
master varchar(128) default null,
last_check int default null,
type varchar(6) not null,
notified_serial int default null,
account varchar(40) default null,
primary key (id));

 

create unique index name_index on domains(name);


create table records (
id int auto_increment,
domain_id int default null,
name varchar(255) default null,
type varchar(6) default null,
content varchar(255) default null,
ttl int default null,
prio int default null,
change_date int default null,
primary key(id));

 

create index rec_name_index on records(name);
create index nametype_index on records(name,type);
create index domain_id on records(domain_id);

create table supermasters (
ip varchar(25) not null,
nameserver varchar(255) not null,
account varchar(40) default null);

 

#退出当前MYSQL管理

quit;

 

编辑vi /etc/pdns/pdns.conf配置文件 加到最后

#launch=bind

launch=gmysql
gmysql-host=127.0.0.1
gmysql-user=power_user
gmysql-password=mysql^regex$     
gmysql-dbname=powerdns

 

注意:账号和密码和后面的安装步骤要一致

添加上述至pdns.conf最后,注意修改上面的数据库用户名以及密码对照上面设置的。

设置开机自动启动PowerDNS

chkconfig --levels 235 pdns on
/etc/init.d/pdns start

到目前为止,我们POWERDNS已经安装完毕,我们后面需要安装WEB管理界面。

三、安装PowerAdmin管理平台

A - 安装PHP环境

yum -y install httpd php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mhash gettext

设置开机启动apache

chkconfig --levels 235 httpd on
/etc/init.d/httpd start

B - 安装环境需要的2个支持组件

yum -y install php-pear-DB php-pear-MDB2-Driver-mysql

C - 安装PowerAdmin

以上A,B都完成PowerAdmin 需要支持的环境,这里我们安装最新poweradmin-2.1.7版本包

cd /tmp
wget http://soft.laozuo.org/powerdns/poweradmin-2.1.7.tgz

tar zxvf poweradmin-2.1.7.tgz
mv poweradmin-2.1.7 /var/www/html/poweradmin
touch /var/www/html/poweradmin/inc/config.inc.php
chown -R apache:apache /var/www/html/poweradmin/

我们先导临时文件夹tmp中下载和解压最新版本poweradmin-2.1.7,然后移动到VAR/WWW/HTML目录下。

这样完毕之后,我们可以用自己VPS的IP地址/poweradmin/install/打开POWERDNS安装向导。

 

 

 

第五、安装PowerAdmin向导

这里我们看上图,选择第一个英文语言,后面我们在设置账户登录时候可以选择CHINESE。

 

 

 

这里输入的是设置的数据库信息,以及设置Poweradmin面板密码。

 

 

 

power_user qwe123

master.dns.com        SOA

mysql -uroot -p           mysql^regex$

GRANT SELECT, INSERT, UPDATE, DELETE
ON powerdns.*
TO 'power_user'@'localhost'
IDENTIFIED BY 'mysql^regex$';

flush privileges;

设置数据库用户信息,以及DNS的域名服务器信息。

然后一直确定到最后,需要删除install/目录文件,然后在ip地址/poweradmin/登录POWERDNS面板。

cd /var/www/html/poweradmin

cp install/htaccess.dist .htaccess

mv install /tmp/

 

 

 

面板管理用户名admin,密码为我们之前设置的,可以选择CHINESE中文面板。

 

 

 

到目前为止,我们已经看到PowerDNS全部安装完毕,而且可以登录管理界面。因为是演示操作,所以数据库我这里用的root信息,如果我们真实搭建时候需要单独一个用户信息,确保账户的安全。对于如何使用,如果以后有时间写一篇补充应用方法,一般会用的朋友应该自己能琢磨。

 

 

四.搭建phpMyadmin管理mysql

 

测试LAMP搭建开源数据web管理程序phpMyadmin

 

cd /usr/local/src

wget https://files.phpmyadmin.net/phpMyAdmin/3.5.8.2/phpMyAdmin-3.5.8.2-all-languages.tar.gz

tar xf phpMyAdmin-3.5.8.2-all-languages.tar.gz

mv /usr/local/src/phpMyAdmin-3.5.8.2-all-languages /usr/local/apache2/htdocs/pma/

cd /usr/local/apache2/htdocs/

chmod 755 pma

cd pma

cp -f config.sample.inc.php config.inc.php

chown -R apache:apache /usr/local/apache2/htdocs/pma/

 

 

访问:

http://ip/pma

 

 

解决 phpmyadmin #2002 无法登录 MySQL 服务器

过了一个元旦,phpMyAdmin竟然无法登录了,输入用户名和密码后点击“执行”后一直报 “#2002 无法登录 MySQL 服务器”。

百度找到了一个解决办法,将 “pma”文件夹下的config.inc.php文件中的

$cfg['Servers'][$i]['host'] = 'localhost';

修改为

$cfg['Servers'][$i]['host'] = '127.0.0.1';

 

 

root   mysql^regex$

 

 

五.MySQL 主从制作

http://369369.blog.51cto.com/319630/790921/

 

主从服务器分别作以下操作:
  1.1、版本一致
  1.2、初始化表,并在后台启动mysql
  1.3、修改root的密码

2、修改主服务器master:
   #vi /etc/my.cnf
       [mysqld]
       log-bin=mysql-bin   //[必须]启用二进制日志
       server-id=222      //[必须]服务器唯一ID,默认是1,一般取IP最后一段

3、修改从服务器slave:
   #vi /etc/my.cnf
       [mysqld]
       log-bin=mysql-bin   //[不是必须]启用二进制日志
       server-id=226      //[必须]服务器唯一ID,默认是1,一般取IP最后一段

4、重启两台服务器的mysql
   /etc/init.d/mysqld restart

 

 

5.在主服务器上建立帐户并授权slave:
   #mysql -uroot -p   ^rew234cG
   mysql>

GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'q123456';

 

6、登录主服务器的mysql,查询master的状态
   mysql>show master status;
   +------------------+----------+--------------+------------------+
   | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
   +------------------+----------+--------------+------------------+
   | mysql-bin.000004 |      308 |              |                  |
   +------------------+----------+--------------+------------------+
   1 row in set (0.00 sec)
   注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化

 

7、配置从服务器Slave:

mysql -uroot -p   ^rew234cG

>

change master to master_host='10.32.100.251',

master_user='mysync',

master_password='q123456',

master_log_file='mysql-bin.000001',

master_log_pos=251; 

 

>start slave;

 

8、检查从服务器复制功能状态:

   mysql> show slave status\G

   *************************** 1. row ***************************

              Slave_IO_State: Waiting for master to send event
              Master_Host: 192.168.2.222  //主服务器地址
              Master_User: mysync   //授权帐户名,尽量避免使用root
              Master_Port: 3306    //数据库端口,部分版本没有此行
              Connect_Retry: 60
              Master_Log_File: mysql-bin.000004
              Read_Master_Log_Pos: 600     //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos
              Relay_Log_File: ddte-relay-bin.000003
              Relay_Log_Pos: 251
              Relay_Master_Log_File: mysql-bin.000004
              Slave_IO_Running: Yes    //此状态必须YES
              Slave_SQL_Running: Yes     //此状态必须YES
                    ......

注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。

以上操作过程,主从服务器配置完成。
  
9、主从服务器测试:

主服务器Mysql,建立数据库,并在这个库中建表插入一条数据:

  mysql> create database hi_db;
  Query OK, 1 row affected (0.00 sec)

  mysql> use hi_db;
  Database changed

  mysql>  create table hi_tb(id int(3),name char(10));
  Query OK, 0 rows affected (0.00 sec)
 
  mysql> insert into hi_tb values(001,'bobu');
  Query OK, 1 row affected (0.00 sec)

  mysql> show databases;
   +--------------------+
   | Database           |
   +--------------------+
   | information_schema |
   | hi_db                |
   | mysql                |
   | test                 |
   +--------------------+
   4 rows in set (0.00 sec)

从服务器Mysql查询:

   mysql> show databases;

   +--------------------+
   | Database               |
   +--------------------+
   | information_schema |
   | hi_db                 |       //I'M here,大家看到了吧
   | mysql                 |
   | test          |

   +--------------------+
   4 rows in set (0.00 sec)

   mysql> use hi_db
   Database changed
   mysql> select * from hi_tb;           //查看主服务器上新增的具体数据
   +------+------+
   | id   | name |
   +------+------+
   |    1 | bobu |
   +------+------+
   1 row in set (0.00 sec)

如果同步不成功

 1:停掉从库

mysql> slave stop

2:主库上找到日志和位置

mysql> show master status;

3:手动同步

mysql> change master to

> master_host='master_ip',

> master_user='gechong',

> master_password='gechong',

> master_port=3306,

> master_log_file='mysql-bin.000020',

> master_log_pos=135617781;

1 row in set (0.00 sec)

4:启动从库

mysql> slave start;

1 row in set (0.00 sec)

 

  

 

 

如果有异常需要跳过:

>slave stop;

>SET GLOBAL sql_slave_skip_counter = 1;

>slave start;

 

 

访问信息:

主:

http://10.32.100.251/poweradmin/edit.php?id=3

admin  qwe123

mysql账号密码:  root mysql^regex$

从:

http://10.32.100.252/poweradmin/index.php  (注意不要修改数据)

admin  qwe123

mysql账号密码:  root mysql^regex$

 

 

 

 

 

 

 

 

 

参考网站:

http://blog.csdn.net/signmem/article/details/18886143

http://www.laozuo.org/3924.html

 

 

 

六.MySQL主主制作

 

 

 

主从服务器分别作以下操作:
  1.1、版本一致
  1.2、初始化表,并在后台启动mysql
  1.3、修改root的密码

1、修改双方服务器配置文件:

A:
   #vi /etc/my.cnf
       [mysqld]
       log-bin=mysql-bin   //[必须]启用二进制日志
       server-id=222      //[必须]服务器唯一ID,默认是1,一般取IP最后一段
B:

   #vi /etc/my.cnf
       [mysqld]
       log-bin=mysql-bin   //[必须]启用二进制日志
       server-id=226      //[必须]服务器唯一ID,默认是1,一般取IP最后一段


2、重启两台服务器的mysql
   /etc/init.d/mysqld restart

 

 

3. 在两台服务器上建立帐户并授权slave:
A:  

 #mysql -uroot -p   mysql^regex$
   mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'q123456';

>flush privileges;

B:

 #mysql -uroot -p   mysql^regex$
   mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'q123456';

>flush privileges;

 

 

  1. 登录对方的服务器的mysql,查询master的状态

 注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化

或者进行锁表操作

注意!!!!!

生产环境需要申请时间锁表:

锁表设置只读

为后面备份准备,注意生产环境要提前申请停机时间;

mysql> flush tables with read lock;

提示:如果超过设置时间不操作会自动解锁。

mysql> show variables like '%timeout%';

 

解锁

     mysql> unlock tables;

 

 

A:
   mysql>show master status;
   +------------------+----------+--------------+------------------+
   | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
   +------------------+----------+--------------+------------------+
   | mysql-bin.000001 |      952 |              |                  |
   +------------------+----------+--------------+------------------+
   1 row in set (0.00 sec)
B:

   mysql>show master status;
   +------------------+----------+--------------+------------------+
   | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
   +------------------+----------+--------------+------------------+
   | mysql-bin.000001 |      308 |              |                  |
   +------------------+----------+--------------+------------------+
   1 row in set (0.00 sec)

 

 

5. 配置从服务器Slave对应对方的log-bin和pos值:

A:   对应B的log-bin和pos值

mysql -uroot -p   mysql^regex$

>

change master to master_host='10.32.100.251',

master_user='mysync',

master_password='q123456',

master_log_file='mysql-bin.000001',

master_log_pos=952; 

 

>start slave;

 

B:   对应A的log-bin和pos值

mysql -uroot -p   mysql^regex$

>

change master to master_host='10.32.100.252',

master_user='mysync',

master_password='q123456',

master_log_file='mysql-bin.000001',

master_log_pos=308; 

 

>start slave;

 

 

6、检查服务器复制功能状态:

   mysql> show slave status\G

   *************************** 1. row ***************************

              Slave_IO_State: Waiting for master to send event
              Master_Host: 192.168.2.222  //主服务器地址
              Master_User: mysync   //授权帐户名,尽量避免使用root
              Master_Port: 3306    //数据库端口,部分版本没有此行
              Connect_Retry: 60
              Master_Log_File: mysql-bin.000004
              Read_Master_Log_Pos: 600     //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos
              Relay_Log_File: ddte-relay-bin.000003
              Relay_Log_Pos: 251
              Relay_Master_Log_File: mysql-bin.000004
              Slave_IO_Running: Yes    //此状态必须YES
              Slave_SQL_Running: Yes     //此状态必须YES
                    ......

注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。

以上操作过程,主从服务器配置完成。
  
7、主从服务器测试:

主服务器Mysql,建立数据库,并在这个库中建表插入一条数据:

  mysql> create database hi_db;
  Query OK, 1 row affected (0.00 sec)

  mysql> use hi_db;
  Database changed

  mysql>  create table hi_tb(id int(3),name char(10));
  Query OK, 0 rows affected (0.00 sec)
 
  mysql> insert into hi_tb values(001,'bobu');
  Query OK, 1 row affected (0.00 sec)

  mysql> show databases;
   +--------------------+
   | Database           |
   +--------------------+
   | information_schema |
   | hi_db                |
   | mysql                |
   | test                 |
   +--------------------+
   4 rows in set (0.00 sec)

从服务器Mysql查询:

   mysql> show databases;

   +--------------------+
   | Database               |
   +--------------------+
   | information_schema |
   | hi_db                 |       //I'M here,大家看到了吧
   | mysql                 |
   | test          |

   +--------------------+
   4 rows in set (0.00 sec)

   mysql> use hi_db
   Database changed
   mysql> select * from hi_tb;           //查看主服务器上新增的具体数据
   +------+------+
   | id   | name |
   +------+------+
   |    1 | bobu |
   +------+------+
   1 row in set (0.00 sec)

如果同步不成功

 1:停掉从库

mysql> slave stop

2:主库上找到日志和位置

mysql> show master status;

3:手动同步

mysql> change master to

> master_host='master_ip',

> master_user='gechong',

> master_password='gechong',

> master_port=3306,

> master_log_file='mysql-bin.000020',

> master_log_pos=135617781;

1 row in set (0.00 sec)

4:启动从库

mysql> slave start;

1 row in set (0.00 sec)

 

  

 

如果有异常需要跳过:

>slave stop;

>SET GLOBAL sql_slave_skip_counter = 1;

>slave start;

 

参考网址:

 

http://blog.csdn.net/socho/article/details/51804720

 

http://blog.csdn.net/lgg201/article/details/5761870

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM