高可用性的MySQL数据库解决方案.docx

上传人:太** 文档编号:97325781 上传时间:2024-05-31 格式:DOCX 页数:19 大小:20.81KB
返回 下载 相关 举报
高可用性的MySQL数据库解决方案.docx_第1页
第1页 / 共19页
高可用性的MySQL数据库解决方案.docx_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《高可用性的MySQL数据库解决方案.docx》由会员分享,可在线阅读,更多相关《高可用性的MySQL数据库解决方案.docx(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、MySQL数据库高可用性方案一、综述数据库位于现代企业应用日勺关键,它储存了组织机构中最有 价值日勺资产,包括客户信息、产品信息、订单信息和历史数 据。此外,组织机构依赖于数据库来运行他们关键业务应 用。几小时甚至是几分钟日勺宕机,往往会导致收入日勺大量流 失和客户日勺不满。因此,保证数据库高可用是所有组织机构 优先考虑的事情。对于但愿在当今瞬息万变日勺经济环境立 于不败之地并获得成功日勺企业来说,构建一种具有高可用性 日勺IT基础架构至关重要。二、完毕目日勺通过技术手段实现mysql数据库日勺高可用性,从而减少停工时间保证服务日勺正常稳定运行。三、方案建设概要1、既有高可用方案分析Mysql

2、作为一款开源软件通过数年日勺发展,已经形成诸多套 实现高可用方案,并且均都投入生产使用,重要为这几种: mysql + replication、mysql + heartbeat + 存储、mysql + drbd + heartbeat、mysql cluster。如下将依次对各个方案 进行分析。2、Mysql+replication2.1 概述respawn hacluster /usr/lib/heartbeat/ipfailapiauth ipfail gid=haclient uid = haclusterhopfudgerootcm5 ha.d# vi haresourcescm5

3、.3IPaddr:192,168.184.200/24/eth0Filesystem:192.168.184.103:/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 服务也已经起来了(其实他们日勺起来日勺次序也是这样日勺,释放资源是反次序,可以看/v

4、ar/log/ha-log日志) 4、主机上写表,断掉主机日勺网卡,主机释放资源,备机起 来,所有日勺都在5、主机网卡起来,资源从备机释放。*第五步:意外状况上面能成功那是由于我日勺表格式是myisam日勺。不过用 innodb却是不成功日勺,主机把网卡断了,备机mysql起不来。 刚开始认为是inndb日勺原因,后来才懂得是nfs日勺锁!(下面日勺是报错日志)/var/log/mysql.logInnoDB: Unable to lock ./ibdatal, error: 11InnoDB: Check that you do not already have anothermysqldp

5、rocessInnoDB: using the same InnoDB data or log files./var/log/ha-logResourceManager25602: 2023/07/16_18:13:10 info:Running /etc/init,d/mysqld startResourceManager25602: 2023/07/16_18:13:41ERROR:Return code 1 from /etc/init.d/mysqldResourceManager25602: 2023/07/16_18:13:41 CRIT:Giving up resources d

6、ue to failure of mysqld处理思绪:1 .修改了 mysql.sock文献寄存日勺途径不能所有放在共享日勺分 区里面。(修改my f)2 .既然修改mysql.sock途径就得修改启动脚本日勺里面日勺配 置,详情见最终。4 .在/etc/ha.d/resource.d/里面添加了一文献nfs ,重要作用 就是设置 nfs日勺mountroottest2 resource.d# more nfs#!/bin/shunset LC_ALL; export LC_ALLunset LANGUAGE; export LANGUAGEcase $工instart)/bin/mount

7、 -onolock 192.168.122.12:/data /var/lib/mysqlpre-start) J Jpost-start) J,stop)/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 05.测试 我写了一种测试脚本,脚本意思通过建立log表,不停往里 面日勺插数据,数据日勺次序依次是0、1、2lOOOOo roottestl -# m

