通过KeepAlived搭建MySQL双主模式的高可用集群系统
LVS keepalived负载均衡高可用 配置安装大全

LVS+Keepalived实现高可用集群一、基础介绍 (2)二、搭建配置LVS-NA T模式 (2)三、搭建配置LVS-DR模式 (4)四、另外一种脚本方式实现上面LVS-DR模式 (6)五、keepalived + LVS(DR模式) 高可用 (8)六、Keepalived 配置文件详细介绍 (11)一、基础介绍(一)根据业务目标分成三类:High Availability 高可用Load Balancing 负载均衡High Performance 高性能(二)实现集群产品:HA类:rhcs、heartbeat、keepalivedLB类:haproxy、lvs、nginx、f5、piranhaHPC类:/index/downfile/infor_id/42(三)LVS 负载均衡有三种模式:LVS-DR模式(direct router)直接路由模式进必须经过分发器,出就直接出LVS-NAT模式(network address translation)进出必须都经过分发器LVS-TUN模式(ip tunneling)IP隧道模式服务器可以放到全国各地二、搭建配置LVS-NAT模式1 、服务器IP规划:DR服务器添加一张网卡eth1,一个网卡做DIP,一个网口做VIP。
设置DIP、VIP IP地址:DIP的eth1和所有RIP相连同一个网段CIP和DIP的eth0(Vip)相连同一个网段Vip eth0 192.168.50.200Dip eth1 192.168.58.4客户机IP:Cip 192.168.50.32台真实服务器IP:Rip1 192.168.58.2Rip2 192.168.58.32 、R ealServer1配置:mount /dev/xvdd /media/vi /var/www/html/index.html写入:this is realserver1启动httpdvi /etc/sysconfig/network-scripts/ifcfg-eth0设置RIP,子网掩码必须设置成DIPIPADDR=192.168.58.2NETMASK=255.255.255.0GA TEWAY=192.168.58.43 、R ealServer2 配置:vi /var/www/html/index.html写入:this is realserver2启动httpdvi /etc/sysconfig/network-scripts/ifcfg-eth0设置RIP,子网掩码必须设置成DIPIPADDR=192.168.58.3NETMASK=255.255.255.0GA TEWAY=192.168.58.44 、在DR服务器上做以下设置:开启IP数据包转发vi /etc/sysctl.confnet.ipv4.ip_forward = 0 ##0改成1 ,此步很重要查看是否开启:sysctl -p5 、安装LVS服务:ipvsadmyum -y install ipvsadmlsmod |grep ip_vsTurbolinux系统没有带rpm包,必须下载源码安装:#ln -s /usr/src/kernels/2.6.18-164.el5-x86_64/ /usr/src/linux##如果不做连接,编译时会包错#tar zxvf ipvsadm-1.24.tar.gz#cd ipvsadm-1.24#make && make install运行下ipvsadm ,就加到ip_vs模块到内核了lsmod | grep ip 可以看到有ip_vs模块了6 、配置DR服务器,添加虚拟服务ipvsadm -L -n 查询信息ipvsadm -A -t 192.168.50.200:80 -s rr #添加集群服务、调度算法,rr为调度算法ipvsadm -a -t 192.168.50.200:80 -r 192.168.58.2 -m -w 1 # -m代表net模式,-w代表权重ipvsadm -a -t 192.168.50.200:80 -r 192.168.58.3 -m -w 2ipvsadm -L -n 再次查看是就有了realserverservice ipvsadm save 保存配置iptables -L 关闭或者清空防火墙watch -n 1 'ipvsadm -L -n' 查看访问记录的数显示如下:-> RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 192.168.50.200:80 rr-> 192.168.58.2:80 Masq 1 0 13-> 192.168.58.3:80 Masq 2 0 12ActiveConn是活动连接数,也就是tcp连接状态的ESTABLISHED;InActConn是指除了ESTABLISHED以外的,所有的其它状态的tcp连接.7 、测试:http://192.168.58.200配完后若想修改算法:ipvsadm -E -t 192.168.58.200:80 -s wlc修改Rip的权重:ipvsadm -e -t 192.168.58.200:80 -r 192.168.58.2 -m -w 1ipvsadm -e -t 192.168.58.200:80 -r 192.168.58.3 -m -w 5三、搭建配置LVS-DR模式lo:1 回应客户端,lo:1上的IP跟机器有关,跟网卡没有关系arp_announce 对网络接口上本地IP地址发出的ARP回应作出相应级别的限制arp_ignore 定义对目标地址为本地IP的ARP询问不同的请求一、3台服务器IP配置规划:DIP:eth0:1 192.168.58.200/32 (VIP)eth0 192.168.58.3/24 (DIP)RIP1 lo:1 192.168.58.200/32 (VIP)eth0 192.168.58.4/24RIP2 lo:1 192.168.58.200/32 (VIP)eth0 192.168.58.5/24 .................................................................RIP n lo:1 192.168.58.200/32 (VIP)eth0 192.168.58.N/24二、每台realserver都加上下面四个步骤配置:1 、配置每台rip的IP、http,web页面2 、关闭每台rip服务器的ARP广播:echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 2 > /proc/sys/net/ipv4/conf/lo/arp_announceecho 1 > /proc/sys/net/ipv4/conf/all/arp_ignoreecho 2 > /proc/sys/net/ipv4/conf/all/arp_announce3 、配置VIPifconfig lo:1 192.168.58.200 netmask 255.255.255.255 broadcast 192.168.58.200 up4 、配置网关route add -host 192.168.58.200 dev lo:1三、DR上的配置(DR模式下Dip不用开启转发):1 、配置DIP,在eth0上添加一个子VIP接口:添加VIP:ifconfig eth0:1 192.168.58.200 broadcast 192.168.58.200 netmask 255.255.255.255 up2 、配置网关:route add -host 192.168.58.200 dev eth0:1route -n3 、安装ipvsadm(方法见文档上面)yum -y install ipvsadmlsmod |grep ip_vs4 、配置LVS集群:ipvsadm -A -t 192.168.58.200:80 -s rr #添加集群服务、调度算法,rr为调度算法ipvsadm -a -t 192.168.58.200:80 -r 192.168.58.3 -g -w 1 # -g代表DR模式,-w代表权重ipvsadm -a -t 192.168.58.200:80 -r 192.168.58.2 -g -w 2service ipvsadm saveipvsadm -L -n 查看信息四、测试:http://192.168.58.200四、另外一种脚本方式实现上面LVS-DR模式IP规划:Dip eth0 192.168.58.139VIP:192.168.58.200RIP1:192.168.58.2RIP2:192.168.58.31 、D R服务器上安装ipvsadm#yum -y install ipvsadm#lsmod | grep ip_vs 查看没有输出#modprobe ip_vs 安装即可2 、配置DIP服务器、LVS这里也是个写脚本为了方便vim /etc/init.d/lvsdr#!/bin/bash#lvs of DRVIP=192.168.58.200RIP1=192.168.58.2RIP2=192.168.58.3case "$1" instart)echo "start lvs of DR"/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.0 up echo "1" > /proc/sys/net/ipv4/ip_forward/sbin/iptables -C/sbin/ipvsadm -A -t $VIP:80 -s rr/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g/sbin/ipvsadm;;stop)echo "stop lvs of DR"echo "0" > /proc/sys/net/ipv4/ip_forward/sbin/ipvsadm -C/sbin/ifconfig eth0:0 down;;*)echo "Usage :$0 {start|stop}"exit1esacexit 0#chmod o+x /etc/init.d/lvsdr启动脚本:#service lvsdr start3 、2台RIP服务器都配置这里我们也都可以写成脚本开启2台RIP的httpd服务。
mysql+mycat搭建稳定高可用集群,负载均衡,主备复制,读写分离

