How to use HeartBeat to form a high availability mysql cluster

I have reposted many posts, in fact, to build a mysql cluster using heartbeat. Many online uses make to generate RPM for installation. I also found a lot of information. The cluster users that come with mysql are not satisfied. I can only try the vmware virtual machine again. I would like to thank the blog here: http://kerry.blog.51cto.com/172631/110206/, many of them are implemented based on the experience inside, but only part of it is still unable to solve the need for other methods .

1. Background
< span style="font-size:14px">Currently most websites useLinuxMYSQLAPACHE +PHPThis classic configuration, how to prevent the unavailability of the entire website caused by a single point of failure is a problem that website managers must consider, among which the high availability of the database (< /span>Database server’s high availability) is the top priority.
For the high availability of databases, each commercial software vendor has its own solutions, such asOracle OPS serverandIBM DB2 (share-nothing architecture). RecentlyMYSQL AB also releasedMYSQL cluster software, the use is similar toIBM DB2 Technology.
MySQL cluster may be the most ideal solution in the future, but from the perspective of resources and integration, a simple and practical solution is given for reference. This article introduces the more cost-effective one:useHeartbeat 2.0ConfigurationLinux High availability cluster,simultaneous useHeartbeat< /span>You can also implement a simpleweb cluster.
2. Implementation principle
throughLinux HA softwareheartbeatimplementationIPAutomatic drift, that is, when a server goes down, it will floatIP< /span>(the entireclusteroutside IP) automatically drifts to another server.
Passed< span style="color:black">MysqlOwnreplicationThe overall performance of the synchronization of multiple databases on different machines will be reduced.MYSQL 1% of the performance, availability and data security will be greatly improved, at the same time the server switching is transparent to the end user, the terminal application does not need to be changed.
< span style="color:black">Required hardware:
Two servers or work machines with roughly the same configuration installed with dual network cardsa crossover network cable(for Heartbeat line for dual-machine connection)
I am here based onhttp://distfiles.macports.org/mysql5/ found mysql-5.5.29.tar.gz to build mysql

Required Software:
Linux HAsoftwareheartbeat(only supports two nodes), the software integrated in the installation diskrpmPackage
Software homepage:[url]http://www.linux- ha.org/[/url]

I installed heartbeat through yum installation and epel. For details, please see the following steps:

1 , InstallMYSQL
#cd /opt
#useradd mysql -d /usr/local/mysql -s /sbin/nologin
#tar -zxvf mysql-5.1.29-rc.tar.gz strong>
#cd mysql-5.1.29-rc
#./configure –prefix=/usr/local/mysql –with-mysqld-user=mysql –without- debug –with-big-tables –with-charset=gbk –with-collation=gbk_chinese_ci –with-extra-charsets=all –with-pthread –enable-thread-safe-client –enable-assembler –without-isam –without-innodb –without-ndb-debug –with-mysqli

If this is not installed gcc compiler, need to be executed

yum groupinstall "Development Tools"
Next if missing ncurses Installation package

Solution:

download and install the corresponding software package

1. If your system isRedHatseries:

yum list|grep ncurses

yum -y install ncurses-devel

< span style="font-family:Calibri">yum install ncurses-devel



< /div>
# make && make install
< strong>#/usr/local/mysql/bin/mysql_install_db//Initialize the database< /span>
#chown -R mysql.mysql /usr/local/mysql///Set the directory host< /strong>
#cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf//copy configuration file
#cp support-files/mysql.server /etc/rc.d/init.d/mysqld//Set the startup file
#chmod 700 /etc/rc.d/init.d/mysqld
#/usr/local/mysql/bin/mysqld_safe –user=mysql &
#/etc/rc.d/init.d/mysqld start
At startupmysql< span style="color:black">Report an error
< span style="color:black">Check the log and found the following error:
< /span>

will /etc/my.cnf in the file skip -federated Comment it out, and then execute /usr/local/mysql/bin/mysql_install_dbuser=mysql will do

< span style="font-family:宋体; color:#002d7a">If the above version does not work, you can take a look Whether there is a problem with my.cnf, you can check the log to get the cause of the problem:
http://zhidao.baidu.com/link?url=nXPsnqxsE2OTnMhTEbUX9NlE1LSiqcmJ09 pEm2hKsLwrOCnvII4aEFelqGnoiLYbi2iU6tRBQFsSjzK2b6JMa_

#chkconfig –add mysqld< /span>
#chkconfig –level 2345 mysqld on
Set the soft connection, if you want to delete it directly ln -C
#ln -s /usr/local/mysql/bin/mysql /sbin/mysql
#ln -s /usr/local/mysql/bin/mysqladmin /sbin/mysqladmin
#mysqladmin –u root password Password01!//SettingsrootPassword
#Configuration library file search path
#echo “/usr/local/ mysql/lib/mysql” >> /etc/ld.so.conf
< strong>#ldconfig
#Add /usr/local/mysql/binto environment variablePATH
#export PATH=$PATH:/usr/local/mysql/bin
mysqlBAlso follow the above method to install
2,mysqlASettings
Set up synchronization database:
< strong>here I will usetest database for testing, create a new one in thetestdatabase< /span>datatable and add some data, the specific operations are as follows:
#mysql – u root –pPassword01!
mysql> create table data(name VARCHAR(20), address VARCHAR(50), phone VARCHAR(20));
mysql>insert into data(name,address,phone) values(‘ jhone’,’beijing’,’138000000′);
mysql>select * from data;
Set up a database synchronization account:
mysql>GRANT REPLICATION SLAVE,REPLICATION CLIENT,RELOAD,SUPER ON *.* TO’backup’@’10.10.10.205′ IDENTIFIED BY’qawsed’;
(Granted from10.0.0.2login user on the hostbackupdata copy permission,4.02Previously used:GRANT FILE ON *.* TO [email protected]. 0.2 IDENTIFIED BY’qawsed’;)
mysql>flush privileges;