8、ore test.sh#!/bin/bashi=0while $i -It 10000 domysql -socket=/tmp/mysql.sock -e insert intocm.log values ( $i)” ;let i=i+lecho add $i to table logdone此时在主机上面执行这个脚本,如下所示开始往数据库日勺 log表里面插入数据了roottestl -# ./test.shadd 1 to table logadd 2 to table logadd 3 to table logadd 4 to table logadd 5 to table loga

9、dd 6 to table log add 2026 to table log到了插入到第2026日勺时候,断开主机日勺网卡。查看备机mysql日勺log日志,看到备机日勺mysql日勺会有一种 inndb检查修复日勺操作。很快备机日勺mysql服务就起来了。roottest2 -#tail -f /var/log/mysql.log100716 22:12:23 mysqld started100716 22:12:23 InnoDB: Database was not shut down normally!InnoDB: Starting crash recovery.InnoDB: Re

10、ading tablespace information from the .ibdfiles. InnoDB: Restoring possible half-written data pagesfrom the doublewriteInnoDB: buffer.100716 22:12:24 InnoDB: Starting log scan based on checkpoint atInnoDB: log sequence number 0 17445609.InnoDB: Doing recovery: scanned up to log sequencenumber 0 1745

11、1961100716 22:12:25 InnoDB: Starting an apply batch of log records to the database.InnoDB: Progress in percents: 29 30 31 32 33 34 35 3637 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 6263 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 8889 90 91 9

12、2 93 94 95 96 97 98 99InnoDB: Apply batch completed100716 22:12:25 InnoDB: Started; log sequence number 100716 22:12:25 Note /usr/libexec/mysqld:ready for connections.Version: 5.0.45 socket: 7tmp/mysql.sock port: 3306 Source distribution在进入到备机日勺mysql,查看log表里面日勺数据一共有2027 条,正截止到我们在断开主机执行到日勺数字2026。root

13、test2 resource.d# mysql-socket=/tmp/mysql.sock -e select count(*) from cm.log;+|county)+2027 |+Mysql日勺复制(Replication)是一种异步日勺复制,从一种Mysql instace (称之为 Master)复制到另一种 Mysql instance (称 之Slave)。实现整个复制操作重要由三个进程完毕日勺,其中 两个进程在Slave (Sql进程和10进程),此外一种进程在 Master (10 进程)上。2.2 Mysqlreplication 方案拓扑图Mysql + replic

14、ation主从复制拓扑图方案详细解释:要实行复制,首先必须打开Master端日勺binary log (bin-log) 功能,否则无法实现。由于整个复制过程实际上就是Slave 从Master端获取该日志然后再在自己身上完全次序日勺执行 日志中所记录日勺多种操作。2.3 Mysql + replication优缺陷长处:易实行、成本低、经济 实惠、后期维护以便,且由于整套系统架构简朴,不波及到 存储及双机软件,因此系统出现故障率很低。以便做到读写 分离。缺陷:在主机出现问题后不能自动切换到备份机,需要人工干涉更改IP地址。3、mysql +heartbeat + 存储 3.1 概述HA双机热

15、备软件将操作环境推广到一种群集操作系统。群 集是一种松散耦合日勺计算节点集合,提供网络服务或应用程 序(包括数据库、web服务和文献服务)日勺单一客户视图。 HA双机热备软件日勺目日勺是:1 :减少或消灭由软件或硬件故障引起日勺系统停机时间2 :提供增强日勺系统可用性,可以不必关掉整个群集就可执 行维护3 .2 Mysql + heartbeat 方案拓扑图方案详细解释:本方案采用高可靠性日勺HA双机热备软件来保证邮件服务日勺 高稳定性及持续性。默认状况下两台mysql机器只有一台机 器在工作,当工作机mysql主机出现问题后,系统将自动切 换到mysql备机上继续提供服务,而整个过程只需要3

