冷备份和热备份的区别
冷备份,是应用等处于非运行状态,对数据进行备份。优点就是不用担心联网状态下被勒索病毒等加密,可以保证数据的绝对安全。
热备份,是应用还在运行,对数据进行备份。优点是备份时不影响应用的运行,并且当应用出问题的时候,能够快速切换到灾备一体机,保障业务的连续。
冷备份和热备份并没有孰优孰劣,根据数据安全的要求选择,也可以组合使用。
双机热备有两种实现方式,一种是两台服务器通过一个共享的存储设备(一般是共享的磁盘阵列或存储区域网SAN),通过安装双机软件实现双机热备,称为共享方式。另一种方式是没有共享的存储设备,数据同时存放于各自服务器中,称为纯软件方式或软件同步数据方式。基于存储共享的实现方式是双机热备的最标准的方案,在主从模式工作中,两台服务器以一个虚拟的IP地址对外提供服务,服务请求发送给主服务器(active server)承担。同时,两台服务器通过心跳线(heartbeat line)侦测另一台服务器的工作状况。一旦主服务器出现故障,备服务器(standby server)根据心跳侦测的情况做出判断,在较短时间内完成切换,接管主机上的所有资源,成为新的主服务器。由于使用共享的存储设备,因此两台服务器使用的实际上是一样的数据,由双机或集群软件对其进行管理。
心跳线是主备服务器之间联系的纽带,所谓“心跳”,是一个错误检测机制,指主从系统之间相互按照一定的时间间隔发送通讯信号,周期性地检测各个节点的状态(包括系统的状态和应用的状态)。如果连续没有收到的心跳信号到了一定的数目,双机热备软件就认为相应的系统已经出现故障,并进行主备切换。传统上心跳故障检测使用串口通讯的方式,但目前已经普遍使用基于TCP/IP的方式。两台服务器之间,可以使用直连网线,也可以将两台服务器用于心跳诊断的网卡通过交换机连接。
双机热备份技术需要通过双机或集群软件来实现。双机软件采用结构化设计,一般来说包含以下几个模块:
(1)双机状态的管理模块,负责检测双机的工作状态,以及对故障状态进行判断。
(2)双机功能的执行模块,负责执行管理模块发出的双机调整切换命令等。
(3)双机系统的客户端配置管理工具,通过该模块实现对双机系统的远程配置、管理及维护等功能。
双机软件工作流程大致如下:软件启动时,首先读取双机系统的配置文件,该文件描述了双机系统中各节点的网络信息、硬件描述以及任务的定义等参数。软件的核心程序根据配置信息,进行双机系统的状态重组,建立双机的初始状态。在节点初始状态建立起来后,管理模块根据当前网络状态的信息对双机进行调整并分配网络资源,使双机中的主节点获得对外提供网络服务的资源,同时启动节点监控功能,对所启动任务的关键进程进行监控,保障对外提供服务的资源健康。当以上资源建立起来后,双机系统进入正常运行状态。
当系统中有节点故障时,双机管理模块根据双机当前的状态和该故障节点在双机中的角色做出双机系统是否切换的选择。当该节点为主服务器时,双机系统会自动将属于该节点的资源和任务移交到备服务器上,保证网络的正常运行。如果发生故障的节点为备服务器,双机软件提出报警后,将任务的移交进行封锁,直到备服务器故障修复,重新进入双机系统,管理模块检查到该故障修复后,对当前的任务进行解锁操作,系统重新进入正常运行状态。
热备份就是指不重启机器,直接在windows32位环境下对系统进行备份,因此,热备份仅用于用GHOST一类软件对启动分区或系统分区进行备份的情况,老版本的GHOST(80以前)都必须在DOS环境下才能对系统分区进行备份,而自GHOST90开始才支持热备份,无需重启机器,在windows环境下即可对系统分区进行备份,而数据备份一般指只是对普通文件(文档,视频,音乐文件等)进行备份,当然也就不需要重启,这两个并不是相对的概念,可以这么说,数据备份涉及的是备份的范围(全部文件OR部分文件),而热备份涉及的是备份的方式(需不需要重启)。 一双机热备这一概念包括了广义与狭义两种意义。 从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务。当一台服务器出现故障时,可以由另一台服务器承担服务任务,从而在不需要人工干预的情况下,自动保证系统能持续提供服务。 双机热备由备用的服务器解决了在主服务器故障时服务不中断的问题。但在实际应用中,可能会出现多台服务器的情况,即服务器集群。集群软件的异同) 双机热备一般情况下需要有共享的存储设备。但某些情况下也可以使用两台独立的服务器。(相关文章: 双机热备的实现模式 ) 实现双机热备,需要通过专业的集群软件或双机软件。(相关文章:双机与集群软件的选择) 从狭义上讲,双机热备特指基于active/standby方式的服务器热备。服务器数据包括数据库数据同时往两台或多台服务器写,或者使用一个共享的存储设备。在同一时间内只有一台服务器运行。当其中运行着的一台服务器出现故障无法启动时,另一台备份服务器会通过软件诊测(一般是通过心跳诊断)将standby机器激活,保证应用在短时间内完全恢复正常使用。(相关文章: 双机热备、双机互备与双机双工的区别 )二为什么要做双机热备份 决定是否使用双机热备,正确的方法是要分析一下系统的重要性以及对服务中断的容忍程度,以此决定是否使用双机热备。即,你的用户能容忍多长时间恢复服务,如果服务不能恢复会造成多大的影响。 在考虑双机热备时,需要注意,一般意义上的双机热备都会有一个切换过程,这个切换过程可能是一分钟左右。在切换过程中,服务是有可能短时间中断的。但是,当切换完成后,服务将正常恢复。因此,双机热备不是无缝、不中断的,但它能够保证在出现系统故障时,能够很快恢复正常的服务,业务不致受到影响。而如果没有双机热备,则一旦出现服务器故障,可能会出现几个小时的服务中断,对业务的影响就可能会很严重。 另有一点需要强调,即服务器的故障与交换机、存储设备的故障不同,其概念要高得多。原因在于服务器是比交换机、存储设备复杂得多的设备,同时也是既包括硬件、也包括操作系统、应用软件系统的复杂系统。不仅设备故障可能引起服务中断,而且软件方面的问题也可能导致服务器不能正常工作。 还应指出的是,一些其他的防护措施如磁盘阵列(RAID)、数据备份虽然是非常重要的,但却不能代替双机热备的作用。三 双机热备份与数据备份的关系 一些用户在规划双机热备或双机备份时,会有这样的问题:我已经有了RAID,以及磁带备份,还有需要做双机吗?或者,如果我做了双机备份,还有必要做磁带备份吗? 应该说RAID和数据备份都是很重要的。但是,RAID技术只能解决硬盘的问题,备份只能解决系统出现问题后的恢复。而一旦服务器本身出现问题,不论是设备的硬件问题还是软件系统的问题,都会造成服务的中断。因此,RAID及数据备份技术不能解决避免服务中断的问题。对于需要持续可靠地提供应用服务的系统,双机还是非常重要的。只要想一想,如果你的服务器坏了,你要用多少时间将其恢复到能正常工作,你的用户能容忍多长的恢复时间就能理解双机的重要性了。 从另外一个方面,RAID以及磁带备份也是非常需要的。对于RAID而言,可以以很低的成本大大提高系统的可靠性,而且其复杂程度远远低于双机。因为毕竟硬盘是系统中机械操作最频繁、易损率最高的部件,如果采用RAID,就可以使出现故障的系统很容易修复,也减少服务器停机进行切换的次数。 数据备份更是必不可少的措施。因为不论RAID还是双机,都是一种实时的备份。任何软件错误、病毒影响、误操作等等,都会同步地在多份数据中发生影响。因此,一定要进行数据的备份(不论采取什么介质,都建议用户至少要有一份脱机的备份),以便能在数据损坏、丢失时进行恢复。
1、mysql 数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题。还好 mysql 数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库中。实现 mysql 数据库的热备份。 2、要想实现双机的热备首先要了解主从数据库
1、mysql 数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题。还好 mysql 数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库中。实现 mysql 数据库的热备份。
2、要想实现双机的热备首先要了解主从数据库服务器的版本的需求。要实现热备 mysql 的版本都要高于32,还有一个基本的原则就是作为从数据库的数据库版本可以高于主服务器数据库的版本,但是不可以低于主服务器的数据库版本。
3、设置主数据库服务器:
a 首先查看主服务器的版本是否是支持热备的版本。然后查看 mycnf(类 unix)或者 myini(windows)中 mysqld 配置块的配置有没有 log-bin (记录数据库更改日志),因为 mysql 的复制机制是基于日志的复制机制,所以主服务器一定要支持更改日志才行。然后设置要写入日志的数据库或者不要写入日志的数据库。这样只有您感兴趣的数据库的更改才写入到数据库的日志中。
server-id=1 //数据库的 id 这个应该默认是1就不用改动
log-bin=log_name //日志文件的名称,,这里可以制定日志到别的目录 如果没有设置则默认主机名的一个日志名称
binlog-do-db=db_name //记录日志的数据库
binlog-ignore-db=db_name //不记录日志的数据库
以上的如果有多个数据库用","分割开,然后设置同步数据库的用户帐号
mysql> GRANT REPLICATION SLAVE ON
-> TO 'repl'@'%mydomaincom' IDENTIFIED BY 'slavepass';
402 以前的版本, 因为不支持 REPLICATION 要使用下面的语句来实现这个功能
mysql> GRANT FILE ON
-> TO 'repl'@'%mydomaincom' IDENTIFIED BY 'slavepass';
设置好主服务器的配置文件后重新启动数据库
b锁定现有的数据库并备份现在的数据
锁定数据库
mysql> FLUSH TABLES WITH READ LOCK;
备份数据库有两种办法一种是直接进入到 mysql 的 data 目录然后打包你需要备份数据库的文件夹,第二种是使用 mysqldump 的方式来备份数据库但是要加上"--master-data " 这个参数,建议使用第一种方法来备份数据库
c查看主服务器的状态
mysql> show master statusG;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin003 | 73 | test | manual,mysql |
+---------------+----------+--------------+------------------+
记录 File 和 Position 项目的值,以后要用的。
d然后把数据库的锁定打开
mysql> UNLOCK TABLES;
4、设置从服务器
a首先设置数据库的配置文件
server-id=n //设置数据库 id 默认主服务器是1可以随便设置但是如果有多台从服务器则不能重复。
master-host=db-mastermycompanycom //主服务器的IP地址或者域名
master-port=3306 //主数据库的端口号
master-user=pertinax //同步数据库的用户
master-password=freitag //同步数据库的密码
master-connect-retry=60 //如果从服务器发现主服务器断掉,重新连接的时间差
report-host=db-slavemycompanycom //报告错误的服务器
b把从主数据库服务器备份出来的数据库导入到从服务器中
c然后启动从数据库服务器,如果启动的时候没有加上 "--skip-slave-start" 这个参数则进入到 mysql 中
mysql> slave stop; //停止 slave 的服务
d设置主服务器的各种参数
mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name', //主服务器的IP地址
-> MASTER_USER='replication_user_name', //同步数据库的用户
-> MASTER_PASSWORD='replication_password', //同步数据库的密码
-> MASTER_LOG_FILE='recorded_log_file_name', //主服务器二进制日志的文件名,前面要求记住的参
-> MASTER_LOG_POS=recorded_log_position; //日志文件的开始位置(前面要求记住的参数)
e启动同步数据库的线程
mysql> slave start;
查看数据库的同步情况吧。如果能够成功同步那就恭喜了!
查看主从服务器的状态
mysql> SHOW P
注:更多精彩文章请关注三联编程教程栏目。
Linux上的heartbeat双机热备服务架设
一 安装前环境设定
两台主机硬件环境(不必完全一致):
CPU: Xeon 3G 2 (EM64T)
MEM: 2G
NIC: Intel 1G 2
eth0: 对外IP
eth1: 对内IP(HA专用)
两台主机的eth1使用双机对联线直接连接。
分区方式:
Filesystem 容量 挂载点
/dev/sda2 97G /
/dev/sda6 45G /Datas
/dev/sda1 99M /boot
none20G /dev/shm
/dev/sda3 97G /opt
另外每台主机应预留500M的raw空间或者更多来作为共用空间被HA使用。
操作系统:
RedHat Enterprise 4 Update2 (269-22 EL)
预安装软件:
@ X Window System
@ GNOME Desktop Environment
@ KDE Desktop Environment
@ Editors
@ Engineering and Scientific
@ Graphical Internet
@ Text-based Internet
@ Authoring and Publishing
@ Server Configuration Tools
@ Development Tools
@ Kernel Development
@ X Software Development
@ GNOME Software Development
@ KDE Software Development
@ Administration Tools
@ System Tools
二安装前网络环境设定:
node1: 主机名:servers201 ( HA01 )
eth0: 19216810201 //对外IP地址
eth1: 1000201 //HA心跳使用地址
node2: 主机名:servers202 ( HA02 )
eth0: 19216810202 //对外IP地址
eth1: 1000202 //HA心跳使用地址
特别注意要检查以下几个文件:
/etc/hosts
/etc/hostconf
/etc/resolvconf
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth1
/etc/nsswitchconf
#vi /etc/hosts
node1的hosts内容如下:
127001 localhostlocaldomain localhost
19216810201 servers201 HA01
1000201 HA01
1000202 HA02
19216810202 server202
node2的hosts内容如下:
127001 localhostlocaldomain localhost
19216810202 servers202 HA02
1000202 HA02
1000201 HA01
19216810201 server201
#cat /etc/hostconf
order hosts,bind
#cat /etc/resolvconf
nameserver 61139269 //DNS地址
#cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=servers201 //主机名
GATEWAY="192168101" //网关
GATEWAY="eth0" //网关使用网卡
ONBOOT=YES //启动时加载
FORWARD_IPV4="yes" //只允许IPV4
#cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=19216810201
NETMASK=2552552550
GATEWAY=192168101
TYPE=Ethernet
IPV6INIT=no
#cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
IPADDR=1000201
NETMASK=2552552550
TYPE=Ethernet
[node1] 与 [node2] 在上面的配置中,除了
/etc/hosts
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth1
要各自修改外,其他一致。
配置完成后,试试在各自主机上ping对方的主机名,应该可以ping通:
/root#ping HA02
PING HA02 (1000202) 56(84) bytes of data
64 bytes from HA02 (1000202): icmp_seq=0 ttl=64 time=0198 ms
64 bytes from HA02 (1000202): icmp_seq=1 ttl=64 time=0266 ms
64 bytes from HA02 (1000202): icmp_seq=2 ttl=64 time=0148 ms
--- HA02 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0148/0204/0266/0048 ms, pipe 2
三安装HA 与HA依赖包
rpm -Uvh libnet-1121-1rhelum1i386rpm //可以不装
rpm -Uvh heartbeat-pils-204-1el4i386rpm
rpm -Uvh heartbeat-stonith-204-1el4i386rpm
rpm -Uvh heartbeat-204-1el4i386rpm
rpm -Uvh ipvsadm-124-5i386rpm
四 配置 HA的各配置文件
配置心跳的加密方式:authkeys
#vi /etc/had/authkeys
如果使用双机对联线(双绞线),可以配置如下:
#vi /etc/hcd/authkeys
auth 1
1 crc
存盘退出,然后
#chmod 600 authkeys
配置心跳的监控:haresources
#vi /etc/had/haresources
各主机这部分应完全相同。
server201 IPaddr::19216810200 ipvsadm httpd
指定 server201调用ipvsadm启动http服务,系统附加一个虚拟IP 19216810200 给eth0:0
这里如果server201宕机后,server202可以自动启动http服务,并新分配IP 19216810200给server202的eth0:0
配置心跳的配置文件:hacf
#vi /etc/had/hacf
logfile /var/log/ha_log/ha-loglog ## ha的日志文件记录位置。如没有该目录,则需要手动添加
bcast eth1 ##使用eth1做心跳监测
keepalive 2 ##设定心跳(监测)时间时间为2秒
warntime 10
deadtime 30
initdead 120
hopfudge 1
udpport 694 ##使用udp端口694 进行心跳监测
auto_failback on
node server201 ##节点1,必须要与 uname -n 指令得到的结果一致。
node server202 ##节点2
ping 192168101 ##通过ping 网关来监测心跳是否正常。
respawn hacluster /usr/lib64/heartbeat/ipfail
apiauth ipfail gid=root uid=root
debugfile /Datas/logs/ha_log/ha-debuglog
设置ipvsadm的巡回监测
ipvsadm -A -t 19216810200:80 -s rr
ipvsadm -a -t 19216810200:80 -r 19216810201:80 -m
ipvsadm -a -t 19216810200:80 -r 19216810202:80 -m
执行后进行监测:
#ipvsadm --list
如果返回结果与下相同,则设置正确。
IP Virtual Server version 120 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 19216810200:http rr
-> server202:http Local 1 0 0
-> server201:http Masq 1 0 0
五 HA服务的启动、关闭以及测试
启动HA: service heartbeat start
关闭HA; service heartbeat stop
系统在启动时已经自动把heartbeat 加载了。
使用http服务测试 heartbeat
首先启动httpd服务
#service httpd start
编辑各自主机的测试用html文件,放到/var/www/html/目录下。
启动node1的heartbeat,并执行这个指令进行监控: heartbeat status
六 防火墙设置
heartbeat 默认使用udp 694端口进行心跳监测。如果系统有使用iptables 做防火墙,应记住把这个端口打开。
#vi /etc/sysconfig/iptables
加入以下内容
-A RH-Firewall-1-INPUT -p udp -m udp --dport 694 -d 1000201 -j ACCEPT
意思是udp 694端口对 对方的心跳网卡地址 1000201 开放。
#service iptables restart
重新加载iptables。
0条评论