修改配置文件:
停止< /span>mysql服务
[root@mysqlA opt]#service mysqld stop< /span>
建立用于更新日志的目录,并给于mysql的权限
[root@mysqlA opt]# mkdir /var/log/mysql
[root@mysqlA opt]# chown mysql.mysql /var/log/mysql/
更改Mysql配置文件/etc/my.cnf
[root@mysqlA opt]# vi /etc/my.cnf
server-id=1                 //服务器ID
log-bin=mysql-bin
log-bin=/var/log/mysql/updatelog   //启用更新日志
binlog-do-db=test       //表示需要备份的数据库是test这个数据库
replicate-same-server-id
master-host=10.0.0.2      //指定主服务器IP
master-user=backup       //指定在主服务器上可以同步的帐号
master-password=qawsed //指定帐号对应的密码
master-connect-retry=60  //断点重试间隔为60
replicate-do-db=test      //表示同步test数据库
binlog-i gnore-db=mysql   //不同步mysql数据库
test进行备份
[root@mysqlA opt]# service mysqld start    //先启动mysql
[root@mysqlA opt]# /usr/local/mysql/bin/mysqldump -h localhost -u root -p1q2w3e test >test.sql
[root@mysqlA opt]#scp test.sql [email protected]:/op t     // (将test.sql复制到mysqlB/opt目录下)
至此mysqlA服务器上有关mysql的设置已完成,下一步开始配置mysqlB
设置mysqlB
设置数据库同步帐户:
mysql>GRANT REPLICATION SLAVE,REPLICATION CLIENT,RELOAD,SUPER ON *.* TO ‘backup’@’10.0.0.1’ IDENTIFIED BY ‘qawsed’;
(授与从10.0.0.1主机上登录用户backup数据复制权限,4.02版本以前用:GRANT FILE ON *.* TO [email protected] IDENTIFIED BY ‘qawsed’;)
mysql>flush privileges;
修改配置文件:
停止mysql服务
[root@mysqlA opt]#service mysqld stop
建立用于更新日志的目录,并给于mysql的权限
[root@mysqlA opt]# mkdir /var/log/mysql
[root@mysqlA opt]# chown mysql.mysql /var/log/mysql/
更改Mysql配置文件/etc/my.cnf
[root@mysqlA opt]# vi /etc/my.cnf
server-id=2                 //服务器ID
log-bin=mysql-bin
log-bin=/var/log/mysql/updatelog   //启用更新日志
binlog-do-db=test       //表示需要备份的数据库是test这个数据库
replicate-same-server-id
master-host=10.0.0.1      //指定主服务器IP
master-user=backup       //指定在主服务器上可以同步的帐号

master-password=qawsed //指定帐号对应的密码
master-connect-retry=60  //断点重试间隔为60
replicate-do-db=test      //表示同步test数据库
binlog-ignore-db=mysql   //不同步mysql数据库 < /div>

 
还原从mysqlA备份过的test.sql
#service mysqld start
# mysql -u root -p1q2w3e test
重启两边的mysql服务
查询配置
Show Slave status:此处Slave_IO_Running ,Slave_SQL_Running 都应该是yes,表示从库的I/O,Slave_SQL线程都正确开启.
Mysql中可通过以下命令来查看主从状态
show master status 查看master状态
show slave status 查看slave状态
show processlist G 查看当前进程
stop slave 暂时停止slave进程
start slave 开始slave进程
primary服务器上 MySQL命令符下输入:
mysql>show master status;
mysql>show slave status\G;
如果出现以错误:
解决办法:在/etc/my.cnf [mysqld]下面加上replicate-same-server-id参数
这里如果是Slave_IO_Running:No Slave_SQL_Running:YES还有可能是IPTABLES没有设置对,可以用下面命令:

在vmvare里面配了两台mysql,发现用mysql连不上mysql服务器,用telnet登录mysql的3306端口,发现居然是no route to host;

[zhoul ei@localhost ~]$ telnet 192.168.2.48 3306
Trying 192.168.2.48…
telnet: connect to address 192.168.2.48: No route to host
telnet: Unable to connect to remote host: No route to host

觉得甚是差异,估计是虚拟机装了有问题,就把虚拟机中的防火墙给清了一下,发现可行。

[zhoulei@localhost ~]$ sudo iptables -F

因为如果安装telnet命令,telnet对方的3362会报 No route to host

这里如果是Slave_IO_Running:YES Slave_SQL_Running:NO可以用下面命令:
mysql> slave stop;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> slave start;
具体参考http://blog.csdn.net/orichisonic/article/details/47311391
到此mysql的双机互备已基本完成,在两台服务器的mysql数据库中任意添加数据,都可以同步到对端服务器上

安装配置heartbeat:
Hear tbeat下载地址如下:
这里是用:

  1. yum install PyXML cluster-glue cluster-glue-libs resource-agents 

然后

  1. wget http://dl.fedoraproject.org/pub/epel/6/x86_64/heartbeat-3.0.4-2.el6.x86_64.rpm  
  2. wget http://dl.fedoraproject.org/pub/epel/6/x86_64/heartbeat-libs-3.0.4-2.el6.x86_64.rpm  
  3. rpm -ivh heartbeat-* 

因为原来的教程是centos 5.3下的heartbeat2以上的版本

配置 HA的各配置文件:
复制配置文件

[root@mysqlA opt]# cp /usr/share/doc/packages/heartbeat/authkeys /etc/ha.d/

[root@mysqlA opt]# cp /usr/share/doc/packages/heartbeat/haresources /etc/ha.d/
[root@mysqlA opt]# cp /usr/share/doc/packages/heartbeat/ha.cf /etc/ha.d/
配置心跳的加密方式:authkeys
[root@mysqlA opt]#vi /etc/ha.d/authkeys
#如果使用双机对联线(双绞线),可以配置如下:
auth 1
1 crc
#存盘退出,然后
[root@mysqlA opt]#chmod 600 authkeys
 
配置心跳的监控:haresources
[root@mysqlA opt]#vi /etc/ha.d/haresources
#各主机这部分应完全相同。
mysqlA IPaddr::192.168.8.155 ipvsadm mysqld
[root@mysqlA opt]# mkdir -p /var/log/ha_log
[root@mysqlA opt]#chmod 777 /var/log/ha_log/
 
配置心跳的配置文件:ha.cf
[root@mysqlA opt]#vi /etc/ha.d/ha.cf
logfile /var/log/ha_log/ha-log.log   ## ha的日志文件记录位置。如没有该目录,则需要手动添加
bcast eth1     ##使用eht1做心跳监测
keepalive 2    ##设定心跳(监测)时间时间为2
warntime 10
deadtime 30
initdead 120
hopfudge 1
udpport 694    ##使用udp端口694 进行心跳监测
auto_failback on
node mysqlA  ##节点1,必须要与 uname -n 指令得到的结果一致。
node mysqlB  ##节点2
ping 192.168.8.100   ##通过ping 网关来监测心跳是否正常。
 
设置ipvsadm的巡回监测
[root@mysqlA opt]#ipvsadm -A -t 192.168.8.155:3306 -s rr
[root@mysqlA opt]#ipvsadm -a -t 192.168.8.155:3306 -r 192.168.8.151:3306 -m
[root@mysqlA opt]#ipvsadm -a -t 192.168.8.155:3306 -r 192.168.8.152:3306 –m
 
执行后进行监测:
[root@mysqlA opt]#ipvsadm –list
 
 
HA服务的启动、关闭以及测试
启动HA: service heartbeat start
关闭HA; service heartbeat stop
进行监控: service heartbeat status
防火墙设置
heartbeat 默认使用udp 694端口进行心跳监测。  如果系统有使用iptables 做防火墙,应记住把这个端口打开。
iptables -I INPUT -p udp –dport 694 -j ACCEPT
 
到此mysql双机互备已基本完成,不管哪一台服务器菪机都不会影响mysql的正常运行

一、背景

当前大多网站采用Linux MYSQLAPACHE+PHP这种经典配置,如何防止单点失败造成的整个网站的不可用是网站管理者必须要考虑的问题,其中数据库的高可用性(Database server’s high availability)是重中之重。

对于数据库的高可用性,各商业软件的厂商都有各自的解决方案,比如Oracle OPS serverIBM DB2 (share-nothing architecture)。最近MYSQL AB也发布了MYSQL cluster 软件,使用与IBM DB2类似的技术。

