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;
- 登录对方的服务器的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