mysql+mycat搭建稳定⾼可⽤集群,负载均衡,主备复制,读写分离数据库性能优化普遍采⽤集群⽅式,oracle集群软硬件投⼊昂贵,今天花了⼀天时间搭建基于mysql的集群环境。
主要思路简单说,实现mysql主备复制-->利⽤mycat实现负载均衡。
⽐较了常⽤的读写分离⽅式,推荐mycat,社区活跃,性能稳定。
测试环境MYSQL版本:Server version: 5.5.53,到官⽹可以下载WINDWOS安装包。
注意:确保mysql版本为5.5以后,以前版本主备同步配置⽅式不同。
linux实现思路类似,修改f即可。
A主mysql。
192.168.110.1:3306, ⽤户root,密码root。
操作系统:win7 x64,内存:4g安装路径:C:\Program Files\MySQL\MySQL Server 5.5\binB备mysql。
192.168.110.2:3306, ⽤户root,密码root。
操作系统:win2003 x64,内存:1g安装路径:C:\Program Files\MySQL\MySQL Server 5.5\binA主、B备的mysql中创建sync_test数据库实现mysql主备复制主要思路:A主mysql开启⽇志,B备mysql读取操作⽇志,同步执⾏。
⼀般为主备同步,主主同步不推荐使⽤。
配置A主mysql1)修改my.ini。
需要在log-bin="C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-bin.log"的相关位置创建log⽬录,以及mysql-bin.log⽂件。
[mysqld]server-id=1 #主机标⽰,整数port=3306log-bin="C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-bin.log" #确保此⽂件可写read-only=0 #主机,读写都可以binlog-do-db=sync_test #需要备份数据库,多个写多⾏binlog-ignore-db=mysql #不需要备份的数据库,多个写多⾏2)允许MYSQL远程访问#登录mysql console进⼊%home%/bin,执⾏mysql -uroot -proot#授权。
HA高可用集群中脑裂问题解决-运维总结