MySQL cluster可能会是日后最理想的方案,但是从资源、可集成度方面考虑,给出一个简单实用的方案借鉴。本文介绍的是性价比比较高的一种使用Heartbeat 2.0配置Linux高可用性集群,同时使用Heartbeat也可以实现简单的web集群。

 

二、实现原理

通过Linux HA 软件 heartbeat 实现IP的自动漂移,即当一台服务器宕机后,浮动IP(整个cluster的对外IP )自动漂移到另外一台服务器。

通过Mysql自身的replication 实现不同机器上多个数据库的同步整体性能此方案将会降低MYSQL 1%左右的性能,可用性及数据安全性将大有提高,同时服务器的切换对终端使用者是透明的,终端应用不需要进行更改。

所需硬件:

安装有双网卡的配置大致相同的服务器或工作机两台 一条交叉网线(用于双机对连的心跳线)

  我这里是根据http://distfiles.macports.org/mysql5/找的mysql-5.5.29.tar.gz来搭建mysql


所需软件:
Linux HA 软件 heartbeat (只支持两个节点),安装盘里集成的有这个软件的rpm
软件主页:[url]http://www.linux-ha.org/[/url]

所需软件:

Linux HA 软件 heartbeat (只支持两个节点),安装盘里集成的有这个软件的rpm

软件主页:[url]http://www.linux-ha.org/[/url]

我这里是通过yum 安装还有epel来安装heartbeat的,具体请看下面步骤:

1、安装MYSQL
#cd /opt
#useradd mysql -d /usr/local/mysql -s /sbin/nologin
#tar -zxvf mysql-5.1.29-rc.tar.gz
#cd mysql-5.1.29-rc
# ./configure –prefix=/usr/local/mysql –with-mysqld-user=mysql –without-debug –with-big-tables –with-charset=gbk –with-collation=gbk_chinese_ci –with-extra-charsets=all –with-pthread –enable-thread-safe-client –enable-assembler –without-isam –without-innodb –without-ndb-debug –with-mysqli

这个如果没有装gcc编译器,需要执行

yum groupinstall "Development Tools"
接下如果缺少< /span> ncurses 安装包

 

解决办法:

下载安装相应软件包

一、如果你的系统是RedHat系列:

yum list|grep ncurses

yum -y install ncurses-devel

yum install ncurses-devel



#make && make install
#/u sr/local/mysql/bin/mysql_install_db        //初始化数据库
#chown -R mysql.mysql /usr/local/mysql/     //设置目录宿主
#cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf   //复制配置文件
#cp support-files/mysql.server /etc/rc.d/init.d/mysqld    //设置启动文件 
#chmod 700 /etc/rc.d/init.d/mysqld                         
#/usr/local/mysql/bin/mysqld_safe –user=mysql &         
#/etc/rc.d/init.d/mysqld start
在启动mysql时报错
查看日志发现以下错误:

/etc/my.cnf 文件中的 skip-federated 注释掉,然后执行/usr/local/mysql/bin/mysql_install_dbuser=mysql就可以了

1、安装MYSQL

#cd /opt< /span>

#useradd mysql -d /usr/local/mysql -s /sbin/nologin

#tar -zxvf mysql-5.1.29-rc.tar.gz

#cd mysql-5.1.29-rc

# ./configure –prefix=/usr/local/mysql –with-mysqld-user=mysql –without-debug –with-big-tables –with-charset=gbk –with-collation=gbk_chinese_ci –with-extra-charsets=all –with-pthread –enable-thread-safe-client –enable-assembler –without-isam –without-innodb –without-ndb-debug –with-mysqli


这个如果没有装gcc编译器,需要执行

yum groupinstall "Development Tools"
接下如果缺少 ncurses 安装包

 

解决办法:

下载安装相应软件包

一、如果你的系统是RedHat系列:

yum list|grep ncurses

yum -y install ncurses-devel

yum install ncurses-devel



yum groupinstall "Development Tools"

接下如果缺少 ncurses 安装包

 

解决办法:

下载安装相应软件包

一、如果你的系统是RedHat系列:

yum list|grep ncurses

yum -y install ncurses-devel

yum install ncurses-devel




#make && make install

#/usr/local/mysql/bin/mysql_install_db        //初始化数据库

#chown -R mysql.mysql /usr/local/mysql/     //设置目录宿主< /span>

#cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf   //复制配置文件

#cp support-files/mysql.server /etc/rc.d/init.d/mysqld    //设置启动文件 

#chmod 700 /etc/rc.d/init.d/mysqld                         

#/usr/local/mysql/bin/mysqld_safe –user=mysql &         

#/etc/rc.d/init.d/mysqld start

在启动mysql时报错< /span>

查看日志发现以下错误:

如果上面的版本还不行,可以看看my.cnf是否有问题,可以通过查看日志来得到问题原因:

http://zhidao.baidu.com/link?url=nXPsnqxsE2OTnMhTEbUX9NlE1LSiqcmJ09pEm2hKsLwrOCnvII4aEFelqGnoiLYbi2iU6tRBQFsSjzK2b6JMa_

#chkconfig –add mysqld
#chkconfig –level 2345 mysqld on
设置软连接,如果要删除直接ln -C
#ln -s /usr/local/mysql/bin/mysql /sbin/mysql
#ln -s /usr/local/mysql/bin/mysqladmin /sbin/mysqladmin
#mysqladmin –u root password Password01!//设置root 密码
#配置库文件搜索路径
#echo “/usr/local/mysql/lib/mysql” >> /etc/ld.so.conf< /strong>
#ldconfig
#添加/usr/local/mysql/bin到环境变量PATH
#export PATH=$PATH:/usr/local/mysql/bin
mysqlB也按以上的方式进行安装
2mysqlA 设置
设置同步数据库:
   在这里我就用test数据库来做测试,在test数据库里新建一个data表,并添加一些数据,具体操作如下:
#mysql –u root –pPassword01!

mysql>  create table data(name VARCHAR(20), address VARCHAR(50), phone VARCHAR(20));
mysql>insert into data(name,address,phone) values(‘jhone’,’beijing’,’138000000′);
mysql>select * from data;
设置数据库同步帐户:
mysql>GRANT REPLICATION SLAVE,REPLICATION CLIENT,RELOAD,SUPER ON *.* TO ‘backup’@’10.10.10.205’ IDENTIFIED BY ‘qawsed’;
(授与从10.0.0.2主机上登录用户backup数据复制权限,4.02版本以前用:GRANT FILE ON *.* TO [email protected] IDENTIFIED BY ‘qawsed’;)
mysql>flush privileges;

修改配置文件:
停止mysql服务
[root@mysqlA opt]#service mysqld stop
建立用于更新日志的目录,并给于mysql的权限
[root@mysqlA opt]# mkdir /var/log/mysql
[root@mysqlA opt]# chown mysql.mysql /var/log/mysql/

