日期:2014-05-16  浏览次数:20760 次

mysql双机热备

?

主服务器 serverA

从服务器 serverB

? ? 从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务。当一台服务器出现故障时,可以由另一台服务器承担服务任务,从而在不需要人工干预的情况下,自动保证系统能持续提供服务。  从狭义上讲,双机热备特指基于active/standby方式的服务器热备。服务器数据包括数据库数据同时往两台或多台服务器写,或者使用一个共享的存储设备。在同一时间内只有一台服务器运行。当其中运行着的一台服务器出现故障无法启动时,另一台备份服务器会通过软件诊测(一般是通过心跳诊断)将standby机器激活,保证应用在短时间内完全恢复正常使用。

要想实现双机的热备首先要了解主从数据库服务器的版本的需求。要实现热备mysql的版本都要高于3.2,还有一个基本的原则就是作为从数据库的数据库版本可以高于主服务器数据库的版本,但是不可以低于主服务器的数据库版本。

首先要备份数据库,如果可能会有数据写入,则要锁定数据库。

?

以下操作均是以root用户登录

?

一、设置账户

? 在主服务器和从服务器上分别创建账户,

主服务器上:

mysql>grant replication slave on *.* to '用户名'@'从服务器ip' identified by '密码';

?

从服务器上:

mysql>grant replication slave on *.* to '用户名'@'主服务器ip' identified by '密码';
?

测试是否能够连接:

主服务器:mysql -h从服务器ip -u用户名(从服务器上创建) -p密码

如果能进到mysql下说明连接成功,如果报错,cann't connect to 从服务器ip ,大致是这样,是因为,从服务器上的

防火墙限制了连接,要在防火墙里设置例外,添加主服务器ip以及所访问从服务器mysql的端口号。

从服务器同样。

?

?成功往下走

二、配置

编辑 serverA my.ini 文件,在 mysqld 下添加如下信息:

server-id=1(主服务器ID,不能重复)
binlog-do-db=labostest(要复制的库)
log-bin="C:/mysql/log"(log文件存放处,最后的参数表明日志文件名,replication是基于log来实现复制的)
#replication slave
master-host=192.168.1.108(设置从服务器ip)
master-port=3306
master-user=backup(在从服务器上创建的用户名)
master-password=123456(对应密码)
replicate-do-db=labostest(要复制的库)
replicate-do-db=labostest1(要复制的另一个数据库)
master-connect-retry=60(连接时间)
?

?

?

然后编辑 serverB my.ini 文件,

server-id=2(从服务器ID,不能为1)
binlog-do-db=labostest(要复制的库)
log-bin="C:/mysql/log"(log文件存放处,最后的参数表明日志文件名,replication是基于log来实现复制的)

#replication slave
master-host=192.168.1.103(设置从服务器ip)
master-port=3306
master-user=backup(在主服务器上创建的用户名)
master-password=123456(对应密码)
replicate-do-db=labostest(要复制的库)
replicate-do-db=labostest1(要复制的另一个数据库)
master-connect-retry=60(连接时间)

?
重新启动两台机器的 mysql 服务


三、查看服务器状态

?

重启服务之后,查看日志文件夹下是否生成了文件,如果是则已经加载成功,否则,并未加载以上的配置信息,

可能是修改的配置文件并不是启动mysql时要加载的配置文件,很可能在C:/windows下

修改之后,重启服务,直到日志文件夹下生成文件,否则show master status时,会一直是空集。

*************************主服务器****************************

?