HA⾼可⽤集群中脑裂问题解决-运维总结------ 什么是脑裂(split-brain)在"双机热备"⾼可⽤(HA)系统中,当联系两个节点的"⼼跳线"断开时(即两个节点断开联系时),本来为⼀个整体、动作协调的HA系统,就分裂成为两个独⽴的节点(即两个独⽴的个体)。
由于相互失去了联系,都以为是对⽅出了故障,两个节点上的HA软件像"裂脑⼈"⼀样,"本能"地争抢"共享资源"、争起"应⽤服务"。
就会发⽣严重后果:1)或者共享资源被⽠分、两边"服务"都起不来了;2)或者两边"服务"都起来了,但同时读写"共享存储",导致数据损坏(常见如数据库轮询着的联机⽇志出错)。
两个节点相互争抢共享资源,结果会导致系统混乱,数据损坏。
对于⽆状态服务的HA,⽆所谓脑裂不脑裂,但对有状态服务(⽐如MySQL)的HA,必须要严格防⽌脑裂[但有些⽣产环境下的系统按照⽆状态服务HA的那⼀套去配置有状态服务,结果就可想⽽知]。
------ 集群脑裂产⽣的原因⼀般来说,裂脑的发⽣,有以下⼏种原因:1. ⾼可⽤服务器各节点之间⼼跳线链路发⽣故障,导致⽆法正常通信。
2. 因⼼跳线坏了(包括断了,⽼化)。
3. 因⽹卡及相关驱动坏了,ip配置及冲突问题(⽹卡直连)。
4. 因⼼跳线间连接的设备故障(⽹卡及交换机)。
5. 因仲裁的机器出问题(采⽤仲裁的⽅案)。
6. ⾼可⽤服务器上开启了iptables防⽕墙阻挡了⼼跳消息传输。
7. ⾼可⽤服务器上⼼跳⽹卡地址等信息配置不正确,导致发送⼼跳失败。
8. 其他服务配置不当等原因,如⼼跳⽅式不同,⼼跳⼴插冲突、软件Bug等。
提⽰:Keepalived配置⾥同⼀VRRP实例如果virtual_router_id两端参数配置不⼀致也会导致裂脑问题发⽣。
双机热备+负载均衡线上方案(Heartbeat+DRBD+NFS+Keepalived+Lnmp)