更改Mysql配置文件/etc/my.cnf
[root@mysqlA opt]# vi /etc/my.cnf
server-id=1                 //服务器ID
log-bin=mysql-bin
log-bin=/var/log/mysql/updatelog   //启用更新日志
binlog-do-db=test       //表示需要备份的数据库是test这个数据库
replicate-same-server-id
master-host=10.0.0.2      //指定主服务器IP
master-user=backup       //指定在主服务器上可以同步的帐号
master-pa ssword=qawsed //指定帐号对应的密码
master-connect-retry=60  //断点重试间隔为60
replicate-do-db=test      //表示同步test数据库
binlog-ignore-db=mysql   //不同步mysql数据库
test进行备份
[root@mysqlA opt]# service mysqld start    //先启动mysql
[root@mysqlA opt]# /usr/local/mysql/bin/mysqldump -h localhost -u root -p1q2w3e test >test.sql
[root@mysqlA opt]#scp test.sql [email protected]:/opt     // (将test.sql复制到mysqlB/opt目录下)
至此mysqlA服务器上有关mysql的设置已完成,下一步开始配置mysqlB
设置mysqlB
设置数据库同步帐户:
mysql>GRANT REPLICATION SLAVE,REPLICATION CLIENT,RELOAD,SUPER ON *.* TO ‘backup’@’10. 0.0.1’ IDENTIFIED BY ‘qawsed’;
(授与从10.0.0.1主机上登录用户backup数据复制权限,4.02版本以前用:GRANT FILE ON *.* TO [email protected] IDENTIFIED BY ‘qawsed’;)
mysql>flush privileges;
修改配置文件:
停止mysql服务
[root@mysqlA opt]#service mysqld stop
建立用于更新日志的目录,并给于mysql的权限
[root@mysqlA opt]# mkdir /var/log/mysql
[root@mysqlA opt]# chown mysql.mysql /var/log/mysql/
更改Mysql配置文件/etc/my.cnf < /div>

[root@mysqlA opt]# vi /etc/my.cnf
server-id=2                 //服务器ID
log-bin=mysql-bin
log-bin=/var/log/mysql/updatelog   //启用更新日志
binlog-do-db=test       //表示需要备份的数据库是test< span style="color:black">这个数据库
replicate-same-server-id
master-host=10.0.0.1      //指定主服务器IP
master-user=backup       //指定在主服务器上可以同步的帐号
master-password=qawsed //指定帐号对应的密码
master-connect-retry=60  //断点重试间隔为60
replicate-do-db=test      //表示同步test数据库
binlog-ignore-db=mysql   //不同步mysql数据库
 
还原从mysqlA备份过的test.sql
#service mysqld start
# mysql -u root -p1q2w3e test
重启两边的mysql服务
查询配置
Show Slave status:此处Slave_IO_Running ,Slave_SQL_Running 都应该是yes,表示从库的< span style="color:black">I/O,Slave_SQL线程都正确开启.
Mysql中可通过以下命令来查看主从状态
show master status 查看master状态
show slave status 查看slave状态
show processlist G 查看当前进程
stop slave 暂时停止slave进程
start slave 开始slave进程
primary服务器上 MySQL命令符下输入:
mysql>show master status;

mysql>show slave status\G;
如果出现以错误:
解决办法:在/etc/my.cnf [mysqld]下面加上replicate-same-server-id参数
这里如果是Slave_IO_Running:No Slave_SQL_Running:YES还有可能是IPTABLES没有设置对,可以用下面命令:

在vmvare里面配了两台mysql,发现用mysql连不上mysql服务器,用telnet登录mysql的3306端口,发现居然是no route to host;

[zhoulei@localhost ~]$ telnet 192.168.2.48 3306
Trying 192.168.2.48…
telnet: connect to address 192.168.2.48: No route to host
telnet: Unable to connect to remote host: No route to host

觉得甚是差异,估计是虚拟机装了有问题,就把虚拟机中的防火墙给清了一下,发现可行。

[zhoulei@localhost ~]$ sudo iptables -F

因为如果安装telnet命令,telnet对方的3362会报 No route to host

这里如果是Slave_IO_Running:YES Slave_SQL_Running:NO可以用下面命令:
mysql> slave stop;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> slave start;
具体参考http://blog.csdn.net/orichisonic/article/details/47311391
< span style="padding:0px; margin:0px; color:red; font-family:宋体">到此mysql的双机互备已基本完成,在两台服务器的mysql数据库中任意添加数据,都可以同步到对端服务器上

安装配置heartbeat:
Heartbeat下载地址如下:
这里是用:

  1. yum install PyXML cluster-glue cluster-glue-libs resource-agents 

然后

  1. wget http://dl.fedoraproject.org/pub/epel/6/x86_64/heartbeat-3.0.4-2.el6.x86_64.rpm  
  2. wget http://dl.fedoraproject.org/pub/epel/6/x86_64/heartbeat-libs-3.0.4-2.el6.x86_64.rpm  
  3. rpm -ivh heartbeat-* 

因为原来的教程是centos 5.3下的heartbeat2以上的版本

配置 HA的各配置文件:
复制配置文件
[root@mysqlA opt]# cp /usr/share/doc/packages/heartbeat/authkeys /etc/ha.d/
[root@mysqlA opt]# cp /usr/share/doc/packages/heartbeat/haresources /etc/ha.d/
[root@mysqlA opt]# cp /usr/share/doc/packages/heartbeat/ha.cf /etc/ha.d/
配置心跳的加密方式:authkeys
[root@mysqlA opt]#vi /etc/ha.d/authkeys
#如果使用双机对联线(双绞线),可以配置如下:
auth 1
1 crc
#存盘退出,然后
[root@mysqlA opt]#chmod 600 authkeys
 
配置心跳的监控:haresources
[root@mysqlA opt]#vi /etc/ha.d/haresources
#各主机这部分应完全相同。
mysqlA IPaddr::192.168.8.155 ipvsadm mysqld
[root@mysqlA opt]# mkdir -p /var/log/ha_log
[root@mysqlA opt]#chmod 777 /var/log/ha_log/
 
配置心跳的配置文件:ha.cf
[root@mysqlA opt]#vi /etc/ha.d/ha.cf
logfile /var/log/ha_log/ha-log.log   ## ha的日志文件记录位置。如没有该目录,则需要手动添加
bcast eth1     ##使用eht1做心跳监测
keepalive 2    ##设定心跳(监测)时间时间为2
warntime 10
deadtime 30
initdead 120
hopfudge 1
udpport 694    ##使用udp端口694 进行心跳监测
auto_failback on
node mysqlA  ##节点1,必须要与 uname -n 指令得到的结果一致。
node mysqlB  ##节点2
ping 192.168.8.100   ##通过ping 网关来监测心跳是否正常。
 
设置ipvsadm的巡回监测
[root@mysqlA opt]#ipvsadm -A -t 192.168.8.155:3306 -s rr
[root@mysqlA opt]#ipvsadm -a -t 192.168.8.155:3306 -r 192.168.8.151:3306 -m
[root@mysqlA opt]#ipvsadm -a -t 192.168.8.155:3306 -r 192.168.8.152: 3306 –m
 
执行后进行监测:
[root@mysqlA opt]#ipvsadm –list
 
 
HA服务的启动、关闭以及测试
启动HA: service heartbeat start
关闭HA; service heartbeat stop
进行监控: service heartbeat status
防火墙设置
heartbeat 默认使用udp 694端口进行心跳监测。  如果系统有使用iptables 做防火墙,应记住把这个端口打开。
iptables -I INPUT -p udp –dport 694 -j ACCEPT
 
