双机热备概念原理及实现步骤
1.双机热备
对于双机热备这⼀概念,我搜索了很多资料,最后,还是按照⼤多数资料所讲分成⼴义与狭义两种意义来说。
从⼴义上讲,就是对于重要的服务,使⽤两台服务器,互相备份,共同执⾏同⼀服务。当⼀台服务器出现故障时,可以由另⼀台服务器承担服务任务,从⽽在不需要⼈⼯⼲预的情况下,⾃动保证系统能持续提供服务。
从狭义上讲,双机热备就是使⽤互为备份的两台服务器共同执⾏同⼀服务,其中⼀台主机为⼯作机(Primary Server),另⼀台主机为备份主机(Standby Server)。在系统正常情况下,⼯作机为应⽤系统提供服务,备份机监视⼯作机的运⾏情况(⼀般是通过⼼跳诊断,⼯作机同时也在检测备份机是否正常),当⼯作机出现异常,不能⽀持应⽤系统运营时,备份机主动接管⼯作机的⼯作,继续⽀持关键应⽤服务,保证系统不间断的运⾏。双机热备针对的是IT核⼼服务器、存储、⽹络路由交换的故障的⾼可⽤性解决⽅案。
2.为什么要进⾏双机热备?
双机热备服务针对的是服务器的故障。服务器的故障可能由各种原因引起,如设备故障、操作系统故障、软件系统故障等等。⼀般地讲,在技术⼈员在现场的情况下,恢复服务器正常可能需要10分钟、⼏⼩时甚⾄⼏天。从实际经验上看,除⾮是简单地重启服务器(可能隐患仍然存在),否则往往需要⼏个⼩时以上。⽽如果技术⼈员不在现场,则恢复服务的时间就更长了。
⽽对于⼀些重要系统⽽⾔,⽤户是很难忍受这样长时间的服务中断的。因此,就需要通过双机热备服务,来避免长时间的服务中断,保证系统长期、可靠的服务。
当然,决定是否使⽤双机热备,正确的⽅法是要分析⼀下系统的重要性以及对服务中断的容忍程度,以些决定是否使⽤双机热备。换句话说,就是你的⽤户能容忍多长时间恢复服务,如果服务不能恢复会造成多⼤的影响。
在考虑双机热备时,需要注意,⼀般意义上的双机热备都会有⼀个切换过程,这个切换过程可能是⼀分钟左右。在切换过程中,服务是有可能短时间中断的。但是,当切换完成后,服务将正常恢复。因此,双机热备不是⽆缝、不中断的,但它能够保证在出现系统故障时,能够很快恢复正常的服务,业务不致受到影响。⽽如果没有双机热备,则⼀旦出现服务器故障,可能会出现⼏个⼩时的服务中断,对业务的影响就可能会造成很严重的损失。
3.双机热备技术与备份的概念区别
热备份指的是:High Available(HA)即⾼可⽤,⽽备份指的是Backup,即数据备份的⼀种,这是两种不同的概念,应对的产品也是两种功能上完全不同的产品。热备份主要保障业务的连续性,实现的⽅法是故障点的转移。⽽备份,主要⽬的是为了防⽌数据丢失,⽽做的⼀份拷贝,所以备份强调的是数据恢复⽽不是应⽤的故障转移。
4.双机热备⽅案的主要两种组建⽅式
双机热备⽅案在进⾏讨论的时候⼀定要考虑到很多的因素,其中在各种环境下应⽤的时候需要格外的引起注意。当然还是有主要的两⽅式可以借鉴考虑的。
第⼀种,双机热备它的⼯作原理是使⽤两台服务器,⼀台作为主服务器(Active),运⾏应⽤系统来提供服务。另⼀台作为备机,安装完全⼀样的应⽤系统,但处于待机状态(Standby)。当Active服务器出现故障时,通过软件诊测将Standby机器激活,保证应⽤在短时间内完成恢复正常使⽤。
第⼆种,双机互备⽅式则是在双机热备的基础上,两个相对独⽴的应⽤在两台机器同时运⾏,但彼此均设为备机,当某⼀台服务器出现故障时,另⼀台服务器可以在短时间内将故障服务器的应⽤接管过来,从⽽保证了应⽤的持续性,这种⽅式实际上是双机热备⽅案的⼀种应⽤。
但⽬前使⽤最多的还是主从模式的双机热备⽅案。其⼤致表⽰可如下图所⽰:
⽬前基于存储共享的双机热备是双机热备⽅案的最标准⽅案。对于这种⽅式,采⽤两台服务器,使⽤共享的存储设备(磁盘阵列柜或存储区域⽹SAN)。两台服务器可以采⽤主从、互备等不同的⽅式。在⼯作过程中,两台服务器将以下⼀个虚拟的IP地址对外提供服务,依⼯作⽅式的不同,将服务请求发送给其中⼀台服务器承担。同时,服务器通过⼼跳线(⽬前往往采⽤建⽴私有⽹络的⽅式)侦测另⼀台服务器的⼯作状况。
下图即为双机热备⼯作⼤致状况图,如下图所⽰:
双机热备⽅案当⼀台服务器出现故障时,另⼀台服务器根据⼼跳侦测的情况做出判断,并进⾏切换,接管服务。对于⽤户⽽⾔,这⼀过程是全⾃动的,在很短时间内完成,从⽽不会对业务造成⼤的影响。由于使⽤共享的存储设备,因此两台服务器使⽤的实际上是⼀样的数据,由双机或集软件对其进⾏管理。
5.Mysql双机热备实现原理图
有了上⾯对双机热备知识的讲解,对其实现原理就有了⼀个深⼊了解,那么我们要做mysql数据库的双机热备就清楚明了多了。
Mysql双机热备系统的拓扑结构如下图所⽰:
两台服务器通过以太⽹连接⽹络,通过⽹络对外提供服务、相互通信。
两台服务器之间⽤com⼝直接互联,双机热备软件利⽤这个连接进⾏双机热备相关的通信、监控和控制等。
两台服务器通过HBA卡连接FC⽹络,访问共同的磁盘阵列,实现双机热备系统必要的磁盘。
6.Mysql双机热备实现的配置
为了数据的安全,客户有两台机器作为互相备份,当⼀台机器出现故障时,⾃动切换到另⼀台服务器。⼤部分的软件是通过LifeKeeper来实现的,但是Mysql的双机备份在LifeKeeper⾥没有实现,所以只能⾃⼰⼿动来实现Mysql的双机备份了。
其实,Mysql的双机备份有⼀个很简单的第三⽅软件可以实现,那就是SQLyog,他有⼀个功能叫sja(S
QLyog Job Agent)可以轻松实现,但是却有⼀个不⾜之处,就是Mysql表⾥必须有⼀个primary key,即主键值,如果没有,则此表不能⽤sja来实现。
第⼆种⽅法就是⽤Mysql⾃⾝的Replication机制来实现了。但是这个功能只有Mysql 3.23以上的版本才有。
这⾥先说明下,由于我还没有通过实际的应⽤例⼦来检测这种双机热备⽅式是否能过通过,所以我会在我通过实例实现后在续写我后⾯的关于Mysql双机热备实现的配置部分。现在这部分内容主要讲的还是双机热备份的实现原理和意义。
★mysql双机热备的实现
接续上⼀篇关于mysql双机热备实现原理分析,在本⽂经过深思熟虑和多次⽤不同的⽅式实测试后。最后在这篇⽂章中,⽤⼀个⼩例⼦来完成mysql双机热备的实现。
Mysql数据库没有增量备份的机制,当数据量太⼤的时候备份是⼀个很⼤的问题。还好mysql数据库提供了⼀种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份的数据库中。实现mysql数据库的热备份。
要想实现双机的热备,⾸先要了解主从数据库服务器的版本的需求。要实现热备mysql的版本都⾼于3.
2。还有⼀个基本的原则就是作为从数据库的数据版本可以⾼于主服务器数据库的版本,但是不可以低于主服务器的数据库版本。
当然要实现mysql双机热备,除了mysql本⾝⾃带的REPLICATION功能可以实现外,也可以⽤Heartbeat这个开源软件来实现。不过本⽂主要还是讲如何⽤mysql⾃带的REPLICATION来实现mysql双机热备的功能。
1. 准备服务器
由于Mysql不同版本之间的(⼆进制⽇志)binlog格式可能会不太⼀样,因此最好的搭配组合是主(Master)服务器的Mysql版本和从(Slave)服务器版本相同或者更低,主服务器的版本肯定不能⾼于从服务器版本。
本次我⽤于测试的两台服务器版本都是Mysql-5.5.17。
2. Mysql 建⽴主-从服务器双机热备配置步骤
2.1环境描述
A服务器(主服务器Master):59.151.15.36
B服务器(从服务器Slave):218.206.70.146
主从服务器的Mysql版本皆为5.5.17
mysql join on用法Linux环境下
将主服务器需要同步的数据库内容进⾏备份⼀份,上传到从服务器上,保证始初时两服务器中数据库内容⼀致。
不过这⾥说明下,由于我是利⽤Mysql在安装后就有的数据库test进⾏测试的,所以两台服务器⾥⾯是没有建⽴表的,只不分别在test⾥⾯建⽴了同样的⼀张空表tb_mobile;
Sql语句如下:
mysql> create table tb_mobile( mobile VARCHAR(20) comment'⼿机号码', time timestamp DEFAULT now() comment'时间' );
2.2 主服务器Master配置
2.2.1 创建同步⽤户
进⼊mysql操作界⾯,在主服务器上为从服务器建⽴⼀个连接帐户,该帐户必须授予REPLICATION SLAVE权限。因为从mysql版本3.2以后就可以通过REPLICATION对其进⾏双机热备的功能操作。
操作指令如下:
mysql> grant replication slave on *.* to 'replicate'@'218.206.70.146' identified by '123456';
mysql> flush privileges;
创建好同步连接帐户后,我们可以通过在从服务器(Slave)上⽤replicat帐户对主服务器(Master)数据库进⾏访问下,看下是否能连接成功。
在从服务器(Slave)上输⼊如下指令:
[root@YD146 ~]# mysql -h59.151.15.36 -ureplicate -p123456
spillover是什么意思
如果出现下⾯的结果,则表⽰能登录成功,说明可以对这两台服务器进⾏双机热备进⾏操作。
2.2.2 修改mysql配置⽂件
如果上⾯的准备⼯作做好,那边我们就可以进⾏对mysql配置⽂件进⾏修改了,⾸先到mysql配置所有在⽬录,⼀般在安装好mysql服务后,都会将配置⽂件复制⼀⼀份出来放到/ect⽬录下⾯,并且配置⽂件命名为:myf。即配置⽂件准确⽬录为/etc/myf
到配置⽂件myf打开后,在[mysqld]下修改即可:
[mysqld]
server-id = 1
log-bin=mysql-bin                //其中这两⾏是本来就有的,可以不⽤动,添加下⾯两⾏即可
binlog-do-db = test
binlog-ignore-db = mysql
2.2.3 重启mysql服务
修改完配置⽂件后,保存后,重启⼀下mysql服务,如果成功则没问题。
sql解析json数组2.2.4 查看主服务器状态
进⼊mysql服务后,可通过指令查看Master状态,输⼊如下指令:
注意看⾥⾯的参数,特别前⾯两个File和Position,在从服务器(Slave)配置主从关系会有⽤到的。
注:这⾥使⽤了锁表,⽬的是为了产⽣环境中不让进新的数据,好让从服务器定位同步位置,初次同步完成后,记得解锁。
2.3 从服务器Slave配置
2.3.1修改配置⽂件
因为这⾥⾯是以主-从⽅式实现mysql双机热备的,所以在从服务器就不⽤在建⽴同步帐户了,直接打开配置⽂件myf进⾏修改即可,道理还是同修改主服务器上的⼀样,只不过需要修改的参数不⼀样⽽已。如下:
[mysqld]
server-id = 2
log-bin=mysql-bin
replicate-do-db = test
replicate-ignore-db = mysql,information_schema,performance_schema
2.3.2重启mysql服务
修改完配置⽂件后,保存后,重启⼀下mysql服务,如果成功则没问题。
2.3.3⽤change mster 语句指定同步位置
这步是最关键的⼀步了,在进⼊mysql操作界⾯后,输⼊如下指令:
ibatis教程mysql>stop slave;          //先停步slave服务线程,这个是很重要的,如果不这样做会造成以下操作不成功。
mysql>change master to
>master_host='59.151.15.36',master_user='replicate',master_password='123456',
> master_log_file=' mysql-bin.000016 ',master_log_pos=107;
注:master_log_file, master_log_pos由主服务器(Master)查出的状态值中确定。也就是刚刚叫注意的。master_log_file对应File, master_log_pos对应Position。Mysql 5.x以上版本已经不⽀持在配置⽂件中指定主服务器相关选项。
遇到的问题,如果按上⾯步骤之后还出现如下情况:
则要重新设置slave。指令如下
mysql>stop slave;
mysql>reset slave;php各个版本下载
之后停⽌slave线程重新开始。成功后,则可以开启slave线程了。
mysql>start slave;
2.3.4查看从服务器(Slave)状态
⽤如下指令进⾏查看手机mysql安装配置教程
mysql> show slave status\G;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。