/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。
开源HA解决方案

开源HA解决方案《开源HA解决方案:构建稳定可靠的高可用系统》当今互联网时代,高可用性(HA)已经成为企业建设系统的重要指标之一。
在构建高可用系统时,开源软件解决方案的优势日益凸显。
开源软件具有灵活、定制性强的特点,可以满足不同企业的需求,同时,也能够降低成本,提高系统的可靠性。
开源HA解决方案是指基于开源软件构建的高可用系统解决方案。
常见的开源HA解决方案包括Pacemaker、Keepalived、Corosync等。
这些解决方案不仅能够保证系统的稳定性和可靠性,还可以提供灵活的配置和定制,满足不同企业的需求。
Pacemaker是一个常用的开源HA解决方案,它提供了很多高可用性功能,比如故障监测、自动故障切换、资源组管理等。
通过Pacemaker可以轻松构建起一个高可用的集群系统,保证系统的稳定性和可靠性。
Keepalived则是一个轻量级的负载均衡和故障转移解决方案,它可以将多台服务器组成一个高可用的集群,同时可以实现故障自动转移,确保系统的稳定性。
Corosync是一个消息传递层软件,它可以提供高可用系统必需的集群通信功能。
通过Corosync可以实现集群节点之间的通信和协调,确保集群系统的正常运行。
同时,Corosync支持灵活的配置和定制,可以满足不同企业的需求。
总之,开源HA解决方案能够帮助企业构建稳定可靠的高可用系统。
通过灵活的配置和定制,这些解决方案可以满足不同企业的需求,同时也能够降低成本,提高系统的可靠性。
相信在未来,开源HA解决方案会越来越受到企业的青睐,成为构建高可用系统的首选方案。
软件开发知识:利用集群技术构建高可用性的系统

软件开发知识:利用集群技术构建高可用性的系统随着互联网技术的不断发展,越来越多的企业和组织都在构建自己的高可用性系统,以保证业务的稳定性和数据的安全性。
其中的关键技术之一就是集群技术,通过多台服务器的联合工作,实现高可用性的系统构建。
本文将从以下四个方面深入阐述集群技术构建高可用性系统的要点和步骤。
首先,介绍集群技术的基本概念和原理。
其次,探讨如何利用集群实现系统的负载均衡和故障转移,同时介绍相关的软件和工具。
第三,详细解释如何选用适合的硬件设备和网络结构来搭建集群系统。
最后,对常见的集群系统故障进行分析,提出应对方法。
一、集群技术概述集群技术是一种将多台计算机联合起来构成一个高性能、高可用性、高扩展性的计算机系统的技术。
集群系统通常由多个相互独立的服务器节点组成,节点之间通过特定的网络通信协议进行数据的交换和共享。
在集群系统中,任何一个计算机节点都可以以工作节点的身份进入到整个集群体系中,从而实现任务的分配和执行。
而整个集群系统也可以通过编程、配置等方式实现负载均衡和故障转移,从而提高系统的可用性和稳定性。
二、集群技术实现高可用性系统的原理和步骤2.1负载均衡负载均衡是集群技术中最基本的概念之一。
在一个系统或服务中,用户的请求往往是随机分布的,不同请求的负载也会有所差异。
而通过负载均衡技术,可以将不同请求分配到不同计算机节点中进行处理,从而实现系统的负载均衡。
负载均衡可以分为硬件负载均衡和软件负载均衡两种类型。
硬件负载均衡一般采用专用网络交换机或路由器来实现,比如F5、NetScaler等;而软件负载均衡通常采用虚拟网络设备或软件来实现,比如Nginx、HAProxy等。
2.2故障转移故障转移指在集群系统中,如果某个节点出现了故障,如何及时将请求转发到其他节点,以保证系统的可用性和稳定性。
故障转移也可以分为硬件故障转移和软件故障转移两种类型。
硬件故障转移一般采用专用的硬件设备或热插拔设备来实现,比如磁盘阵列设备或高可用性存储系统。
三.keepalived介绍及工作原理