到此mysql双机互备已基本完成,不管哪一台服务器菪机都不会影响mysql的正常运行

#chkconfig –add mysqld

#chkconfig –level 2345 mysqld on

设置软连接,如果要删除直接ln -C

#ln -s /usr/local/mysql/bin/mysql /sbin/mysql

#ln -s /usr/local/mysql/bin/mysqladmin /sbin/mysqladmin

#mysqladmin –u root password Password01!//设置root 密码

#配置库文件搜索路径

#echo “/usr/local/mysql/lib/mysql” >> /etc/ld.so.conf

#ldconfig

#添加/usr/local/mysql/bin到环境变量PATH

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

mysqlB也按以上的方式进行安装

2mysqlA设置

设置同步数据库:

   在这里我就用test数据库来做测试,在test数据库里新建一个data表,并添加一些数据,具体操作如下:

#mysql –u root –pPassword01!

mysql>  create table data(name VARCHAR(20), address VARCHAR(50), phone VARCHAR(20));

mysql>insert into data(name,address,phone) values(‘jhone’,’beijing’,’138000000′);

mysql>select * from data;

设置数据库同步帐户:

mysql>GRANT REPLICATION SLAVE,REPLICATION CLIENT,RELOAD,SUPER ON *.* TO ‘backup’@’10.10.10.205’ IDENTIFIED BY ‘qawsed’;

(授与从10.0.0.2主机上登录用户backup数据复制权限,4.02版本以前用:GRANT FILE ON *.* TO [email protected] IDENTIFIED BY ‘qawsed’;)

mysql>flush privileges;


修改配置文件:
停止mysql服务
[root@mysqlA opt]#service mysqld stop
建立用于更新日志的目录,并给于mysql的权限
[root@mysqlA opt]# mkdir /var/log/mysql

[root@mysqlA opt]# chown mysql.mysql /var/log/mysql/
更改Mysql配置文件/etc/my.cnf
[root@mysqlA opt]# vi /etc/my.cnf
server-id=1                 //服务器ID
log-bin=mysql-bin
log-bin=/var/log/mysql/updatelog   //启用更新日志
binlog-do-db=test       //表示需要备份的数据库是test这个数据库
replicate-same-server-id
master-host=10.0.0.2      //指定主服务器IP
master-user=backup       //指定在主服务器上可以同步的帐号
master-password=qawsed //指定帐号对应的密码
master-connect-retry=60  //断点重试间隔为60
replicate-do-db=test      //表示同步test数据库
binlog-ignore-db=mysql   //不同步mysql数据库
test进行备份
[root@mysqlA opt]# service mysqld start    //先启动mysql
[root@mysqlA opt]# /usr/local/mysql/bin/mysqldump -h localhost -u root -p1q2w3e test >test.sql
[root@mysqlA opt]#scp test.sql [email protected]:/opt     // (将test.sql复制到mysqlB/opt目录下)
至此mysqlA服务器上有关mysql的设置已完成,下一步开始配置mysqlB
设置mysqlB
设置数据库同步帐户:
mysql>GRANT REPLICATION SLAVE,REPLICATION CLIENT,RELOAD,SUPER ON *.* TO ‘backup’@’10.0.0.1’ IDENTIFIED BY ‘qawsed’;
(授与从10.0.0.1主机上登录用户backup数据复制权限,4.02版本以前用:GRANT FILE ON *.* TO [email protected] IDENTIFIED BY ‘qawsed’;)
mysql>flush privileges;
修改配置文件:
停止mysql服务
[root@mysqlA opt]#service mysqld stop
建立用于更新日志的目录,并给于mysql的权限
[root@mysqlA opt]# mkdir /var/log/mysql
[root@mysqlA opt]# chown mysql.mysql /var/log/mysql/
更改Mysql配置文件/etc/my.cnf
[root@mysqlA opt]# vi /etc/my.cnf
server-id=2                 //服务器ID
log-bin=mysql-bin
log-bin=/var/log/mysql/updatelog   //启用更新日志
binlog-do-db=test       //表示需要备份的数据库是test这个数据库
replicate-same-server-id
master-host=10.0.0.1      //指定主服务器IP
master-user=backup       //指定在主服务器上可以同步的帐号
master-password=qawsed //指定帐号对应的密码
master-connect-retry=60  //断点重试间隔为60
replicate-do-db=test      //表示同步test数据库
binlog-ignore-db=mysql   //不同步mysql数据库
 
还原从mysqlA备份过的test.sql
#service mysqld start
# mysql -u root -p1q2w3e test
重启两边的mysql服务
查询配置
Show Slave status:此处Slave_IO_Running ,Slave_SQL_Running 都应该是yes,表示从库的I/O,Slave_SQL线程都正确开启.
Mysql中可通过以下命令来查看主从状态
show master status 查看master状态
show slave status 查看slave状态
show processlist G 查看当前进程
stop slave 暂时停止slave进程
start slave 开始slave进程
primary服务器上 MySQL命令符下输入:
mysql>show master status;
mysql>show slave status\G;
如果出现以错误:
解决办法:在/etc/my.cnf [mysqld]下面加上replicate-same-server-id参数
这里如果是Slave_IO_Running:No Slave_SQL_Running:YES还有可能是IPTABLES没有设置对,可以用下面命令:

在vmvare里面配了两台mysql,发现用mysql连不上mysql服务器,用telnet登录mysql的3306端口,发现居然是no route to host;

[zhoulei@localhost ~]$ telnet 192.168.2.48 3306
Trying 192.168.2.48…
telnet: connect to address 192.168.2.48: No route to host
telnet: Unable to connect to remote host: No route to host

觉得甚是差异,估计是虚拟机装了有问题,就把虚拟机中的防火墙给清了一下,发现可行。

[zhoulei@localhost ~]$ sudo iptables -F

因为如果安装telnet命令,telnet对方的3362会报 No route to host

这里如果是Slave_IO_Running:YES Slave_SQL_Running:NO可以用下面命令:
mysql> slave stop;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> slave start;
具体参考http://blog.csdn.net/orichisonic/article/details/47311391
到此mysql的双机互备已基本完成,在两台服务器的mysql数据库中任意添加数据,都可以同步到对端服务器上

安装配置heartbeat:
Heartbeat下载地址如下:
这里是用:

  1. yum install PyXML cluster-glue cluster-glue-libs resource-agents 

然后

  1. wget http://dl.fedoraproject.org/pub/epel/6/x86_64/heartbeat-3.0.4-2.el6.x86_64.rpm  
  2. wget http://dl.fedor aproject.org/pub/epel/6/x86_64/heartbeat-libs-3.0.4-2.el6.x86_64.rpm  
  3. rpm -ivh heartbeat-* 

因为原来的教程是centos 5.3下的heartbeat2以上的版本

