Centos 5.2+MYSQL+heartbeat双机互备
- 格式:doc
- 大小:329.50 KB
- 文档页数:11
linux双机热备:在linux系统用heartbeat实现双机热备疯狂代码 / ĵ:http://Linux/Article27835.html; ; ; :安装两个(rh4.5-32位)系统并关闭,se设置为disable每台电脑需要配置两块网卡两台电脑分别为node1和node2; ; ; node1ip地址分别为:; ; ; eth0:192.168.0.65; ; ; eth1:10.0.0.3 (心跳地址); ; ; node2ip地址分别为:; ; ; eth0:192.168.0.66; ; ; eth1:10.0.0.4 (心跳地址); ; ; 192.168.0.30(虚拟ip地址); ; ; 注意:保证两台电脑每块网卡能够ping通; ; ; 2:保证两台电脑以下文件必须相同; ; ; /etc/hosts; ; ; /etc/host.conf; ; ; /etc/resolv.conf; ; ; #vi /etc/hosts; ; ; node1hosts内容如下:; ; ; ip地址 域名 机器名; ; ; 192.168.0.65 node1; ; ; 10.0.0.3 node1; ; ; 192.168.0.66 node2; ; ; 10.0.0.4 node2; ; ; (保证机器名和参数uname -n输出致); ; ; #vi /etc/host.conf; ; ; order hosts,bind; ; ; #vi /etc/resolv.conf; ; ; nameserver 202.96.209.133(DNS地址如果为空可以根据当地dns输入); ; ; node2hosts内容如下:; ; ; ip地址 域名 机器名; ; ; 192.168.0.65 node1; ; ; 10.0.0.3 node1; ; ; 192.168.0.66 node2; ; ; 10.0.0.4 node2; ; ; (保证机器名和参数uname -n输出致); ; ; #vi /etc/host.conf; ; ; order hosts,bind; ; ; #vi /etc/resolv.conf; ; ; nameserver 202.96.209.133(DNS地址如果为空可以根据当地dns输入); ; ; 3:在两台电脑上分别安装heartbeat软件Software包; ; ; 按如下顺序; ; ; 1:heartbeat-gui-2.1.2-2.el4.centos.i386.rpm; ; ; 2:heartbeat-pils-2.1.2-2.el4.centos.i386.rpm; ; ; 3:heartbeat-stonith-2.1.2-2.el4.centos.i386.rpm; ; ; 4:heartbeat-2.1.2-2.el4.centos.i386.rpm; ; ; 4:配置文件; ; ; 进入目录/usr/share/doc/heartbeat-2.1.2/目录复制authkeys、ha.cf 和 haresources到/etc/ha.d/目录进行配置; ; ; (这 3个文件在两台电脑里必须致)配置如下:; ; ; 配置心跳加密方式:authkeys; ; ; #vi /etc/ha.d/authkeys; ; ; 使用双机对联线(网线为交叉线)配置如下:; ; ; #vi /etc/hc.d/authkeys; ; ; auth 1; ; ; 1 crc; ; ; 存盘退出然后; ; ; #chmod 600 authkeys; ; ; 修改文件权限(必须); ; ; 配置心跳配置文件:ha.cf; ; ; #vi /etc/ha.d/ha.cf; ; ; logfile /var/log/ha-log (ha日志文件记录位置如没有该目录则需要手动添加); ; ; bcast eth1; ; ; keepalive 2 (设定心跳(监测)时间为2秒); ; ; warntime 10 (超出该时间间隔未收到对方节点心跳则发出警告并记录到日志中); ; ; deadtime 30 (超出该时间间隔未收到对方节点心跳则认为对方已经死亡); ; ; initdead 120; ; ; (在某些系统上系统启动或重启的后需要经过段时间网络才能正常工作该选项用于解决这种情况产生时间间隔取值至少为deadtime两倍); ; ; udpport 694 (使用udp端口694 进行心跳监测); ; ; auto_failback off; ; ; nice_failback on; ; ; (nice_failback 这选项在此版本heartbeat里没有如果没有可以根据需要手工添加heartbeat两台主机分别为主节点和从节点主节点在正常情况下占用资源并运行所有服务遇到故障时把资源交给从节点并由从节点运行服务个参数auto_failback off再加上1:当auto_failback选项为on时旦主节点恢复运行则自动恢复资源2:当auto_failback选项为off旦主节点恢复运行则不会自动恢复资源此设置为第 2种情况; ; ; node node1 (节点1必须要和 uname -n 指令得到结果致.); ; ; node node2 (节点2); ; ; 配置心跳资源:haresources; ; ; #vi /etc/ha.d/haresources; ; ; node1 192.168.0.30 httpd mysql(先启动httpd再启动mysql关闭时先关闭mysql再关闭httpd)指定node1启动httpd和mysql服务系统附加个虚拟IP 192.168.0.30给eth0:0这里如果node1宕机后node2可以自动启动httpd和mysql服务并新分配IP 192.168.0.30给node2eth0:0.web服务监听地址要设置为虚拟ip地址; ; ; 5:设置heartbeat自动启动(启动系统时启动); ; ; cd /etc/rc.d/rc0.d; ; ; ln -s /etc/init.d/heartbeat K05heartbeat; ; ; cd /etc/rc.d/rc3.d; ; ; ln -s /etc/init.d/heartbeat S75heartbeat; ; ; cd /etc/rc.d/rc5.d; ; ; ln -s /etc/init.d/heartbeat S75heartbeat; ; ; cd /etc/rc.d/rc6.d; ; ; ln -s /etc/init.d/heartbeat K05heartbeat ; ; ; (字母S和K为大写)2009-2-12 4:20:21疯狂代码 /。
动手搭建centos下用heartbeat实现
双机热备
#和从服务器名称不能相同
ip:10.0.0.211
心跳地址:100.0.0.211 #提供给心跳服务使用的,用来检控服务器运行状态
备份服务器:
系统:centos
主机名称: #和主服务器名称不能相同
ip:10.0.0.212
心跳地址:100.0.0.212 #提供给心跳服务使用的,用来检控服务器运行状态
注:每太服务器需要有两块网卡;心跳地址是心跳服务用来检控服务器运行状态使用的,心跳地址随意写,只要符合规范就行,网关、子网掩码不用写,用在两块网卡之间的通信只有ip就够了,并且和其它ip不会冲突。
服务器配置完毕后需要设置以下文件:
/etc/hosts
/etc/resolv.conf
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0 # 主网卡
/etc/sysconfig/network-scripts/ifcfg-eth1 # 心跳检测的网卡
sev1与sev2主机下/etc/hosts内容的配置相同:
1 # Do not remove the following line, or various programs
文章来源于:/article-22845-1.html。
双机热备安装部署方案(heartbeat 3.x +pacemaker)by——商胜前言双击热备用一句通俗易懂的话来说就是避免服务器因临时故障而导致服务中断的一种备份技术,这也就是所谓的高可用性。
本文主要是用heartbeat来针对resin下的服务做服务热备。
例如,在resin下现有三个服务server1 、server2 、server3 以及访问这三个服务的虚拟ip——vip:10.3.255.36 。
现在的需求是要保证这三个服务的高可用性,即当三个服务中的任何一个宕掉了以后,heartbeat首先要做的是判断这些服务是否有故障的,如果存在有故障的服务,heartbeat首先会在本机重启该故障服务,一旦该服务无法启动,则停止本机的server1、server2 、server3,切换虚拟ip到从机并在从机上启动这三个服务。
一.测试环境搭建测试环境说明:操作系统:Red Hat Enterprise Linux Server release 5.4 (Tikanga) 64位操作系统Heartbeat版本:heartbeat-3.0.3-2 附录中有heartbeat简介以及版本说明操作系统配置主服务器备用服务器主机名HB_Node01 HB_Node02Ip Eth0: 10.3.43.99Eth1: 192.168.254.12 Eth0: 10.3.43.99Eth1: 192.168.254.12vip 10.3.43.101(由heartbeat中生成)添加用户、用户组添加用户:hacluster useradd -M hacluster添加用户组:haclient groupadd haclient并且hacluster 属于用户组haclient usermod -G haclient hacluster主机名配置方式:设置主机名[root@localhost ~]# hostname HB_Node01[root@localhost ~]# vi /etc/hosts[root@localhost ~]# vi /etc/sysconfig/networkIp配置方式配置ip[root@HB_Node01 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 [root@HB_Node01 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth1(这里给出的是命令行配置方式,也可以进入图形界面进行配置)注意的问题:配置外网ip时配置默认网关,但在配置heartbeat1之间通信的ip时网关不要配置,因为这里再配置网关则会覆盖之前配置的默认网关导致通信异常。
基于Linux系统和MySQL数据库的双机热备环境安装实施指南版权所有侵权必究目录1 概述 (3)关于本章 (3)1.1 双机概述 (3)1.2 Heartbeat 介绍 (4)2 环境及布局 (5)关于本章 (5)2.1 运行环境 (5)2.2布线连接及IP地址分配 (6)2.2.1 直连网线布线连接 (6)2.2.2 串口布线连接 (7)3 软件安装 (9)关于本章 (9)3.1磁盘阵列划分 (10)操作步骤 (10)3.2安装网络对时服务 (10)3.2.1 安装NTP服务 (10)操作步骤 (11)3.2.2 配置NTP服务端 (11)操作步骤 (11)3.2.3 配置NTP客户端 (13)操作步骤 (13)3.3安装和配置Heartbeat 软件 (14)3.3.1 安装Heartbeat 。
(14)操作步骤 (14)3.3.2 配置Heartbeat 软件 (14)操作步骤 (14)3.4安装MySQL数据库 (17)3.5配置MySQL数据库 (17)操作步骤 (17)1 概述关于本章本章描述内容如下表所示。
1.1 双机概述双机热备这一概念包括了广义与狭义两种意义。
从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务。
当一台服务器出现故障时,可以由另一台服务器承担服务任务,从而在不需要人工干预的情况下,自动保证系统能持续提供服务。
双机热备由备用的服务器解决了在主服务器故障时服务不中断的问题,但在实际应用中,可能会出现多台服务器的情况,即服务器集群。
从狭义上讲,双机热备特指基于active/standby方式的服务器热备。
服务器数据包括数据库数据同时写入两台或多台服务器,或者使用一个共享的存储设备。
系统在同一时间内只有一台服务器提供服务为Active状态,而当处于Active状态的服务器出现故障无法提供服务时,另一台备份服务器会通过软件诊测(一般是通过心跳诊断)将standby机器激活,保证应用在短时间内完全恢复正常使用。
/thread-3689681-1-1.html我们下面来实现一个架构,heartbeat+drbd+nfs实现mysql和网站数据的同步,keepalived 实现nginx的高可用,而用nginx和dns轮询实现负载均衡。
架构说明目录规划/usr/local/src/lnmp:用来存放源码工具等等/data:用来存放所有数据和NFS以及DRBD的挂载/data/shell:用来存放所有管理脚本/data/mysql:用来挂载DRBD的mysql资源,以供mysql存放数据库/data/wwwnfs:用来挂载DRBD生成的www资源,以供两个节点挂载到各个节点的/data/www 目录,以供论坛等程序数据使用/data/www:用来挂载NFS资源,用来存放论坛(网站)等程序数据拓扑工作原理内网:1,DRBD网络存储创建出两个资源,一个mysql给mysql数据库同步用,一个www给web(论坛)数据NFS共享挂载用,虚拟出两个虚拟IP,一个是 192.168.1.100,用来连接数据库,一个是192.168.1.200,用来给节点挂载NFS注意:NFS底下挂载了三次:DRBD挂载一次,文件系统挂载一次,客户端挂载一次2,Heartbeat来实现DRBD的HA,同时虚拟出两个内网IP,并管理NFS,MySQL的启动和关闭外网:1,两个节点都用Nginx做均衡器,通过内网调度负载两个节点,实现内部均衡2,DNS配置双IP对应一个域名的方式来实现DNS轮询,实现外网均衡3,Keepalived使用双主(master)配置虚拟出两个虚拟IP:节点一 12.12.12.100和节点二12.12.12.200,同时共外网访问,两个节点互为主从关系,当某个节点挂掉的时候,另外一个节点将同时是两个资源的master,同时拥有两个虚拟IP,实现资源转移。
我们知道DNS的缺点就是生效慢,分配资源不合理,理论上有可能把所有的请求都发送给同一节点,导致均衡不合理导致所有资源不可用,这里我们由于有了NGINX内部负载,就不怕DNS轮询不均衡了,因为NGINX内部有严谨的调度方式,不管那台请求有多少,在内部都能实现理想的调度,这样就能把 DNS负载均衡和NGINX完美结合,是硬件资源得到合理的利用,然后利用keepalive保证了每个节点的可靠性,几乎完美!拓扑图如下:架构实现LNMP架构配置配置LNMp架构需要注意两点:注意一:这里MYSQL都不要初始化,不要启动!后面有专门的配置的注意二:nginx所有端口都改成 8080,因为一会还要安装nginx来做均衡器并对外提供服务,所以不要用默认的80注意三、nginx和php-fpm运行的用户都是www。
有两台服务器如何做双机热备双机热备是一种常见的服务器配置方式,可以提高系统的可用性和容错性。
通过配置两台服务器,当其中一台服务器出现故障时,另一台服务器可以立即接管工作,确保系统的连续性和稳定性。
本文将介绍如何进行双机热备配置,以及配置过程中需要注意的问题。
一、双机热备的基本原理双机热备的基本原理是将两台服务器配置为主备关系。
其中一台服务器作为主服务器(Master),负责处理用户请求和业务逻辑;另一台服务器作为备服务器(Backup),处于待命状态,等待接管主服务器的工作。
主备服务器之间通过网络进行通信,保持数据的同步和一致性。
二、双机热备的配置步骤1. 确定主备服务器的角色和IP地址:首先需要确定哪台服务器将担任主服务器,以及每台服务器的IP地址。
主服务器通常配置为具备更高性能的服务器,而备服务器则配置为相对较低性能的服务器。
2. 安装并配置操作系统:在两台服务器上安装并配置相同版本的操作系统,确保操作系统的版本和配置相同,以保证数据的一致性。
常见的操作系统包括Windows Server和Linux等。
3. 安装并配置数据库和应用程序:根据实际需求,在主备服务器上安装并配置相同版本的数据库和应用程序。
数据库和应用程序的版本、配置和数据结构需要保持一致,以确保数据的同步和一致性。
4. 配置网络和通信:配置主备服务器之间的网络和通信,确保主备服务器可以相互通信并进行数据同步。
可以使用局域网(LAN)或广域网(WAN)进行通信,常见的网络通信协议包括TCP/IP等。
5. 配置双机热备软件:选择并安装适用于双机热备的软件,常见的软件包括Heartbeat、Keepalived和Pacemaker等。
这些软件可以监控主服务器的运行状态,一旦主服务器发生故障,备服务器可以立即接管。
6. 测试和验证:在配置完成后,进行测试和验证,确保主备服务器能够正常工作。
可以模拟主服务器宕机的情况,观察备服务器是否能够顺利接管,并能够继续处理用户请求和业务逻辑。
MySQL数据库服务器双机热备的实现方法两则2011-08-31 12:56:43分类:Mysql/postgreSQL在实际的应用中,数据库是非常重要和关键的一个环节。
在保障数据库安全的同时,提高应用性和缩短出故障后的恢复时间,也同等重要。
特别是在一些持续性和实时性要求高的应用中,故障一小时,可能会让你损失几千到几万甚至更高。
本方案致力于数据库实时备份,并且在故障发生后以最短的时间恢复和修复。
在mysql数据库的备份应用中,主从复制结构是应用的比较广泛,数据同步和实时性都很高,基本上能满足大部分的需求。
本方案基于主从复制结构的基础上,当主库出现故障时,从库能自动接管主库的功能,向外提供服务,且将自身设置为主库,将这个故障时间和影响缩短至最小,5秒内可切换完成。
待原主库修复后,会自动进入从库的备份角色,如此循环。
在本方案的实现中,有两种方法且均基于mysql的主从结构中:1、高可用(High Availability)HA集群,用heartbeat实现及增加了故障后的恢复功能。
2 、同样是高可用,只是是自己编写脚本程序来监控,切换,恢复。
在方法1中,使用稳定的heartbeat开源软件实现,但此方法,需要多一个IP对外访问,同时在监控上,是监控机器的状态而不是mysql,有些情况下,机器是好的但mysql服务挂了,这种情况下就不准确了。
不过可以修改监控方式或增加对mysql服务的监控。
方法2中,可以不用增加一个对外IP,同时在监控上,可以直接监控mysql 的服务,至于稳定性,有待测试。
此方法中还有一个问题,就是提供给客户端的数据库连接IP,因为切换后,IP也就变了。
如果说更改程序,那不现实。
所以,这里可以用域名,不过仍然需要修改域名的IP指向或是修改客户机的 hosts 文件。
本文使用的是修改DNS的方法,因为DNS是自己配置的,可以灵活操作。
本文分两部分进行说明第一部分用 heartbeat 实现的高可用1环境条件两个虚拟机(IP:192.168.1.91/92/93),CentOS5.4,mysql-5.1.37,heartbeat-2.1.3-32 安装前的准备Heartbeat 的工作原理:heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未受到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务。
Heartbeat双机互备可行方案一、文档说明本文档,设计了heartbeat提供对外的VIP(虚拟IP),当主服务器down机后,从服务器通过心跳检测到主服务器down机后,会启动本机的heartbeat服务,VIP将会自己转移到从服务器,当主服务器处理好后,通过从心跳监测,自动把VIP移回到主服务器。
二、网络拓朴Matesr Slave注释:公网接入:主从服务器通过公网通信心跳连线:主从服务器通过专用网络通信,专用网络可用以太网的交叉线连接,也可用串口连接监测。
VIP:集群通过VIP与公网通信,主从通过公网网卡上邦定虚拟地址(VIP)实现。
三、Heartbeat工作原理Heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未受到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务。
(一)用户与主服务器正常通信(二)主从服务器通过心跳专线监测彼此是否正常(三)如果主服务器的公网失效或服务器DOWN机,从服务器通过心跳监测后,启动设定服务并接管主服务器对外的网络资源(VIP)(四)用户与从服务器通信(从机在几秒或几十秒内接管主服务器)(五)主服务器恢复后(重起或修复等)可以重新接管网络资源。
四、安装配置及调试Heartbeat集群(一)安装前环境设定两台主机硬件环境(不必完全一致)(二)安装前网络环境设定node1: 主机名:Master ( HAM )eth0: 10.0.0.5 //对外通信IP地址eth1: 172.16.0.5 //心跳使用地址node2: 主机名:Slave ( HAS )eth0: 10.0.0.6 //对外通信IP地址eth1: 172.16.0.6 //心跳使用地址VIP:10.0.0.7 //集群对外提供服务的地址,浮动IP注意要检查以下几个文件:/etc/hosts/etc/host.conf/etc/sysconfig/network/etc/sysconfig/network-scripts/ifcfg-eth0/etc/sysconfig/network-scripts/ifcfg-eth1#vi /etc/hostsnode1与node2的hosts内容相同如下(hosts文件的修改必需在heartbeat安装前):127.0.0.1 localhost.localdomain localhost10.0.0.5 Master172.16.0.5 HAM172.16.0.6 HAS10.0.0.6 Slave#cat /etc/host.conforder hosts,bind#cat /etc/sysconfig/networkNETWORKING=yesHOSTNAME=Master //主机名GATEWAY="10.0.0.1" //网关GATEWAY="eth0" //网关使用网卡ONBOOT=YES //启动时加载FORWARD_IPV4="yes" //只允许IPV4#cat /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0ONBOOT=yesBOOTPROTO=staticIPADDR=10.0.0.5NETMASK=255.0.0.0GATEWAY=10.0.0.1TYPE=Ethernet#cat /etc/sysconfig/network-scripts/ifcfg-eth1DEVICE=eth1ONBOOT=yesIPADDR=172.16.0.5NETMASK=255.255.0.0TYPE=Ethernet[node1] 与[node2] 在上面的配置中,除了/etc/sysconfig/network/etc/sysconfig/network-scripts/ifcfg-eth0/etc/sysconfig/network-scripts/ifcfg-eth1要各自修改外,其他一致。
MySQL双机互备的实现要配置MySQL双机互备,首先要有两个用来做备份的MySQL服务器,要实现同步更新数据,首先要知道对方的IP。
在安装有MySQL的两个服务器上进入命令行模式获得主从机两台服务器的IP地址,假设主机IP为192.168.1 .100,从机IP为192.168.1.200。
获得了两台MySQL服务器的IP地址还需要验证这两台服务器之间是否能够互相ping通,即要了解网络连接状态。
在命令行中执行ping命令,如果可以互相ping通则可以继续下面的操作,如果出现一个ping不通的情况,需检查网络设置和防火墙设置,最佳是关闭防火墙,直到网络畅通。
创建需要同步的数据库,在主机和从机中分别使用帐号root登录MySQL 服务器,如:Mysql> create database tablename在主机和从机上分别执行下面的命令创建用于同步操作数据库的帐号,并赋予其操作同步数据库的权限。
执行命令如下:Mysql> grant all privileges on *.* to account@’%’ identified by‘password’;语句解释:grant是赋予权限的关键字。
all privileges是指对数据库操作的所有权限,这里主要功能是同步数据库即互相复制的权限,可将其修改为replication。
*.*指的是MySQL服务器中所有的数据库下所有数据表,在此如果只需要同步数据库tablename下的所有表,可将其修改为tablename.*。
account是用于同步的帐号,其密码为password。
%表示的是所有IP地址,为了安全也可以指定某个IP地址,主机上写从机的IP:192.168.1.200,从机上写主机为IP地址:192.168.1.100。
整句的意思就是:赋予密码为password的帐号account访问操作%上MySQL 服务中所有数据库的数据的权限。
花了大半天的时间研究mysql 5.0.* ,参考了很多文档,总算将mysql的双机热备给搞定了。
心情很好,写个文章纪念一下。
因为以后还可能实际用到,所以也作以下笔记。
使用两台虚拟机,nod1和nod2,分别设置两块网卡,桥接到主机网卡上。
nod1 eth0:192.168.145.162eth1:192.168.254.1nod2 eth0:192.168.145.168eth1:192.168.254.21.基础安装mysql.首先干净的系统,不是干净的系统不要紧,反正自己搞明白就行了。
在nod1上安装mysql.yum -y install mysql-serverchkconfig mysqld onservice mysqld startmysqladmin -uroot password’1q2w3e’修改root密码。
nod2上同样方式安装mysql,并做如上操作。
2.nod1上mysql的设置。
在这里我就用test数据库来做测试,在test数据库里新建一个data表,并添加一些数据,具体操作如下:#mysql -uroot -p1q2w3emysql> create table data(name VARCHAR(20), address VARCHAR(50), phone VARCHAR(20));mysql>insert into data(name,address,phone) values(‘johnson’,’shanghai’,’135000000′);mysql>select * from data;+———+———-+———–+| name | address | phone |+———+———-+———–+| johnson | shanghai | 135000000 |+———+———-+———–+1 row in set (0.01 sec)设置数据库同步帐户:mysql>GRANT REPLICATION SLAVE,REPLICATION CLIENT,RELOAD,SUPER ON *.* TO ‘backup’@’192.168.254.2′IDENTIFIED BY ‘qawsed’; (授与从192.168.254.2主机上登录用户backup数据复制权限,4.02版本以前用:GRANT FILE ON *.* TO bac kup@192.168.254.2 IDENTIFIED BY ‘qawsed’;)mysql>flush privileges;mysql> select user,host from user;+——–+——————+| user | host |+——–+——————+| root | 127.0.0.1 || backup | 192.168.254.2 || | localhost || root | localhost || | nod1.test.domain || root | nod1.test.domain |+——–+——————+6 rows in set (0.01 sec)修改配置文件:停止mysql服务service mysqld stop在[mysqld]中加入以下内容server-id=1 #设置服务器的ID号log-bin #设置同步logbinlog-do-db=test #设置同步数据库max_binlog_size=104857600replicate-same-server-idmaster-host=192.168.254.2 #主机IPmaster-user=backupmaster-password=qawsedmaster-port=3306master-connect-retry=60 #断点重试间隔为60秒replicate-do-db=test #表示同步test数据库binlog-ignore-db=mysql #不同步的数据库# service mysqld sta rt //先启动mysql# mysqldump -h localhost -u root -p1q2w3e test >test.sql#scp test.sql root@192.168.2542:/ //(将test.sql复制到mysqlB的/目录下)至此nod1服务器上有关mysql的设置已完成,下一步开始配置nod2设置nod2设置数据库同步帐户:mysql>GRANT REPLICATION SLAVE,REPLICATION CLIENT,RELOAD,SUPER ON *.* TO ‘backup’@’192.168.254.1′IDENTIFIED BY ‘qawsed’; (授与从192.168.254.1主机上登录用户backup数据复制权限,4.02版本以前用:GRANT FILE ON *.* TO bac kup@192.168.254.1 IDENTIFIED BY ‘qawsed’;)mysql>flush privileges;修改配置文件:停止mysql服务#service mysqld stop更改Mysql配置文件/etc/f# vi /etc/fserver-id=2 #设置服务器的ID号log-bin #设置同步logbinlog-do-db=test #设置同步数据库max_binlog_size=104857600replicate-same-server-idmaster-host=192.168.254.1 #主机IPmaster-user=backupmaster-password=qawsedmaster-port=3306master-connect-retry=60 #断点重试间隔为60秒replicate-do-db=test #表示同步test数据库binlog-ignore-db=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;+——————-+———-+————–+——————+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+——————-+———-+————–+——————+| mysqld-bin.000001 | 196 | test | mysql |+——————-+———-+————–+——————+1 row in set (0.00 sec)mysql>show slave status\G;*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.254.1Master_User: backupMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysqld-bin.000001Read_Master_Log_Pos: 235Relay_Log_File: mysqld-relay-bin.000003Relay_Log_Pos: 236Relay_Master_Log_File: mysqld-bin.000001Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: testReplicate_Ignore_DB:Replicate_Do_Table:Replicate_Ignore_Table:Replicate_Wild_Do_Table:Replicate_Wild_Ignore_Table:Last_Errno: 0Last_Error:Skip_Counter: 0Exec_Master_Log_Pos: 235Relay_Log_Space: 236Until_Condition: NoneUntil_Log_File:Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File:Master_SSL_CA_Path:Master_SSL_Cert:Master_SSL_Cipher:Master_SSL_Key:Seconds_Behind_Master: 01 row in set (0.01 sec)Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: test表示正常!到此mysql的双机互备已基本完成,在两台服务器的mysql数据库中任意添加数据,都可以同步到对端服务器上。
一、heartbeat的安装和配置集群并不是一个全新的概念,其实早在七十年代计算机厂商和研究机构就开始了对集群系统的研究和开发。
由于主要用于科学工程计算,所以这些系统并不为大家所熟知。
直到Linux集群的出现,集群的概念才得以广为传播。
集群系统主要分为高可用(High Av ailability)集群,简称HA 集群。
常见的就是2个节点做成的HA集群,有很多通俗的不科学的名称,比如"双机热备", "双机互备", "双机"。
这样做的好处是当服务启动的时候,两台服务器一个作为主,另一个是从。
测试机每几秒会ping主机,当发现主机没有回应,就证明主机宕机了,那么从机马上会启动相应的服务,继续进行服务。
这样就可以保证服务不间断。
具体的拓扑图如下:1.1.1安装网络环境设定分别设置两台服务器eth1、eth0的IP地址,如:server1所示更改计算机名称设置DNS解析1.1.2、安装1)先要检查系统中是否有下面软件开发包的支持,包括pkgconfig g lib2-devel e2fsprogs和libnet2) 我的系统中只缺少libnet,安装libnet,这里使用的是1.1.2. 1版本tar -zxvf libnet.tar.gzcd libnet./configuremakemake install3) 安装heartbeattar -zxvf heartbeat-2.0.7.tar.gzcd heartbeat-2.0.7./ConfigureMe configuremakemake install4) 当安装好heartbeat后,系统会在/etc/下建立一个ha.d的目录,我们需要把一些文件拷到里面去。
cp /soft/heartbeat-2.0.7/doc/ha.cf /etc/ha.dcp /soft/heartbeat-2.0.7/doc/haresources /etc/ha.dcp /soft/heartbeat-2.0.7/doc/authkeys /etc/ha.d1.1.3配置主要文件的配置vi /etc/ha.d/ha.cf具体要把下面的选项前的注释去掉logfile /var/log/ha-loglogfacility local0keepalive 2 每2秒钟测试机发送一个广播deadtime 30 30秒内没有反应,立即切换服务warntime 10initdead 120udpport 694bcast eth1 指明心跳连接的接口号ucast eth1 192.168.10.1 心跳连接的pc的ipauto_failback onnode server1 两个的主机名(最好用uname -n察看)node server2ping 192.168.0.1 测试机的ip (要写外部的测试IP)vi /etc/ha.d/haresources 这个主要是指明资源的来源,添加一条指定虚拟IP表示server2是主服务器,虚拟IP地址为192.168.0.10 ,IP启动虚拟服务器HTTPD。
CentOS+heartbeat+apache配置操作步骤:1、在两台CentOS 虚拟机上分别加两块网卡(一共是四块网卡)2、关闭SELINUX编辑/etc/sysconfig/selinux 文件,配置以下语句:SELINUX=disabled也可以在图形界面里修改。
实际生产环境不应该关闭SELINUX,但必须注意SELINUX 对群集的影响。
3、关闭iptables 防火墙执行命令:chkconfig iptables offchkconfig ip6tables off也可以在图形界面里修改。
实际生产环境不应该关闭防火墙,但必须注意打开群集有关的协议和端口。
4、IP 地址配置服务器一:网卡0(eth0):IP 为192.168.0.110/24网卡1(eth1):IP 为10.0.0.10/24服务器二:网卡0(eth0):IP 为192.168.0.111/24网卡1(eth1):IP 为10.0.0.11/24配置完毕,可以输入如下命令检查IP 配置:# ifconfig可以用ping 命令检测网络的连通性。
例如,在服务器一中:# ping 192.168.0.111# ping 10.0.0.11均应该连通。
5、分别修改主机名为node1、node2服务器一修改/etc/sysconfig/network 文件中HOSTNAME 语句为:HOSTNAME=node1服务器二修改/etc/sysconfig/network 文件中HOSTNAME 语句为:HOSTNAME=node2也可以在GUI 的“网络”配置里修改。
修改完毕,运行命令# uname -n看到的结果应该与上面的修改一致。
(生效需重启)6、修改hosts 文件在两台服务器的/etc/hosts 文件里,添加以下语句:192.168.0.110 node1192.168.0.111 node27、开始安装heartbeatRpm -ivh heartbeat-pils.i386 2.1.3-3.el5.centosRpm -ivh heartbeat-stonith.i386 2.1.3-3.el5.centosRpm -ivh heartbeat.i386 2.1.3-3.el5.centos installed注意:如果提示错误说有个脚本没执行不用管它重新执行Rpm -ivh heartbeat.i386 2.1.3-3.el5.centos installed操作8、配置ApacheApache 是作为群集的测试服务来对外提供Web 服务的。
mysql双机热备 csdn 原理MySQL双机热备(CSDN原理)为了保证MySQL数据库的高可用性和数据安全性,常常需要进行双机热备。
本文将详细介绍MySQL双机热备的原理和实施步骤,帮助读者理解和应用这一技术。
一、MySQL双机热备原理概述MySQL双机热备是指通过复制技术将主数据库的数据实时同步到备份数据库,当主数据库发生故障时,可以快速切换到备份数据库继续提供服务,从而实现高可用性。
MySQL双机热备的原理主要包括以下几个方面:1. 主从复制(Master-Slave Replication):通过配置主数据库和备份数据库的关系,将主数据库的数据变更操作实时同步到备份数据库。
主数据库负责写入操作,而备份数据库负责读取操作,从而实现数据的实时同步。
2. 二进制日志(Binary Log):主数据库将所有的数据变更操作记录到二进制日志中,备份数据库通过解析这些日志来实现数据同步。
二进制日志包含了数据库的所有修改操作,包括插入、更新和删除等。
3. 心跳机制(Heartbeat):主备数据库之间通过心跳机制保持通信,主数据库定期向备份数据库发送心跳信号,用以检测主数据库的状态。
当主数据库发生故障无法提供服务时,备份数据库可以通过判断心跳信号的中断来触发故障切换。
二、MySQL双机热备的实施步骤下面将详细介绍MySQL双机热备的实施步骤,以帮助读者更好地理解和应用这一技术。
1. 配置主数据库需要在主数据库中进行相关配置。
在MySQL的配置文件中,将主数据库的角色设置为"master",并开启二进制日志(binary log)。
配置完成后,重启MySQL服务以使配置生效。
2. 配置备份数据库接下来,在备份数据库中进行相关配置。
在MySQL的配置文件中,将备份数据库的角色设置为"slave",并指定主数据库的地址和端口号。
配置完成后,重启MySQL服务以使配置生效。
当前大多网站采用Linux +MYSQL+APACHE+PHP这种经典配置,如何防止单点失败造成的整个网站的不可用是网站管理者必须要考虑的问题,其中数据库的高可用性(Database server’s high availability)是重中之重。
对于数据库的高可用性,各商业软件的厂商都有各自的解决方案,比如Oracle OPS server和IBM 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%左右的性能,可用性及数据安全性将大有提高,同时服务器的切换对终端使用者是透明的,终端应用不需要进行更改。
所需硬件:安装有双网卡的配置大致相同的服务器或工作机两台一条交叉网线(用于双机对连的心跳线)Linux HA 软件heartbeat (只支持两个节点),安装盘里集成的有这个软件的rpm包软件主页:[url]/[/url]Mysql软件软件主页:[url]/[/url]安装步骤: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 #make && make install#/usr/local/mysql/bin/mysql_install_db //初始化数据库#chown -R mysql.mysql /usr/local/mysql/ //设置目录宿主#cp /usr/local/mysql/share/mysql/f /etc/f //复制配置文件#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/f文件中的skip-federated注释掉即可#chkconfig --add mysqld#chkconfig --level 2345 mysqld on#ln -s /usr/local/mysql/bin/mysql /sbin/mysql#ln -s /usr/local/mysql/bin/mysqladmin /sbin/mysqladmin#mysqladmin –u root password 1q2w3e //设置root 密码#配置库文件搜索路径#echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf#ldconfig#添加/usr/local/mysql/bin到环境变量PATH中#export PATH=$PATH:/usr/local/mysql/binmysqlB也按以上的方式进行安装2、mysqlA设置设置同步数据库:在这里我就用test数据库来做测试,在test数据库里新建一个data表,并添加一些数据,具体操作如下:#mysql –u root –p1q2w3emysql> create table data(name VARCHAR(20), address VARCHAR(50), phoneVARCHAR(20));mysql>insert into data(name,address,phone) values('jhone','beijing','138000000'); mysql>select * from data;设置数据库同步帐户:mysql>GRANT REPLICATION SLAVE,REPLICATIONCLIENT,RELOAD,SUPER ON *.* TO 'backup'@'10.0.0.2' IDENTIFIED BY 'qawsed';(授与从10.0.0.2主机上登录用户backup数据复制权限,4.02版本以前用:GRANT FILE ON *.* TO backup@10.0.0.2 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/f[root@mysqlA opt]# vi /etc/fserver-id=1 //服务器ID号log-bin=mysql-binlog-bin=/var/log/mysql/updatelog //启用更新日志binlog-do-db=test //表示需要备份的数据库是test这个数据库replicate-same-server-idmaster-host=10.0.0.2 //指定主服务器IPmaster-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 root@10.0.0.2:/opt //(将test.sql 复制到mysqlB的/opt目录下)至此mysqlA服务器上有关mysql的设置已完成,下一步开始配置mysqlB设置mysqlB设置数据库同步帐户:mysql>GRANT REPLICATION SLAVE,REPLICATIONCLIENT,RELOAD,SUPER ON *.* TO 'backup'@'10.0.0.1' IDENTIFIED BY 'qawsed';(授与从10.0.0.1主机上登录用户backup数据复制权限,4.02版本以前用:GRANT FILE ON *.* TO backup@10.0.0.1 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/f[root@mysqlA opt]# vi /etc/fserver-id=2 //服务器ID号log-bin=mysql-binlog-bin=/var/log/mysql/updatelog //启用更新日志binlog-do-db=test //表示需要备份的数据库是test这个数据库replicate-same-server-idmaster-host=10.0.0.1 //指定主服务器IPmaster-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 <test.sql重启两边的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/f 的[mysqld]下面加上replicate-same-server-id 参数到此mysql的双机互备已基本完成,在两台服务器的mysql数据库中任意添加数据,都可以同步到对端服务器上安装配置heartbeat:Heartbeat下载地址如下:[url]/repositories/server:/ha-clusterin g:/lha-2.1/CentOS_5/i386/[/url]下载对应的版本,在此我的系统是centos 5.2rpm -ivh libnet-1.1.2.1-2.1.i386.rpmrpm -ivh heartbeat-pils-2.1.4-2.1.i386.rpmrpm -ivh --nodeps heartbeat-stonith-2.1.4-2.1.i386.rpmrpm -ivh --nodeps heartbeat-2.1.4-2.1.i386.rpmrpm -ivh --nodeps heartbeat-devel-2.1.4-2.1.i386.rpmrpm -ivh --nodeps heartbeat-ldirectord-2.1.4-2.1.i386.rpmrpm -ivh ipvsadm-1.24-8.1.i386.rpm配置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 11 crc#存盘退出,然后[root@mysqlA opt]#chmod 600 authkeys配置心跳的监控:haresources[root@mysqlA opt]#vi /etc/ha.d/haresources#各主机这部分应完全相同。