还剩15页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
数据库高可用性方案MySQL
一、综述数据库位于现代企业应用日勺关键,它储存了组织机构中最有价值日勺资产,包括客户信息、产品信息、订单信息和历史数据此外,组织机构依赖于数据库来运行他们关键业务应用几小时甚至是几分钟日勺宕机,往往会导致收入日勺大量流失和客户日勺不满因此,保证数据库高可用是所有组织机构优先考虑的事情对于但愿在当今瞬息万变日勺经济环境立于不败之地并获得成功日勺企业来说,构建一种具有高可用性日勺基础架构至关重要IT
二、完毕目日勺通过技术手段实现数据库日勺高可用mysql性,从而减少停工时间保证服务日勺正常稳定运行
三、方案建设概要、既有高可用方案分析1作为一款开源软件通过数年日勺发展,已经形成诸多套实现Mysql高可用方案,并且均都投入生产使用,重要为这几种mysql+、存储、、replication mysql+heartbeat+mysql+drbd+heartbeat如下将依次对各个方案进行分析mysql cluster、概述2Mysql+replication
2.1respawn hacluster/usr/lib/heartbeat/ipfailapiauth ipfailgid=haclient uid=haclusterhopfudge[root@cm5ha.d]#vi haresourcescm
5.3IPaddr::192,
168.
184.200/24/eth0Filesystem::
192.
168.
184.103:/data::/data::nfs mysqld[root@cm5ha.d]#vi authkeysauth11crc[root@cm5ha.d]#chmod600authkeys##########################################################第四步测试、先停掉主备机日勺上面日勺卸掉日勺挂载1mysql,nfs、(主备机双执行)2/etc/init.d/heartbeat start、可以看到主机日勺虚已经起来了、也挂上来了、服3ip nfsmysql务也已经起来了(其实他们日勺起来日勺次序也是这样日勺,释放资源是反次序,可以看日志)、/var/log/ha-log4主机上写表,断掉主机日勺网卡,主机释放资源,备机起来,所有日勺都在、主机网卡起来,资源从备机释放5********************************************************************************************************************************************************************第五步意外状况上面能成功那是由于我日勺表格式是日勺不过用myisam innodb却是不成功日勺,主机把网卡断了,备机起不来刚开始认mysql为是日勺原因,后来才懂得是日勺锁!!!!inndb nfs(下面日勺是报错日志)/var/log/mysql.logInnoDB:Unable tolock./ibdatal,error:11InnoDB:Check thatyou donot alreadyhave anothermysqldprocessInnoDB:using thesame InnoDBdata orlog files./var/log/ha-logResourceManager
[25602]:2023/07/16_18:13:10info:Running/etc/init,d/mysqld startResourceManager
[25602]:2023/07/16_18:13:41ERROR:Return code1from/etc/init.d/mysqldResourceManager
[25602]:2023/07/16_18:13:41CRIT:Giving upresourcesdue tofailure ofmysqld处理思绪.修改了文献寄存日勺途径不能所有放在共享日勺分1mysql.sock区里面(修改)my f.既然修改途径就得修改启动脚本日勺里面日勺配置,2mysql.sock详情见最终.在里面添加了一文献重要作用就是设4/etc/ha.d/resource.d/nfs,置日勺nfs mount[root@test2resource.d]#more nfs#!/bin/shunset LC_ALL;export LC_ALLunset LANGUAGE;export LANGUAGE$工case in)start/bin/mount-onolock
192.
168.
122.12:/data/var/lib/mysqlpre-start■•J Jpost-start,■■Jstop,/bin/umount/var/lib/mysql■■Jpre-stop■■J Jpost-stop,■■J*echo“Usage:$0{start|pre-start|post-start|stop|pre-stop|post-stop}”■■J Jesacexit
0.测试我写了一种测试脚本,脚本意思通过建立表,不停往里面5log日勺插数据,数据日勺次序依次是、、012……lOOOOo[root@testl-]#more test.sh#!/bin/bashi=0while[$i-It10000]domysql--socket=/tmp/mysql.sock-e insertintocm.log values;$i”let i=i+lecho add$i to table logdone此时在主机上面执行这个脚本,如下所示开始往数据库日勺表log里面插入数据了[root@testl-]#./test.shadd1to tablelogadd2to tablelogadd3to tablelogadd4to tablelogadd5to tablelogadd6to tablelog add2026totablelog到了插入到第日勺时候,断开主机日勺网卡2026查看备机日勺日志,看到备机日勺日勺会有一种mysql log mysql检查修复日勺操作很快备机日勺服务就起来了inndb mysql[root@test2-]#tail-f/var/log/mysql.log10071622:12:23mysqld started10071622:12:23InnoDB:Database wasnot shutdown normally!InnoDB:Starting crashrecovery.InnoDB:Reading tablespaceinformation fromthe.ibdfiles...InnoDB:Restoring possiblehalf-written datapagesfrom thedoublewriteInnoDB:buffer...10071622:12:24InnoDB:Starting logscan basedon checkpointatInnoDB:log sequencenumber
017445609.InnoDB:Doing recovery:scanned upto log sequencenumber01745196110071622:12:25InnoDB:Starting anapply batchof logrecordsto thedatabase...InnoDB:Progress inpercents:2930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899InnoDB:Apply batchcompleted10071622:12:25InnoDB:Started;logsequencenumber10071622:12:25[Note]/usr/libexec/mysqld:ready forconnections.Version:
5.
0.45socket:7tmp/mysql.sock port:3306Sourcedistribution在进入到备机日勺查看表里面日勺数据一共有条,mysql,log2027正截止到我们在断开主机执行到日勺数字2026[root@test2resource.d]#mysql--socket=/tmp/mysql.sock-e selectcount*from cm.log;++|county---------------++2027|---------------++日勺复制()是一种异步日勺复制,从一种Mysql ReplicationMysql(称之为)复制到另一种(称之instace MasterMysql instance)实现整个复制操作重要由三个进程完毕日勺,其中两个Slave进程在(进程和进程),此外一种进程在(Slave Sql10Master10进程)上方案拓扑图
2.2Mysqlreplication主从复制拓扑图Mysql+replication方案详细解释要实行复制,首先必须打开端日勺()功Master binarylog bin-log能,否则无法实现由于整个复制过程实际上就是从Slave Master端获取该日志然后再在自己身上完全次序日勺执行日志中所记录日勺多种操作优缺陷长处易实行、成本低、经济实惠、
2.3Mysql+replication后期维护以便,且由于整套系统架构简朴,不波及到存储及双机软件,因此系统出现故障率很低以便做到读写分离缺陷在主机出现问题后不能自动切换到备份机,需要人工干涉更改地址IP、存储概述3mysql+heartbeat+
3.1双机热备软件将操作环境推广到一种群集操作系统群集是一HA种松散耦合日勺计算节点集合,提供网络服务或应用程序(包括数据库、服务和文献服务)日勺单一客户视图双机热备软web HA件日勺目日勺是减少或消灭由软件或硬件故障引起日勺系统停机时间1提供增强日勺系统可用性,可以不必关掉整个群集就可执行维2护方案拓扑图
3.2Mysql+heartbeat方案详细解释本方案采用高可靠性日勺双机热备软件来保证邮件服务日勺高HA稳定性及持续性默认状况下两台机器只有一台机器在工作,mysql当工作机主机出现问题后,系统将自动切换到备机上mysql mysql继续提供服务,而整个过程只需要秒的时间,当主机故30mysql障维修完毕后,服务将自动切换回主机上继续提供服务mysql优缺陷长处安全性、稳定性高,出现故
4.3Mysql+heartbeat障系统将自动切换,从而保证服务日勺持续性缺陷相对成本提高,需要有存储设备,同步由mysql replication于多了存储设备及双机软件、4Mysql+drbd+heartbeat概述此方案除了刚刚简介完日勺外,重要用了
4.1heartbeat这个工具,是一种块设备,可以被用于高可用()DRBD DRBDHA之中.它类似于一种网络功能.当你将数据写入当地文献系RAID-1统时,数据还将会被发送到网络中另一台主机上以相似日勺形式记录在一种文献系统中.当地(主节点)与远程主机(备节点州勺数据可以保证明时同步.当当地系统出现故障时,远程主机上还会保留有一份相似的数据,可以继续使用.方案拓扑图
4.2Mysql+drbd+heartbeat优缺陷长处:安全性、稳定性高,出现
4.3Mysql+drbd+heartbeat故障系统将自动切换,从而保证服务日勺持续性,相对mysql+存储来说对大长处是节省了存储这个硬件设备heartbeat+缺陷主机宕机,切换到备机,备机接管服务,待主机修复mysql完配置机制日勺话会发生脑裂状况,需要手工执行命令进tailback行主机接管、5Mysqlcluster概述
5.1集群是一种分布式设计,目日勺是要到达没有任何单点故MySQL障点因此,任何构成部分都应当拥有自己日勺内存和磁盘任何共享存储方案如网络共享,网络文献系统和设备是不推荐或SAN不支持日勺通过这种冗余设计,声称数据日勺可用度可MySQL以到达99999%O方案拓扑图
5.2Mysqlcluster优缺陷长处安全性、稳定性高,可以在线增长
5.3Mysqlcluster节点,官方声称可用度可到达
99.999%缺陷至少三个节点,对主机日勺数量又规定,无形增长方案成本、对于数据节点规定内存一直、对于引擎只能使用、不支持外键ndb功能、管理复杂
四、存储方案详细实行环节环境Mysql+heartbeat+nfs:192,
168.
184.103as4u7注意关闭防火墙,selinux第一块日勺搭建(在上面)nfs[root@oracle-]#vi/etc/exports()/data
192.
168.184*rw,sync,no_root_squash[root@oracle-]#service nfsstart[root@oracle〜]#expo rtfs-rv#####################################################################第二块日勺安装(主备机同样)mysql#groupadd mysql#useradd-gmysql-s/sbin/nologin-M mysql(至于编译参数诸多,这里不#./configure-prefix=/usr/local/mysql枚举)#make amp;amp;make install#cp support-files/my-large f/etc/my f#cp support-files/mysql.server/etc/rc.d/init.d/mysqld#chmod755/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 amp;*************************************************************************配置库文献搜索途径#Idconfig添加到环境变量中/usr/local/mysql/bin PATHn#echo exportPATH=$PATH:/usr/local/mysql/bingt;gt;/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那条信息)□cast cdlibnet./configuremake amp;amp;make installgroupadd haclientuseradd-g haclienthacluster./ConfigureMe configuremakeamp;amp;make install配置双机文献,一共需要三个文献(手工配置就行)-ha.cf.haresourcesx authkeys#cd/etc/ha.d[root@cm5ha.d]#vi ha.cfdebugfile/var/log/ha-debuglogfile/var/log/ha-loglogfacility localOkeepalive2deadtime30warntime10initdead120auto_failback onnodeas5u3node cm
5.3udpport694。