配置 HA的各配置文件:
复制配置文件
[root@mysqlA opt ]# cp /usr/share/doc/packages/heartbeat/authkeys /etc/ha.d/
[root@mysqlA opt]# cp /usr/share/doc/packages/heartbeat/haresources /etc/ha.d/
[root@mysqlA opt]# cp /usr/share/doc/packages/heartbeat/ha.cf /etc/ha.d/
配置心跳的加密方式:authkeys
[root@mysqlA opt]#vi /etc/ha.d/authkeys
#如果使用双机对联线(双绞线),可以配置如下:
auth 1
1 crc
#存盘退出,然后
[root@mysqlA opt]#chmod 600 authkeys
 
配置心跳的监控:haresources
[root@mysqlA opt]#vi /etc/ha.d/haresources
#各主机这部分应完全相同。
mysqlA IPaddr::192.168.8.155 ipvsadm mysqld
[root@mysqlA opt]# mkdir -p /var/log/ha_log
[root@mysqlA opt]#chmod 777 /var/log/ha_log/
 
配置心跳的配置文件:ha.cf
[root@mysqlA opt]#vi /etc/ha.d/ha.cf
logfile /var/log/ha_log/ha-log.log   ## ha的日志文件记录位置。如没有该目录,则需要手动添加
bcast eth1     ##使用eht1做心跳监测
keepalive 2    ##设定心跳(监测)时间时间为2
warntime 10
deadtime 30
initdead 120
hopfudge 1
udpport 694    ##使用udp端口694 进行心跳监测
auto_failback on
node mysqlA  ##节点1,必须要与 un ame -n 指令得到的结果一致。
node mysqlB  ##节点2
ping 192.168.8.100   ##通过ping 网关来监测心跳是否正常。
 
设置ipvsadm的巡回监测
[root@mysqlA opt]#ipvsadm -A -t 192.168.8.155:3306 -s rr
[root@mysqlA opt]#ipvsadm -a -t 192.168.8.155:3306 -r 192.168.8.151:3306 -m
[root@mysqlA opt]#ipvsadm -a -t 192.168.8.155:3306 -r 192.168.8.152:3306 –m
 
执行后进行监测:
[root@mysqlA opt]#ipvsadm –list
 
 
HA 服务的启动、关闭以及测试
启动HA: service heartbeat start
关闭HA; service heartbeat stop
进行监控: service heartbeat status
防火墙设置
heartbeat 默认使用udp 694端口进行心跳监测。  如果系统有使用iptables 做防火墙,应记住把这个端口打开。
iptables -I INPUT -p udp –dport 694 -j ACCEPT
 
到此mysql双机互备已基本完成,不管哪一台服务器菪机都不会影响mysql的正常运行

修改配置文件:
停止mysql服务
[root@mysqlA opt]#service mysqld stop
建立用于更新日志的目录,并给于mysql的权限
[root@mysqlA opt]# mkdir /var/log/mysql
[root@mysqlA opt]# chown mysql.mysql /var/log/mysql/
更改Mysql配置文件/etc/my.cnf
[root@mysqlA opt]# vi /etc/my. cnf
server-id=1                 //服务器ID
log-bin=mysql-bin
log-bin=/var/log/mysql/updatelog   //启用更新日志
binlog-do-db=test       //表示需要备份的数据库是test这个数据库
replicate-same-server-id
master-host=10.0.0.2      //指定主服务器IP
master-user=backup       //指定在主服务器上可以同步的帐号
master-password=qawsed //指定帐号对应的密码
master-connect-retry=60  //断点重试间隔为60
replicate-do-db=test      //表示同步test数据库
binlog-ignore-db=mysql   //不同步mysql数据库
test进行备份
[root@mysqlA opt]# service mysqld start    //先启动mysql
[root@mysqlA opt]# /usr/local/mysql/bin/mysqldump -h localhost -u root -p1q2w3e test >test.sql
[root@mysqlA opt]#scp test.sql [email protected]:/opt     // (将test.sql复制到mysqlB/opt目录下)
至此mysqlA服务器上有关mysql的设置已完成,下一步开始配置mysqlB
设置mysqlB
设置数据库同步帐户:
mysql>GRANT REPLICATION SLAVE,REPLICATION CLIENT,RELOAD,SUPER ON *.* TO ‘backup’@’10.0.0.1’ IDENTIFIED BY ‘qawsed’;
(授与从10.0.0.1主机上登录用户backup数据复制权限,4.02版本以前用:GRANT FILE ON *.* TO [email protected] IDENTIFIED BY ‘qawsed’;)
mysql>flush privileges;
修改配置文件:
停止mysql服务
[root@mysqlA opt]#service mysqld stop
建立用于更新日志的目录,并给于mysql的权限
[root@mysqlA opt]# mkdir /var/log/mysql
[root@mysqlA opt]# chown mysql.mysql /var/log/mysql/
更改Mysql配置文件/etc/my.cnf
[root@mysqlA opt]# vi /etc/my.cnf
server-id=2                 //服务器ID
log-bin=mysql-bin
log-bin=/var/log/mysql/updatelog   //启用更新日志
binlog-do-db=test       //表示需要备份的数据库是test这个数据库
replicate-same-server-id
master-host=10.0.0.1      //指定主服务器IP
master-user=backup       //< span style="color:black">指定在主服务器上可以同步的帐号
master-password=qawsed //指定帐号对应的密码
master-connect-retry=60  //断点重试间隔为60
replicate-do-db=test      //表示同步test数据库
binlog-ignore-db=mysql   //不同步mysql数据库
 
还原从mysqlA备份过的test.sql
#service mysqld start
# mysql -u root -p1q2w3e test
重启两边的mysql服务
查询配置

Show Slave status:此处Slave_IO_Running ,Slave_SQL_Running 都应该是yes,表示从库的I/O,Slave_SQL线程都正确开启.
Mysql中可通过以下命令来查看主从状态
show master status 查看master状态
show slave status 查看slave状态
show processlist G 查看当前进程
stop slave 暂时停止slave进程
start slave 开始slave进程
primary服务器上 MySQL命令符下输入:
mysql>show master status;
mysql>show slave status\G;
如果出现以错误:
解决办法:在/etc/my.cnf [mysqld]下面加上replicate-same-server-id参数
这里如果是Slave_IO_Running:No Slave_SQL_R unning:YES还有可能是IPTABLES没有设置对,可以用下面命令:

在vmvare里面配了两台mysql,发现用mysql连不上mysql服务器,用telnet登录mysql的3306端口,发现居然是no route to host;

[zhoulei@localhost ~]$ telnet 192.168.2.48 3306
Trying 192.168.2.48…
telnet: connect to address 192.168.2.48: No route to host
telnet: Unable to connect to remote host: No route to host

觉得甚是差异,估计是虚拟机装了有问题,就把虚拟机中的防火墙给清了一下,发现可行。

[zhoulei@localhost ~]$ sudo iptables -F

因为如果安装telnet命令,telnet对方的3362会报 No route to host

这里如果是Slave_IO_Running:YES Slave_SQL_Running:NO可以用下面命令:
mysql> slave stop;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> slave start;
具体参考http://blog.csdn.net/orichisonic/article/details/47311391
到此mysql的双机互备已基本完成,在两台服务器的mysql数据库中任意添加数据,都可以同步到对端服务器上

安装配置heartbeat:
Heartbeat下载地址如下:
这里是用:

  1. yum install PyXML cluster-glue cluster-glue-libs resource-agents 