三.keepalived介绍及⼯作原理⼀、keepalived的介绍Keepalived软件起初是专为LVS负载均衡软件设计的,⽤来管理并监控LVS集群系统中各个服务节点的状态,后来⼜加⼊了可以实现⾼可⽤的VRRP功能。
因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等)的⾼可⽤解决⽅案软件。
Keepalived软件主要是通过VRRP协议实现⾼可⽤功能的。
VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写,VRRP出现的⽬的就是为了解决静态路由单点故障问题的,它能够保证当个别节点宕机时,整个⽹络可以不间断地运⾏。
所以,Keepalived⼀⽅⾯具有配置管理LVS的功能,同时还具有对LVS下⾯节点进⾏健康检查的功能,另⼀⽅⾯也可实现系统⽹络服务的⾼可⽤功能。
keepalived:vrrp协议:Virtual Router Redundancy Protocol术语:虚拟路由器:Virtual Router虚拟路由器标识:VRID(0-255),唯⼀标识虚拟路由器物理路由器:master:主设备backup:备⽤设备priority:优先级VIP:Virtual IPVMAC:Virutal MAC (00-00-5e-00-01-VRID)通告:⼼跳,优先级等;周期性⼯作⽅式:抢占式,⾮抢占式安全⼯作:认证:⽆认证简单字符认证:预共享密钥MD5⼯作模式:主/备:单虚拟路径器主/主:主/备(虚拟路径器1),备/主(虚拟路径器2)⼆、Keepalived服务的重要功能1、管理LVS负载均衡软件早期的LVS软件,需要通过命令⾏或脚本实现管理,并且没有针对LVS节点的健康检查功能。
为了解决LVS的这些使⽤不便的问题,Keepalived就诞⽣了,可以说,Keepalived软件起初是专为解决LVS的问题⽽诞⽣的。
如何使用MySQL进行多机房部署和数据同步

