MySQL数据库高可用性方案_第1页
MySQL数据库高可用性方案_第2页
MySQL数据库高可用性方案_第3页
MySQL数据库高可用性方案_第4页
MySQL数据库高可用性方案_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MySQL数据库高可用性方案 一、综述数据库位于现代企业应用的核心,它储存了组织机构中最有价值的资产,包括客户信息、产品信息、订单信息和历史数据。另外,组织机构依赖于数据库来运行他们 关键业务应用。几小时甚至是几分钟的宕机,往往会造成收入的大量流失和客户的不满。因此,保证数据库高可用是所有组织机构优先考虑的事情。对于希望在当今 瞬息万变的经济环境立于不败之地并取得成功的企业来说,构建一个具有高可用性的IT 基础架构至关重要。二、完成目标 通过技术手段实现mysql数据库的高可用性,从而减少停工时间保证服务的正常稳定运行。三、方案建设概要1、现有高可用方案分析Mysql作为一款开源软件经过多年的发展,已经形成很多套实现高可用方案,并且均都投入生产使用,主要为这几种:mysql + replication 、mysql + heartbeat + 存储、mysql + drbd + heartbeat 、mysql cluster。以下将依次对各个方案进行分析。2、Mysql+replication2.1 概述Mysql的复制(Replication)是一个异步的复制,从一个Mysql instace(称之为Master)复制到另一个Mysql instance(称之Slave)。实现整个复制操作主要由三个进程完成的,其中两个进程在Slave(Sql进程和IO进程),另外一个进程在Master(IO进程)上。2.2 Mysqlreplication方案拓扑图Mysql+replication主从复制拓扑图 方案具体解释:要实施复制,首先必须打开Master端的binary log(bin-log)功能,否则无法实现。因为整个复制过程实际上就是Slave从Master端获取该日志然后再在自己身上完全顺序的执行日志中所记录的各种操作。 2.3 Mysql+replication优缺点优点:易实施、成本低、经济实惠、后期维护方便,且由于整套系统架构简单,不涉及到存储及双机软件,因此系统出现故障率很低。方便做到读写分离。缺点:在主机出现问题后不能自动切换到备份机,需要人工干涉更改IP地址。 3、mysql +heartbeat + 存储3.1 概述HA双机热备软件将操作环境推广到一种群集操作系统。群集是一种松散耦合的计算节点集合,提供网络服务或应用程序(包括数据库、web 服务和文件服务)的单一客户视图。HA双机热备软件的目标是:1:减少或消灭由软件或硬件故障引起的系统停机时间2:提供增强的系统可用性,能够不必关掉整个群集就可执行维护3.2 Mysql+heartbeat方案拓扑图方案具体解释:本方案采用高可靠性的HA双机热备软件来保证邮件服务的高稳定性及连续性。默认情况下两台mysql机器只有一台机器在工作,当工作机mysql主机出现问题后,系统将自动切换到mysql备机上继续提供服务,而整个过程只需要30秒的时间,当mysql主机故障维修完毕后,服务将自动切换回mysql主机上继续提供服务。3.3 Mysql+heartbeat优缺点优点:安全性、稳定性高,出现故障系统将自动切换,从而保证服务的连续性。缺点:相对mysql replication成本提高,需要有存储设备,同时由于多了存储设备及双机软件。 4、Mysql+drbd+heartbeat4.1 概述此方案除了刚刚介绍完的heartbeat外,主要用了DRBD这个工具,DRBD是一种块设备,可以被用于高可用(HA)之中.它类似于一个网络RAID-1功能.当你将数据写入本地文件系统时,数据还将会被发送到网络中另一台主机上.以相同的形式记录在一个文件系统中.本地(主节点)与远程主机(备节点)的数据可以保证实时同步.当本地系统出现故障时,远程主机上还会保留有一份相同的数据,可以继续使用.4.2 Mysql+drbd+heartbeat方案拓扑图 4.3 Mysql+drbd+heartbeat优缺点优点:安全性、稳定性高,出现故障系统将自动切换,从而保证服务的连续性,相对mysql+heartbeat+存储来说对大优点是节约了存储这个硬件设备。缺点:mysql主机宕机,切换到备机,备机接管服务,待主机修复完配置failback机制的话会发生脑裂情况,需要手工执行命令进行主机接管。 5、Mysqlcluster5.1 概述MySQL集群是一种分布式设计,目标是要达到没有任何单点故障点。因此,任何组成部分都应该拥有自己的内存和磁盘。任何共享存储方案如网络共享,网络文件系统和SAN设备是不推荐或不支持的。通过这种冗余设计,MySQL声称数据的可用度可以达到99。999%。5.2 Mysqlcluster方案拓扑图 5.3 Mysqlcluster优缺点优点:安全性、稳定性高,可以在线增加节点,官方声称可用度可达到99.999%。缺点:至少三个节点,对主机的数量又要求,无形增加方案成本、对于数据节点要求内存一直、对于引擎只能使用ndb、不支持外键功能、管理复杂 四、Mysql+heartbeat+存储方案具体实施步骤环境:nfs:03 as4u7主机-cm5.3:24 备机-as5u3:02 注意:关闭防火墙,selinux 第一块:nfs的搭建(在03上面)rootoracle # vi /etc/exports/data 192.168.184.*(rw,sync,no_root_squash)rootoracle # service nfs startrootoracle # exportfs -rv # 第二块:mysql的安装(主备机一样)# tar -zxvf mysql-5.0.67.tar.gz# cd mysql-5.0.67# groupadd mysql# useradd -g mysql -s /sbin/nologin -M mysql# ./configure prefix=/usr/local/mysql (至于编译参数很多,这里不枚举)# make && make install # cp support-files/f /etc/f# cp support-files/mysql.server /etc/rc.d/init.d/mysqld# chmod 755 /etc/rc.d/init.d/mysqld加入服务队列:# chkconfig add mysqld # chown -R mysql.mysql /usr/local/mysql/# /usr/local/mysql/bin/mysql_install_db user=mysql# chown -R mysql.mysql /usr/local/mysql/var # /usr/local/mysql/bin/mysqld_safe user=mysql & *配置库文件搜索路径# echo “/usr/local/mysql/lib/mysql” >> /etc/ld.so.conf# ldconfig添加/usr/local/mysql/bin到环境变量PATH中#echo “export PATH=$PATH:/usr/local/mysql/bin” >> /etc/profile#source /etc/profile* 在执行第三步之前,为了确保mysql+nfs的能否成功执行,可以先测试一下,我这里是这么做的,停掉原先的mysql。先在主机上面把nfs挂上来挂到/data目录,然后mv /usr/local/mysql/var /data/里面去,然后起mysql服务,看能不能起来,然后往里面建库建表,再用备机挂nfs看主机建的库和表是否存在,这么来回测试。测试完就可以确定mysql+nfs是ok的了。底下出错专心找heartbeat的问题。# 第三块:heartbeat的安装(主备机一样,唯独ha.cf里面的ucast那条信息)tar -zxvf libnet.tar.gzcd libnet./configuremake && make install tar -zxvf heartbeat-2.1.3.tar.gzcd heartbeat-2.1.3groupadd haclientuseradd -g haclient hacluster./ConfigureMe configuremake && make install 配置双机文件,一共需要三个文件(手工配置就行)ha.cf、haresources、authkeys# cd /etc/ha.drootcm5 ha.d# vi ha.cfdebugfile /var/log/ha-debuglogfile /var/log/ha-loglogfacility local0keepalive 2deadtime 30warntime 10initdead 120auto_failback onnode as5u3node cm5.3udpport 694ucast eth0 ping_group group1 02 24respawn hacluster /usr/lib/heartbeat/ipfailapiauth ipfail gid=haclient uid=haclusterhopfudge rootcm5 ha.d# vi haresourcescm5.3 IPaddr:00/24/eth0Filesystem:03:/data:/data:nfs mysqldrootcm5 ha.d# vi authkeysauth 11 crcrootcm5 ha.d# chmod 600 authkeys #第四步:测试1、先停掉主备机的上面的mysql,卸掉nfs的挂载。2、/etc/init.d/heartbeat start (主备机双执行)3、可以看到主机的虚ip已经起来了、nfs也挂上来了、mysql服务也已经起来了(其实他们的起来的顺序也 是这样的,释放资源是反顺序,可以看/var/log/ha-log日志)4、主机上写表,断掉主机的网卡,主机释放资源,备机起来,所有的都在5、主机网卡起来,资源从备机释放。 *第五步:意外情况上面能成功那是因为我的表格式是myisam的。但是用innodb却是不成功的,主机把网卡断了,备机mysql起不来。刚开始以为是inndb的原因,后来才知道是nfs的锁! (下面的是报错日志)/var/log/mysql.logInnoDB: Unable to lock ./ibdata1, error: 11InnoDB: Check that you do not already have anothermysqld processInnoDB: using the same InnoDB data or log files. /var/log/ha-logResourceManager25602: 2010/07/16_18:13:10 info:Running /etc/init.d/mysqld startResourceManager25602: 2010/07/16_18:13:41 ERROR:Return code 1 from /etc/init.d/mysqldResourceManager25602: 2010/07/16_18:13:41 CRIT:Giving up resources due to failure of mysqld 解决思路:1.修改了mysql.sock文件存放的路径不能全部放在共享的分区里面。(修改f)2.既然修改mysql.sock路径就得修改启动脚本的里面的配置,详情见最后。3.修改/etc/ha.d/haresource-test1 IPaddr:3/24/eth0 nfsmysqld4.在/etc/ha.d/resource.d/里面添加了一文件nfs ,主要作用就是设置nfs的mountroottest2 resource.d# more nfs#!/bin/shunset LC_ALL; export LC_ALLunset LANGUAGE; export LANGUAGEcase “$1 instart)/bin/mount -onolock 2:/data /var/lib/mysql;pre-start);post-start);stop)/bin/umount /var/lib/mysql;pre-stop);post-stop);*)echo “Usage: $0 start | pre-start | post-start| stop | pre-stop | post-stop ”;esacexit 0 5.测试我写了一个测试脚本,脚本意思通过建立log表,不断往里面的插数据,数据的顺序依次是0、1、210000。roottest1 # more test.sh#!/bin/bashi=0while $i -lt 10000 domysql -socket=/tmp/mysql.sock -e “insert intocm.log values (“$i”)”;let i=i+1echo “add $i to table log”done 此时在主机上面执行这个脚本,如下所示开始往数据库的log表里面插入数据了roottest1 # ./test.shadd 1 to table logadd 2 to table logadd 3 to table logadd 4 to table logadd 5 to table logadd 6 to table logadd 2026 to table log到了插入到第2026的时候,断开主机的网卡。 查看备机mysql的log日志,看到备机的mysql的会有一个inndb检查修复的操作。很快备机的mysql服务就起来了。roottest2 #tail f /var/log/mysql.log 22:12:23 mysqld started 22:12:23 InnoDB: Database was not shut down normally!InnoDB: Starting crash recovery.InnoDB: Reading tablespace information from the .ibdfiles.InnoDB: Restoring possible half-written data pagesfrom the doublewriteInnoDB: buffer. 22:12:24 InnoDB: Starting log scan based on checkpoint atInnoDB: log sequence number 0 .InnoDB: Doing recovery: scan

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论