然后

  1. wget http://dl.fedoraproject.org/pub/epel/6/x86_64/heartbeat-3.0.4-2.el6.x86_64.rpm  
  2. wget http://dl.fedoraproject.org/pub/epel/6/x86_64/heartbeat -libs-3.0.4-2.el6.x86_64.rpm  
  3. rpm -ivh heartbeat-* 

因为原来的教程是centos 5.3下的heartbeat2以上的版本

配置 HA的各配置文件:
复制配置文件
[root@mysqlA opt]# cp /usr/share/doc/packages/heartbeat/authkeys /etc/ ha.d/
[root@mysqlA opt]# cp /usr/share/doc/packages/heartbeat/haresources /etc/ha.d/
[root@mysqlA opt]# cp /usr/share/doc/packages/heartbeat/ha.cf /etc/ha.d/
配置心跳的加密方式:authkeys
[root@mysqlA opt]#vi /etc/ha.d/authkeys
#如果使用双机对联线(双绞线),可以配置如下:
auth 1
1 crc
#存盘退出,然后
[root@mysqlA opt]#chmod 600 authkeys
 
配置心跳的监控:haresources
[root@mysqlA opt]#vi /etc/ha.d/haresources
#各主机这部分应完全相同。
mysqlA IPaddr::192.168.8.155 ipvsadm mysqld
[root@mysqlA opt]# mkdir -p /var/log/ha_log
[root@mysqlA opt]#chmod 777 /var/log/ha_log/
 
配置心跳的配置文件:ha.cf
[root@mysqlA opt]#vi /etc/ha.d/ha.cf
logfile /var/log/ha_log/ha-log.log   ## ha的日志文件记录位置。如没有该目录,则需要手动添加
bcast eth1     ##使用eht1做心跳监测
keepalive 2    ##设定心跳(监测)时间时间为2
warntime 10
deadtime 30
initdead 120
hopfudge 1
udpport 694    ##使用udp端口694 进行心跳监测
auto_failback on
node mysqlA  ##节点1,必须要与 uname -n 指令得到的结果一致。
node mysqlB  ##节点2
ping 192.168.8.100   ##通过ping 网关来监测心跳是否正常。
 
设置ipvsadm的巡回监测
[root@mysqlA opt]#ipvsadm -A -t 192.168.8.155:3306 -s rr
[root@mysqlA opt]#ipvsadm -a -t 192.168.8.155:3306 -r 192.168.8.151:3306 -m
[root@mysqlA opt]#ipvsadm -a -t 192.168.8.155:3306 -r 192.168.8.152:3306 –m
 
执行后进行监测:
[root@mysqlA opt]#ipvsadm –list
 
 
HA服务的启动、关闭以及测试< /span>
启动HA: service heartbeat start
关闭HA; service heartbeat stop
进行监控: service heartbeat status
防火墙设置
heartbeat 默认使用udp 694端口进行心跳监测。  如果系统有使用iptables 做防火墙,应记住把这个端口打开。
iptables -I INPUT -p udp –dport 694 -j ACCEPT
 
到此mysql双机互备已基本完成,不管哪一台服务器菪机都不会影响mysql的正常运行

修改配置文件:

停止mysql服务

[root@mysqlA opt]#service mysqld stop

建立用于更新日志的目录,并给于mysql的权限

[root@mysqlA opt]# mkdir /var/log/mysql

[root@mysqlA opt]# chown mysql.mysql /var/log/mysql/

更改Mysql配置文件/etc/my.cnf

[root@mysqlA opt]# vi /etc/my.cnf

server-id=1                 //服务器ID

log-bin=mysql-bin

log-bin=/var/log/mysql/updatelog   //启用更新日志

binlog-do-db=test       //表示需要备份的数据库是test这个数据库

replicate-same-server-id

master-host=10.0.0.2      //指定主服务器IP

master-user=backup       //指定在主服务器上可以同步的帐号

master-password=qawsed //指定帐号对应的密码

master-connect-r etry=60  //断点重试间隔为60

replicate-do-db=test      //表示同步test数据库

binlog-ignore-db=mysql   //不同步mysql数据库

test进行备份

[root@mysqlA opt]# service mysqld start    //先启动mysql

[root@mysqlA opt]# /usr/local/m ysql/bin/mysqldump -h localhost -u root -p1q2w3e test >test.sql

[root@mysqlA opt]#scp test.sql [email protected]:/opt     // (将test.sql复制到mysqlB/opt目录下)

至此mysqlA服务器上有关mysql的设置已完成,下一步开始配置mysqlB

设置mysqlB< /span>

设置数据库同步帐户:

mysql>GRANT REPLICATION SLAVE,REPLICATION CLIENT,RELOAD,SUPER ON *.* TO ‘backup’@’10.0.0.1’ IDENTIFIED BY ‘qawsed’;

(授与从10.0.0.1主机上登录用户backup数据复制权限,4.02版本以前用:GRANT FILE ON *.* TO [email protected] IDENTIFIED BY ‘qawsed’;)

mysql>flush privileges;

修改配置文件:

停止mysql服务

[root@mysqlA opt]#service mysqld stop

建立用于更新日志的目录,并给于mysql的权限

[root@mysqlA opt]# mkdir /var/log/mysql

[root@mysqlA opt]# chown mysql.mysql /var/log/mysql/

更改Mysql配置文件/etc/my.cnf

[root@mysqlA opt]# vi /etc/my.cnf

server-id=2                 //服务器ID

log-bin=mysql-bin

log-bin=/var/log/mysql/updatelog   //启用更新日志

binlog-do-db=test       //表示需要备份的数据库是test这个数据库

replicate-same-server-id

master-host=10.0.0.1      //指定主服务器IP

< span style="color:black">master-user=backup       //指定在主服务器上可以同步的帐号

master-password=qawsed //指定帐号对应的密码

master-connect-retry=60  //断点重试间隔为60

replicate-do-db=test      //表示同步test数据库

binlog-ignore-db=mysql   //不同步mysql数据库

 

还原从mysqlA备份过的test.sql

#service mysqld start

# mysql -u root -p1q2w3e test

重启两边的mysql服务

查询配置

Show Slave status:此处Slave_IO_Running ,Slave_SQL_Running 都应该是yes,表示从库的I/O,Slave_SQL线程都正确开启.

Mysql中可通过以下命令来查看主从状态

show master status 查看master状态

show slave status 查看slave状态

show processlist G 查看当前进程

stop slave 暂时停止slave进程

start slave 开始slave进程

primary服务器上 MySQL命令符下输入:

mysql>show master status;

mysql>show slave status\G;

如果出现以错误:

解决办法:在/etc/my.cnf [mysqld]下面加上replicate-same-server-id参数

这里如果是Slave_IO_Running:No Slave_SQL_Running:YES还有可能是IPTABLES没有设置对,可以用下面命令:

在vmvare里面配了两台mysql,发现用mysql连不上mysql服务器,用telnet登录mysql的3306端口,发现居然是no route to host;

[zhoulei@localhost ~]$ telnet 192.168.2.48 3306
Trying 192.168.2.48…
telnet: connect to address 192.168.2.48: No route to host
telnet: Unable to connect to remote host: No route to host