如何使用MySQL进行多机房部署和数据同步随着互联网的蓬勃发展,许多企业面临着高并发、大数据量的挑战,为了提高系统的可用性和稳定性,多机房部署成为了一种常见的解决方案。
而作为数据库领域的翘楚,MySQL在多机房部署和数据同步方面也有着丰富的经验和技术。
一、多机房部署的需求分析在介绍多机房部署的方法之前,首先需要明确多机房部署的需求。
多机房部署的主要目的是提高系统的可用性,即当一个机房出现故障或网络中断时,能够快速切换到另一个机房提供服务。
此外,多机房部署还可以实现地理位置的容灾备份,提高系统的容错能力和可扩展性。
二、MySQL的多机房部署方案1. 主从复制主从复制是MySQL多机房部署的常用方案之一。
通过将数据从一个机房复制到另一个机房的方式,实现了数据的备份和容灾。
主从复制的原理是将主服务器上的所有数据变更事件记录下来,然后将这些事件通过网络传输到从服务器上执行,从而保持主从服务器之间的数据一致性。
2. 集群方案MySQL集群方案是一种更为高级的多机房部署方案。
它通过将多台服务器组织成一个集群,实现数据的分布式存储和处理。
集群方案可以提供更高的性能和可用性,但配置和管理相对复杂一些。
常见的MySQL集群方案包括Galera Cluster、MySQL Cluster等。
三、数据同步的策略选择在多机房部署中,数据同步是一个非常重要的环节。
正确选择适合自己业务的数据同步策略可以保证数据的一致性和可用性。
1. 异步复制异步复制是一种常见的数据同步策略,它的特点是主服务器将数据变更事件写入binlog,并异步传输到从服务器进行执行。
异步复制的优点是传输延迟小,在网络不稳定的情况下也能保证数据的可用性,但是存在数据不一致的风险。
2. 同步复制同步复制是一种更为安全的数据同步策略,它要求主服务器和从服务器在写入数据之前必须达成一致,确保数据的完整性和一致性。
同步复制的缺点是传输延迟大,在网络延迟较高的情况下可能会影响系统的性能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通过KeepAlived搭建MySQL双主模式的高可用集群系统一、整体架构企业级mysql集群具备高可用、可扩展、易管理、低成本的特点。
下面将介绍企业环境中经常应用的一个解决方案,即MySQL的双主互备架构,主要设计思路是通过MySQL Replication技术将两台MySQL Server互相将对方作为自己的Master,自己又同时作为对方的Slave来进行复制。
这样就实现了高可用构架中的数据同步功能,同时,将采用KeepAlived 来实现Mysql的自动failover。
在这个构架中,虽然两台MySQL Server互为主从,但同一时刻只有一个MySQL Server可读写,另一个MySQL Server只能进行读操作,这样可保证数据的一致性。
整个架构下图所示。
二、MySQL主主互备模式配置环境第一步要做的工作是在这两天机器上都安装mysql,在做主从复制的时候mysql的版本尽量保持一致。
即使不一样一定要以主服务的版本为最高的版本,从服务器的版本不能高于主服务器的版本。
1、Mysql的安装与配置Mysql5.6版本之后,编译mysql方式变为cmake安装cmake:#yum install cmake#cd mysql-5.6.17#cmake \-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \-DMYSQL_DATADIR=/usr/local/mysql/data \-DSYSCONFDIR=/etc \-DWITH_MYISAM_STORAGE_ENGINE=1 \-DWITH_INNOBASE_STORAGE_ENGINE=1 \-DWITH_MEMORY_STORAGE_ENGINE=1 \-DWITH_READLINE=1 \-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \-DMYSQL_TCP_PORT=3306 \-DENABLED_LOCAL_INFILE=1 \-DWITH_PARTITION_STORAGE_ENGINE=1 \-DEXTRA_CHARSETS=all \-DDEFAULT_CHARSET=utf8 \-DDEFAULT_COLLATION=utf8_general_cimake && make install如果没有就创建用户就创建如下用户:#groupadd mysql#useradd -g mysql mysql修改/usr/local/mysql权限:#chown -R mysql:mysql /usr/local/mysql#cd /usr/local/mysql进入安装路径,执行初始化配置脚本,创建系统自带的数据库和表:#scripts/mysql_install_db--basedir=/usr/local/mysql--datadir=/usr/local/mysql/data --user=mysql2、启动MySQL添加服务,拷贝服务脚本到init.d目录,并设置开机启动#cd /usr/local/mysql#cp support-files/mysql.server /etc/init.d/mysql#chkconfig mysql on#service mysql start--启动MySQL三、配置mysql主从服务器1、修改MySQL配置文件在默认情况下MySQL的配置文件是/etc/f。
但我们需要修改的路径是自己安装MySQL的路径。
首先修改DB1主机的配置文件,在/usr/local/mysql/f文件中的“[mysqld]”段添加如下内容:server-id = 1log-bin=mysql-binrelay-log = mysql-relay-binreplicate-wild-ignore-table=mysql.%replicate-wild-ignore-table=test.%replicate-wild-ignore-table=information_schema.%然后修改DB2主机的配置文件,在/usr/local/mysql/f文件中的“[mysqld]”段添加如下内容:server-id = 2log-bin=mysql-bin(如果只有一主一从,在从库上是不需要开启binlog日志的,后面是为了演示互为主从这才加上去的)relay-log = mysql-relay-binreplicate-wild-ignore-table=mysql.%replicate-wild-ignore-table=test.%replicate-wild-ignore-table=information_schema.%其中,server-id是节点标识,主、从节点不能相同,必须全局唯一。
log-bin表示开启MySQL的binlog日志功能。
“mysql-bin”表示日志文件的命名格式,会生成文件名为mysql-bin.000001、mysql-bin.000002等的日志文件。
relay-log用来定义relay-log日志文件的命名格式。
replicate-wild-ignore-table是个复制过滤选项,可以过滤掉不需要复制的数据库或表,例如“mysql.%“表示不复制mysql库下的所有对象,其他依此类推。
与此对应的是replicate_wild_do_table选项,用来指定需要复制的数据库或表。
2、手动同步数据库如果DB1上已经有mysql数据,那么在执行主主互备之前,需要将DB1和DB2上两个mysql的数据保持同步,首先在DB1上备份mysql数据,执行如下SQL语句:mysql>FLUSH TABLES WITH READ LOCK; (解锁:unlock tables;)Query OK, 0 rows affected (0.00 sec)在不退出终端的情况下,再开启一个终端直接打包压缩数据文件或使用mysqldump工具来导出数据。
这里通过打包mysql文件来完成数据的备份,操作过程如下:[root@DB1 ~]# cd /usr/local[root@DB1 lib]# tar zcvf mysql.tar.gz mysql[root@DB1 lib]# scp mysql.tar.gz DB2:/usr/local/将数据传输到DB2后,依次重启DB1和DB2上面的mysql。
3、创建复制用户并授权首先在DB1的mysql库中创建复制用户,操作过程如图所示。
mysql> grant replication slave on *.* to 'repl_user'@'192.168.1.89' identified by 'repl_passwd';然后在DB2的mysql库中将DB1设为自己的主服务器,操作如下所示。
Change master to master_host='192.168.1.85',master_user='repl_user',master_password='repl_passwd',master_log_file='mysql-bin.000001',master_log_pos=431;这里需要注意master_log_file和master_log_pos两个选项,这两个选项的值刚好是在DB1上通过SQL语句“show master status”查询到的结果。
接着就可以在DB2上启动slave服务了,可执行如下SQL命令:mysql> start slave;下面查看DB2上slave的运行状态,如图所示。
通过查看slave的运行状态发现,一切运行正常,这里需要重点关注的是Slave_IO_Running和Slave_SQL_Running,这两个就是在Slave节点上运行的主从复制线程,正常情况下这两个值都应该为Yes。
另外还需要注意的是Slave_IO_State、Master_Host、Master_Log_File、Read_Master_Log_Pos、Relay_Log_File、Relay_Log_Pos和Relay_Master_Log_File几个选项,从中可以查看出mysql复制的运行原理及执行规律。
最后还有一个Replicate_Wild_Ignore_Table选项,这个是之前在f中添加过的,通过此选项的输出值可以知道过滤掉了哪些数据库。
到这里位置,从DB1到DB2的mysql主从复制已经完成了。
接下来开始配置从DB2到DB1的mysql主从复制,这个配置过程与上面的完全一样,首先在DB2的mysql库中创建复制用户,操作如图grant replication slave on *.* to 'repl_user'@'192.168.1.85' identified by 'repl_passwd';然后在DB1的mysql库中将DB2设为自己的主服务器,操作如下change master to master_host='192.168.1.89',master_user='repl_user',master_password='repl_passwd',master_log_file='mysql-bin.000001',master_log_pos=862;接着就可以在DB1上启动slave服务了,可执行如下SQL命令:mysql> start slave;下面查看DB1上slave的运行状态,如图所示。
从图上中可以看出Slave_IO_Running和Slave_SQL_Running都是Yes状态,表明DB1上复制服务运行正常。
至此,mysql双主模式的主从复制已经配置完毕了。
四、配置KeepAlived实现MySQL双主高可用在进行高可用配置之前,首先需要在DB1和DB2服务器上安装KeepAlived软件。
KeepAlived的安装和配置过程如下:[root@keepalived-master app]#tar zxvf keepalived-1.2.12.tar.gz[root@keepalived-master app]#cd keepalived-1.2.12[************************************.12]#./configure--sysconf=/etc \> --with-kernel-dir=/usr/src/kernels/2.6.32-431.5.1.el6.x86_64[************************************.12]#make[************************************.12]#makeinstall[************************************.12]#ln-s/usr/local/sbin/keepalived/sbin/[************************************.12]#chkconfig--add keepalived[************************************.12]#chkconfig--level 35 keepalived on安装完成后,进入keepalived的配置过程。