MySQL数据库高可用性方案Word格式文档下载.docx
- 文档编号:18956369
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:10
- 大小:19.84KB
MySQL数据库高可用性方案Word格式文档下载.docx
《MySQL数据库高可用性方案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《MySQL数据库高可用性方案Word格式文档下载.docx(10页珍藏版)》请在冰豆网上搜索。
3、mysql+heartbeat+存储3.1概述
HA双机热备软件将操作环境推广到一种群集操作系统。
群集是一种松散耦合的计算节点集合,提供网络服务或应用程序(包括数据库、web服务和文件服务)的单一客户视图。
HA双机热备软件的目标是:
1:
减少或消灭由软件或硬件故障引起的系统停机时间
2:
提供增强的系统可用性,能够不必关掉整个群集就可执行维护
3.2Mysql+heartbeat方案拓扑图
本方案采用高可靠性的HA双机热备软件来保证邮件服务的高稳定性及连续性。
默认情况下两台mysql机器只有一台机器在工作,当工作机mysql主机出现问题后,系统将自动切换到mysql备机上继续提供服务,而整个过程只需要30秒的时间,当mysql主机故障维修完毕后,服务将自动切换回mysql主机上继续提供服务。
3.3Mysql+heartbeat优缺点优点:
安全性、稳定性高,出现故障系统将自动切换,从而保证服务的连续性。
相对mysqlreplication成本提高,需要有存储设备,同时由于多了存储设备及双机软件。
4、Mysql+drbd+heartbeat
4.1概述
此方案除了刚刚介绍完的heartbeat外,主要用了DRBD这个工具,DRBD是一种块设备,可以被用于高可用(HA)之中.它类似于一个网络RAID-1功能.当你将数据写入本地文件系统时,数据还将会被发送到网络中另一台主机上.以相同的形式记录在一个文件系统中.
本地(主节点)与远程主机(备节点)的数据可以保证实时同步.当本地系统出现故障时,远程主机上还会保留有一份相同的数据,可以继续使用.
4.2Mysql+drbd+heartbeat方案拓扑图
4.3Mysql+drbd+heartbeat优缺点优点:
安全性、稳定性高,出现故障系统将自动切换,从而保证服务的连续性,相对mysql+heartbeat+存储来说对大优点是节约了存储这个硬件设备。
mysql主机宕机,切换到备机,备机接管服务,待主机修复完配置failback机制的话会发生脑裂情况,需要手工执行命令进行主机接管。
5、Mysqlcluster
5.1概述
MySQL集群是一种分布式设计,目标是要达到没有任何单点故障点。
因此,任何组成部分都应该拥有自己的内存和磁盘。
任何共享存储方案如网络共享,网络文件系统和SAN设备是不推荐或不支持的。
通过这种冗余设计,MySQL声称数据的可用度可以达到99。
999%。
5.2Mysqlcluster方案拓扑图
5.3Mysqlcluster优缺点优点:
安全性、稳定性高,可以在线增加节点,官方声称可用度可达到99.999%。
至少三个节点,对主机的数量又要求,无形增加方案成本、对于数据节点要求内存一直、对于引擎只能使用ndb、不支持外键功能、管理复杂
四、Mysql+heartbeat+存储方案具体实施步骤环境:
nfs:
192.168.184.103as4u7
主机-cm5.3:
192.168.184.12410.0.0.1
备机-as5u3:
192.168.184.10210.0.0.2
注意:
关闭防火墙,selinux
第一块:
nfs的搭建(在192.168.184.103上面)
[root@oracle~]#vi/etc/exports
/data192.168.184.*(rw,sync,no_root_squash)
[root@oracle~]#servicenfsstart
[root@oracle~]#exportfs-rv
#####################################################################
第二块:
mysql的安装(主备机一样)
#tar-zxvfmysql-5.0.67.tar.gz
#cdmysql-5.0.67
#groupaddmysql
#useradd-gmysql-s/sbin/nologin-Mmysql
#./configure–prefix=/usr/local/mysql(至于编译参数很多,这里不枚举)
#make&
amp;
&
makeinstall
#cpsupport-files/my-f/etc/f
#cpsupport-files/mysql.server/etc/rc.d/init.d/mysqld
#chmod755/etc/rc.d/init.d/mysqld
加入服务队列:
#chkconfig–addmysqld
#chown-Rmysql.mysql/usr/local/mysql/
#/usr/local/mysql/bin/mysql_install_db–user=mysql
#chown-Rmysql.mysql/usr/local/mysql/var
#/usr/local/mysql/bin/mysqld_safe–user=mysql&
*************************************************************************
配置库文件搜索路径
#echo“/usr/local/mysql/lib/mysql”&
gt;
/etc/ld.so.conf
#ldconfig
添加/usr/local/mysql/bin到环境变量PATH中
#echo“exportPATH=$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-zxvflibnet.tar.gz
cdlibnet
./configure
make&
tar-zxvfheartbeat-2.1.3.tar.gz
cdheartbeat-2.1.3
groupaddhaclient
useradd-ghaclienthacluster
./ConfigureMeconfigure
配置双机文件,一共需要三个文件(手工配置就行)–ha.cf、haresources、authkeys
#cd/etc/ha.d
[root@cm5ha.d]#viha.cf
debugfile/var/log/ha-debug
logfile/var/log/ha-log
logfacilitylocal0
keepalive2
deadtime30
warntime10
initdead120
auto_failbackon
nodeas5u3
nodecm5.3
udpport694
ucasteth010.0.0.2
ping_groupgroup1192.168.184.102192.168.184.124
respawnhacluster/usr/lib/heartbeat/ipfail
apiauthipfailgid=haclientuid=hacluster
hopfudge
[root@cm5ha.d]#viharesources
cm5.3IPaddr:
:
192.168.184.200/24/eth0Filesystem:
192.168.184.103:
/data:
nfsmysqld
[root@cm5ha.d]#viauthkeys
auth1
1crc
[root@cm5ha.d]#chmod600authkeys
##########################################################
第四步:
测试
1、先停掉主备机的上面的mysql,卸掉nfs的挂载。
2、/etc/init.d/heartbeatstart(主备机双执行)
3、可以看到主机的虚ip已经起来了、nfs也挂上来了、mysql服务也已经起来了(其实他们的起来的顺序也
是这样的,释放资源是反顺序,可以看/var/log/ha-log日志)
4、主机上写表,断掉主机的网卡,主机释放资源,备机起来,所有的都在
5、主机网卡起来,资源从备机释放。
********************************************************************************************************************************************************************
第五步:
意外情况
上面能成功那是因为我的表格式是myisam的。
但是用innodb却是不成功的,主机把网卡断了,备机mysql起不来。
刚开始以为是inndb的原因,后来才知道是nfs的锁(下面的是报错日志)
/var/log/mysql.log
InnoDB:
Unabletolock./ibdata1,error:
11
Checkthatyoudonotalreadyhaveanothermysqldprocess
usingthesameInnoDBdataorlogfiles.
/var/log/ha-log
ResourceManager[25602]:
2010/07/16_18:
13:
10info:
Running/etc/init.d/mysqldstart
41ERROR:
Returncode1from/etc/init.d/mysqld
41CRIT:
Givingupresourcesduetofailureofmysqld
解决思路:
1.修改了mysql.sock文件存放的路径不能全部放在共享的分区里面。
(修改f)
2.既然修改mysql.sock路径就得修改启动脚本的里面的配置,详情见最后。
3.修改/etc/ha.d/haresource-------test1IPaddr:
192.168.122.13/24/eth0nfsmysqld
4.在/etc/ha.d/resource.d/里面添加了一文件nfs,主要作用就是设置nfs的mount
[root@test2resource.d]#morenfs
#!
/bin/sh
unsetLC_ALL;
exportLC_ALL
unsetLANGUAGE;
exportLANGUAGE
case“$1″in
‘start’)
/bin/mount-onolock192.168.122.12:
/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}”
esac
exit0
5.测试
我写了一个测试脚本,脚本意思通过建立log表,不断往里面的插数据,数据的顺序依次是0、1、2……10000。
[root@test1~]#moretest.sh
/bin/bash
i=0
while[$i-lt10000]
do
mysql--socket=/tmp/mysql.sock-e“insertintocm.logvalues(“$i”)”;
leti=i+1
echo“add$itotablelog”
done
此时在主机上面执行这个脚本,如下所示开始往数据库的log表里面插入数据了
[root@test1~]#./test.sh
add1totablelog
add2totablelog
add3totablelog
add4totablelog
add5totablelog
add6totablelog
……
add2026totablelog
到了插入到第2026的时候,断开主机的网卡。
查看备机mysql的log日志,看到备机的mysql的会有一个inndb检查修复的操作。
很快备机的mysql服务就起来了。
[root@test2~]#tail–f/var/log/mysql.log
10071622:
12:
23mysqldstarted
23InnoDB:
Databasewasnotshutdownnormally!
Startingcrashrecovery.
Readingtablespaceinformationfromthe.ibdfiles...
Restoringpossiblehalf-writtendatapagesfromthedoublewrite
buffer...
24InnoDB:
Startinglogscanbasedoncheckpointat
logsequencenumber017445609.
Doingrecovery:
scanneduptologsequencenumber017451961
25InnoDB:
Startinganapplybatchoflogrecordstothedatabase...
Progressinpercents:
2930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
Applybatchcompleted
Started;
logsequencenumber017451961
25[Note]/usr/libexec/mysqld:
readyforconnections.
Version:
’5.0.45′socket:
‘/tmp/mysql.sock’port:
3306Sourcedistribution
在进入到备机的mysql,查看log表里面的数据一共有2027条,正截止到我们在断开主机执行到的数字2026。
[root@test2resource.d]#mysql--socket=/tmp/mysql.sock-e“selectcount(*)fromcm.log”;
+----------+
|count(*)|
|2027|
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MySQL 数据库 可用性 方案