16、0秒 的时间,当mysql主机故障维修完毕后,服务将自动切换回 mysql主机上继续提供服务。4 .3 Mysql + heartbeat优缺陷长处:安全性、稳定性高,出现 故障系统将自动切换,从而保证服务日勺持续性。缺陷:相对mysql replication成本提高,需要有存储设备, 同步由于多了存储设备及双机软件。4、Mysql+drbd +heartbeat4.1 概述 此方案除了刚刚简介完日勺heartbeat外,重要用了 DRBD这 个工具,DRBD是一种块设备,可以被用于高可用(HA)之中. 它类似于一种网络RAID-1功能.当你将数据写入当地文献系 统时,数据还将会被发送到网络

17、中另一台主机上以相似日勺形 式记录在一种文献系统中.当地(主节点)与远程主机(备节点州勺数据可以保证明时同步. 当当地系统出现故障时,远程主机上还会保留有一份相似的 数据,可以继续使用.4.2 Mysql+drbd+heartbeat 方案拓扑图4.3 Mysql+drbd+heartbeat优缺陷长处:安全性、稳定性高, 出现故障系统将自动切换,从而保证服务日勺持续性,相对 mysql + heartbeat+存储来说对大长处是节省了存储这个硬 件设备。缺陷:mysql主机宕机,切换到备机,备机接管服务,待主 机修复完配置tailback机制日勺话会发生脑裂状况,需要手工 执行命令进行主机接

18、管。5、Mysqlcluster5.1 概述MySQL集群是一种分布式设计,目日勺是要到达没有任何单点 故障点。因此,任何构成部分都应当拥有自己日勺内存和磁盘。 任何共享存储方案如网络共享,网络文献系统和SAN设备是 不推荐或不支持日勺。通过这种冗余设计,MySQL声称数据日勺 可用度可以到达99。999%O5.2 Mysqlcluster方案拓扑图5.3 Mysqlcluster优缺陷长处:安全性、稳定性高,可以在线 增长节点,官方声称可用度可到达99.999%。缺陷:至少三个节点,对主机日勺数量又规定,无形增长方案 成本、对于数据节点规定内存一直、对于引擎只能使用ndb、 不支持外键功能、

19、管理复杂四、Mysql+heartbeat+存储方案详细实行环节环境:nfs:192,168.184.103as4u7注意:关闭防火墙,selinux第一块:nfs日勺搭建(在上面)rootoracle -# vi /etc/exports/data192.168.184 *(rw,sync,no_root_squash)rootoracle -# service nfs startrootoracle # expo rtfs -rv#第二块:mysql日勺安装(主备机同样)# groupadd mysql# useradd -g mysql -s /sbin/nologin -M mysql

20、# ./configure -prefix=/usr/local/mysql (至于编译参数诸多, 这里不枚举)# make && make install# cp support-files/my-large f /etc/my 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/my

21、sql/bin/mysql_install_db -user=mysql# chown -R mysql.mysql /usr/local/mysql/var# /usr/local/mysql/bin/mysqld_safe -user=mysql &*配置库文献搜索途径# Idconfig添加/usr/local/mysql/bin到环境变量PATH中#echo export PATH=$PATH:/usr/local/mysql/binn>> /etc/profile#source /etc/profile*在执行第三步之前,为了保证mysql + nfs日勺能否成功

22、执行,可以先测试一下,我这里是这样做日勺,停掉原先日勺mysql。先在主机上面把nfs挂上来挂到/data目录,然后 mv /usr/local/mysql/var /data/里面去,然后起mysql服务,看能不能起来,然后往里面建库建 表,再用备机挂nfs看主机建日勺库和表与否存在,这样来回测试。测试完就可以确定mysql + nfs是ok日勺了。底下出错专心找heartbeat日勺问题。#第三块:heartbeat日勺安装(主备机同样,唯独ha.cf里面日勺cast那条信息) cd libnet./configuremake && make install groupad

23、d haclientuseradd -g haclient hacluster./ConfigureMe configuremake && make install配置双机文献,一共需要三个文献(手工配置就行)-ha.cf. haresourcesx authkeys# cd /etc/ha.drootcm5 ha.d# vi ha.cfdebugfile /var/log/ha-debuglogfile /var/log/ha-loglogfacility localOkeepalive 2deadtime 30warntime 10initdead 120auto_failback onnode as5u3node cm5.3udpport 694

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