觉得甚是差异,估计是虚拟机装了有问题,就把虚拟机中的防火墙给清了一下,发现可行。

[zhoulei@localhost ~]$ sudo iptables -F

因为如果安装telnet命令,telnet对方的3362会报 No route to host

这里如果是Slave_IO_Running:YES Slave_SQL_Running:NO可以用下面命令:

mysql> slave stop;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> slave start;

具体参考http://blog.csdn.net/orichisonic/article/details/47311391

到此mysql的双机互备已基本完成,在两台服务器的mysql数据库中任意添加数据,都可以同步到对端服务器上


安装配置heartbeat:
Heartbeat下载地址如下:
这里是用:

  1. yum install PyXML cluster-glue cluster-glue-libs resource-agents 

然后

  1. wget http://dl.fedoraproject.org/pub/epel/6/x86_64/heartbeat-3.0.4-2.el6.x86_64.rpm  
  2. wget http://dl.fedoraproject.org/pub/epel/6/x86_64/heartbeat-libs-3.0.4-2.el6.x86_64.rpm  
  3. rpm -ivh heartbeat-* 

因为原来的教程是centos 5.3下的heartbeat2以上的版本

配置 HA的各配置文件:
复制配置文件
[root@mysqlA opt]# cp /usr/share/doc/packages/heartbeat/authkeys /etc/ha.d/
[root@mysqlA opt]# cp /usr/share/doc/packages/heartbeat/haresources /etc/ha.d/< /span>
[root@mysqlA opt]# cp /usr/share/doc/packages/heartbeat/ha.cf /etc/ha.d/
配置心跳的加密方式:authkeys
[root@mysqlA opt]#vi /etc/ha.d/authkeys
#如果使用双机对联线(双绞线),可以配置如下:
auth 1
1 crc
#存盘退出,然后
[root@mysqlA opt]#chmod 600 authkeys
 
配置心跳的监控:haresources
[root@mysqlA opt]#vi /etc/ha.d/haresources
#< /span>各主机这部分应完全相同。
mysqlA IPaddr::192.168.8.155 ipvsadm mysqld
[root@mysqlA opt]# mkdir -p /var/log/ha_log
[root@mysqlA opt]#chmod 777 /var/log/ha_log/
 
配置心跳的配置文件:ha.cf
[root@mysqlA opt]#vi /etc/ha.d/ha.cf
logfile /var/log/ha_log/ha-log.log   ## ha的日志文件记录位置。如没有该目录,则需要手动添加
bcast eth1     ##使用eht1做心跳监测
keepalive 2    ##设定心跳(监测)时间时间为2
warntime 10
deadtime 30
initdead 120
hopfudge 1
udpport 694    ##使用udp端口694 进行心跳监测
auto_failback on
node mysqlA  ##节点1,必须要与 uname -n 指令得到的结果一致。
node mysqlB  ##节点2
ping 192.168.8.100   ##通过ping 网关来监测心跳是否正常。
 
设置ipvsadm的巡回监测
[root@mysqlA opt]#ipvsadm -A -t 192.168.8.155:3306 -s rr
[root@mysqlA opt]#ipvsadm -a -t 192.168.8.155:3306 -r 192.168.8.151:3306 -m
[root@mysqlA opt]#ipvsadm -a -t 192.168.8.155:3306 -r 192.168.8.152:3306 –m
 
执行后进行监测:
[root@mysqlA opt]#ipvsadm –list
 
 
HA服务的启动、关闭以及测试
启动HA: service heartbeat start
关闭HA; service heartbeat stop
进行监控: service heartbeat status
防火墙设置
heartbeat 默认使用udp 694端口进行心跳监测。  如果系统有使用iptables 做防火墙,应记住把这个端口打开。
iptables -I INPUT -p udp –dport 694 -j ACCEPT
 
到此mysql双机互备已基本完成,不管哪一台服务器菪机都不会影响mysql的正常运行

安装配置heartbeat:

Heartbeat下载地址如下:

这里是用:< /span>

  1. yum install PyXML cluster-glue cluster-glue-libs resource-agents 

然后

  1. wget http://dl.fedoraproject.org/pub/epel/6/x86_64/heartbeat-3.0.4-2.el6.x86_64.rpm  
  2. wget http://dl.fedoraproject.org/pub/epel/6/x86_64/heartbeat-libs-3.0.4-2.el6.x86_64.rpm  
  3. rpm -ivh heartbeat-* 

因为原来的教程是centos 5.3下的heartbeat2以上的版本

配置 HA的各配置文件:

复制配置文件

[root@mysqlA opt]# cp /usr/share/doc/packages/heartbeat/authkeys /etc/ha.d/

[root@mysqlA opt]# cp /usr/share/doc/packages/heartbeat/haresources /etc/ha.d/

[root@mysqlA opt]# cp /usr/share/doc/ packages/heartbeat/ha.cf /etc/ha.d/

配置心跳的加密方式:authkeys

[root@mysqlA opt]#vi /etc/ha.d/authkeys

#如果使用双机对联线(双绞线),可以配置如下:

auth 1

1 crc

#存盘退出,然后

[root@mysqlA opt]#chmod 600 authkeys

 

配置心跳的监控:haresources

[root@mysqlA opt]#vi /etc/ha.d/haresources

#各主机这部分应完全相同。

mysqlA IPaddr::192.168.8.155 ipvsadm mysqld

[root@mysqlA opt]# mkdir -p /var/log/ha_log

[root@mysqlA opt]#chmod 777 /var/log/ha_log/

 

配置心跳的配置文件:ha.cf

[root@mysqlA opt]#vi /etc/ha.d/ha.cf

logfile /var/log/ha_log/ha-log.log   ## ha的日志文件记录位置。如没有该目录,则需要手动添加

bcast eth1     ##使用eht1做心跳监测

keepalive 2    ##设定心跳(监测)时间时间为2

warntime 10

deadtime 30

initdead 120

hopfudge 1

udpport 694    ##使用udp端口694 进行心跳监测

auto_failback on

node mysqlA  ##节点1,必须要与 uname -n 指令得到的结果一致。

node mysqlB  ##节点2

ping 192.168.8.100   ##通过ping 网关来监测心跳是否正常。

 

设置ipvsadm的巡回监测

[root@mysqlA opt]#ipvsadm -A -t 192.168.8.155:3306 -s rr

[root@mysqlA opt]#ipvsadm -a -t 192.168.8.155:3306 -r 192.168.8.151:3306 -m

[root@mysqlA opt]#ipvsadm -a -t 192.168.8.155:3306 -r 192.168.8.152:3306 –m

 

执行后进行监测:

[root@mysqlA opt]#ipvsadm –list

 

 

HA服务的启动、关闭以及测试

启动HA: service heartbeat start

关闭HA; service heartbeat stop

进行监控: service heartbeat status

防火墙设置

heartbeat 默认使用udp 694端口进行心跳监测。  如果系统有使用iptables 做防火墙,应记住把这个端口打开。

iptables -I INPUT -p udp –dport 694 -j ACCEPT

 

到此mysql双机互备已基本完成,不管哪一台服务器菪机都不会影响mysql的正常运行

Leave a Comment

Your email address will not be published.