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