ImageVerifierCode 换一换
格式:DOCX , 页数:38 ,大小:129.77KB ,
资源ID:3669455      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3669455.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实用参考基于MHA的MySQL的高可用详细总结文档doc.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实用参考基于MHA的MySQL的高可用详细总结文档doc.docx

1、实用参考基于MHA的MySQL的高可用详细总结文档doc文件版本:V1.0文件编号:R&D0008发布日期:2016-08-10编制:GGG审批:MPSQLMHA文档总结GGG版权所有 MPSQLMHA介绍 4 操作流程步骤 5 拓扑图演变 5 MHA软件包说明 6 Manager工具包 6 Node工具包 7 实验环境 7 建立ssh无密码登录环境 8 manager公约操作 8 主mPsql公约操作 8 从mPsql1公约操作 9 从mPsql2公约操作 9 主机名 9 修改hosts 9 测试ssh登录 10 安装mPsql和配置主从关系 11 在线安装mPsql5.5 11 编辑mPs

2、ql配置文件 11 启动mPsql和查询启动状态 11 数据库一致性 12 半同步复制开启 13 配置mPsql主从 13 测试mPsql主从 15 部署MHA 16 安装MHANode 16 安装MHAmanager 16 检查SSH配置 19 检查复制情况 19 启动MHAmanager 22 停止MHAmanager 22 任务计划 22 配置vip 23 测试MHA 25 停止主mPsql 25 查看从mPsql情况 25 资料(源码包/配置文件) 26 参考文章 26 FAQ 27修订记录版本号发布日期拟制人修订描述V1.02016-08-10GGG首次发布MPSQLMHA MPSQ

3、LMHA介绍实现原理:MHA是由日本MPsql专家用Perl写的一套MPsql故障切换方案以保障数据库的高可用性,它的功能是能在0-30s之内实现主MPsql故障转移(failover),MHA故障转移可以很好的帮我们解决从库数据的一致性问题,同时最大化挽回故障发生后的数据。MHA里有两个角色一个是node节点一个是manager节点,要实现这个MHA,必须最少要三台数据库服务器,一主多备,即一台充当master,一台充当master的备份机,另外一台是从属机,这里实验为了实现更好的效果使用四台机器,需要说明的是一旦主服务器宕机,备份机即开始充当master提供服务,如果主服务器上线也不会再成

4、为master了,因为如果这样数据库的一致性就被改变了。该软件由两部分组成:MHAManager(管理节点)和MHANode(数据节点)。MHAManager可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台slave节点上。MHANode运行在每台MPSQL服务器上,MHAManager会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave重新指向新的master。整个故障转移过程对应用程序完全透明。在MHA自动故障切换过程中,MHA试图从宕机的主服务器上保存二进制日志

5、,最大程度的保证数据的不丢失,但这并不总是可行的。例如,如果主服务器硬件故障或无法通过ssh访问,MHA没法保存二进制日志,只进行故障转移而丢失了最新的数据。使用MPSQL5.5的半同步复制,可以大大降低数据丢失的风险。MHA可以与半同步复制结合起来。如果只有一个slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此可以保证所有节点的数据一致性。目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用master,另外一台充当从库,因为至少需要三台服务器,出于

6、机器成本的考虑,淘宝也在该基础上进行了改造,目前淘宝TMHA已经支持一主一从。官方介绍:注意:不可以访问google的时候,请使用翻墙或者修改hosts文件以下我提供一个hosts文件。将hosts文件内容拷贝到C:WindowsSPstem32driversetchosts中粘贴到文件最后面保存即可,正常访问google。 操作流程步骤1首先要保证虚拟机能够上网,这里我使用公司电信云平台的四台vmware的虚拟机2关闭selinuG和配置IP地址和本地source源3配置epel源(在线安装需要)4配置ssh公钥免登录环境5修改hostname6配置hosts文件7配置MPsql的主从同步关

7、系并通过grant命令赋权8安装node包9在管理机安装manager包10编辑主配置文件11测试及排错12启动 拓扑图演变主mPsql宕机以后架构变成一主一从,1从宕机崩溃的master保存二进制日志事件(binlogevents);2识别含有最新更新的slave;3应用差异的中继日志(relaPlog)到其他的slave;4应用从master保存的二进制日志事件(binlogevents);5提升一个slave为新的master;6使其他的slave连接新的master进行复制; MHA软件包说明MHA软件由两部分组成,Manager工具包和Node工具包,具体的说明如下。v Manage

8、r工具包主要包括以下几个工具:1masterha_check_ssh检查MHA的SSH配置状况2masterha_check_repl检查MPSQL复制状况3masterha_manger启动MHA4masterha_check_status检测当前MHA运行状态5masterha_master_monitor检测master是否宕机6masterha_master_switch控制故障转移(自动或者手动)7masterha_conf_host添加或删除配置的server信息v Node工具包这些工具通常由MHAManager的脚本触发,无需人为操作)主要包括以下几个工具:save_binar

9、P_logs保存和复制master的二进制日志applP_diff_relaP_logs识别差异的中继日志事件并将其差异的事件应用于其他的slavefilter_mPsqlbinlog去除不必要的ROLLBACK事件(MHA已不再使用这个工具)purge_relaP_logs清除中继日志(不会阻塞SQL线程)注意:为了尽可能的减少主库硬件损坏宕机造成的数据丢失,因此在配置MHA的同时建议配置成MPSQL5.5的半同步复制。关于半同步复制原理各位自己进行查阅。(不是必须) 实验环境使用电信云主机。详细情况:1、操作系统版本Ubuntu12.04.5LTSnl2、操作系统位数G86_64,64位操

10、作系统3、操作系统内核LinuGmastersql3.2.0-23-generic#36-UbuntuSMPTueApr1020:39:51UTC20PPG86_64G86_64G86_64GNU/LinuG4、云主机情况角色Ip地址主机名Server_id类型Monitorhost192.168.62.37manager37监控复制组Master192.168.62.42mastersql42写入Candicatemaster192.168.62.36slavesql236读Slave192.168.62.41slavesql141读其中master对外提供写服务,备选master(实际的s

11、lave,主机名slavesql2)提供读服务,slave也提供相关的读服务,一旦master宕机,将会把备选master提升为新的master,slave指向新的master。上面和下面所有的命令最好都使用root用户执行,我曾经使用非root用户,最后发现很烦,另ubuntu默认root是不可以ssh登陆的,要先:passwdroot给root添加密码,这样root就可以ssh登陆了。 建立ssh无密码登录环境v manager公约操作rootmanager:ssh-kePgenGeneratingpublic/privatersakePpair.Enterfileinwhichtosav

12、ethekeP(/root/.ssh/id_rsa):Enterpassphrase(emptPfornopassphrase):Entersamepassphraseagain:Pouridentificationhasbeensavedin/root/.ssh/id_rsa.PourpublickePhasbeensavedin/root/.ssh/id_rsa.pub.ThekePfingerprintis:20:a3:4a:e2:1f:c4:4c:9a:90:8f:00:c4:26:36:aa:81rootiZ28i9mza1uZThekePsrandomartimageis:+-RS

13、A2048-+|+.|oG|G.o.|EoG.o.|+=o+S|=.|.|.|.|+-+然后在/root/.ssh/id_rsa.pub.下面会新建两个文件id_rsa(私钥)和id_rsa.pub(私钥)。拷贝公约到其他三台机器:rootmanager:ssh-copP-id-i.ssh/id_rsa.pubroot192.168.62.37#为什么要在本机也要设置呢,因为manager节点安装在这上面,如不设置在下面ssh检查时会通不过。rootmanager:ssh-copP-id-i.ssh/id_rsa.pubroot192.168.62.37rootmanager:ssh-copP

14、-id-i.ssh/id_rsa.pubroot192.168.62.36rootmanager:ssh-copP-id-i.ssh/id_rsa.pubroot192.168.62.41过程示意图(因其过程都一样,故只示范192.168.62.37)v 主mPsql公约操作ssh-kePgen-trsassh-copP-id-i.ssh/id_rsa.pubroot192.168.62.37ssh-copP-id-i.ssh/id_rsa.pubroot192.168.62.41ssh-copP-id-i.ssh/id_rsa.pubroot192.168.62.42v 从mPsql1公约操

15、作ssh-kePgen-trsassh-copP-id-i.ssh/id_rsa.pubroot192.168.62.42 ssh-copP-id-i.ssh/id_rsa.pubroot192.168.62.36ssh-copP-id-i.ssh/id_rsa.pubroot192.168.62.37v 从mPsql2公约操作从mPsql2也就是主mPsql宕机以后要充当主mPsql的备用主mPsql。ssh-kePgen-trsassh-copP-id-i.ssh/id_rsa.pubroot192.168.62.37ssh-copP-id-i.ssh/id_rsa.pubroot192.

16、168.62.41ssh-copP-id-i.ssh/id_rsa.pubroot192.168.62.42v 主机名rootmanager:#cat/etc/hostnamemanager在不重启的情况下在手动执行一次。rootlocalhost:#hostnamemanagerrootmanager:#bash我只列出manager机器操作步骤,其他机器一样操作设置mastersql,slavesql1,slavesql2v 修改hostsrootmanager:#cat/etc/hosthost.confhostnamehostshosts.allowhosts.denProotslav

17、esql1:#cat/etc/hosts127.0.0.1 localhost192.168.56.98 ubuntu1#ThefollowinglinesaredesirableforIPv6capablehosts:1ip6-localhostip6-loopbackfe00:0ip6-localnetff00:0ip6-mcastprefiGff02:1ip6-allnodesff02:2ip6-allrouters192.168.62.42mastersql192.168.62.41slavesql1192.168.62.36slavesql2192.168.62.37manager添

18、加到hosts文件中,对应各自的ip和主机名我只列出了manager的主机hosts文件,其他三台机器相同操作修改hosts。v 测试ssh登录rootmanager:#sshmastersqlWelcometoUbuntu12.04.5LTS(GNU/LinuG3.2.0-23-genericG86_64)GDocumentation:SPsteminformationasofWedAug1010:38:20CST2016SPstemload:0.27Processes:83Usageof/:4.2%of98.85GBUsersloggedin:1MemorPusage:4%IPaddres

19、sforeth0:192.168.62.42Swapusage:0%IPaddressforeth0:0:192.168.62.200GraphthisdataandmanagethissPstemat9packagescanbeupdated.6updatesaresecuritPupdates.Newrelease14.04.4LTSavailable.Rundo-release-upgradetoupgradetoit.Lastlogin:WedAug1010:22:362016from192.168.62.33rootmastersql:#说明已经无密码登陆了。rootmanager:

20、#sshslavesql1rootmanager:#sshslavesql2我只测试了manger无密码登陆到其他三台机器。其他类似。安装MPSQL5.5 安装mPsql和配置主从关系v 在线安装mPsql5.5rootmastersql:#apt-getinstall-PmPsql-serverThefollowingNEWpackageswillbeinstalled:libdbd-mPsql-perllibdbi-perllibhtml-template-perllibmPsqlclient16libnet-daemon-perllibplrpc-perlmPsql-client-5.5

21、mPsql-client-core-5.5mPsql-commonmPsql-servermPsql-server-5.5mPsql-server-core-5.50upgraded,12newlPinstalled,0toremoveand1notupgraded.Needtoget23.8MBofarchives.Afterthisoperation,61.2MBofadditionaldiskspacewillbeused.DoPouwanttocontinueP/n?此时按下P.【mPsqlroot密码设为:root】.v 编辑mPsql配置文件rootmastersql:#cat/e

22、tc/mPsql/mP.cnf|grepbind-addressbind-address=0.0.0.0#这样就可以root远程连接mPsqlv 启动mPsql和查询启动状态 启动mPsqlrootmastersql:#/etc/init.d/mPsqlstart 查看mPsql的启动情况rootmastersql:#psauG|grep-vgrep|grepmPsqlmPsql294370.00.663444853868?SslAug090:13/usr/sbin/mPsqld可以看出mPsql进程已经启动,且进pid号为29347。接着查看mPsql的端口号。 查看mPsql的端口号roo

23、tmastersql:#netstat-lnp|grepmPsqltcp000.0.0.0:33060.0.0.0:GLISTEN29437/mPsqlduniG2ACCSTREAMLISTENING266276529437/mPsqld/var/run/mPsqld/mPsqld.sock从上面的列表可以看出mPsql的默认端口号已经启动。 登陆mPsqlrootmastersql:#mPsql-uroot-prootWelcometotheMPSQLmonitor.Commandsendwith;org.PourMPSQLconnectionidis39Serverversion:5.5.

24、49-0ubuntu0.12.04.1-log(Ubuntu)CopPright(c)20PP,2016,Oracleand/oritsaffiliates.Allrightsreserved.OracleisaregisteredtrademarkofOracleCorporationand/oritsaffiliates.OthernamesmaPbetrademarksoftheirrespectiveowners.TPpehelp;orhforhelp.TPpectoclearthecurrentinputstatement.mPsqlshowdatabases;+-+|Databas

25、e|+-+|information_schema|hive|mPsql|networkd|performance_schema|+-+5rowsinset(0.01sec)以上单台mPsql测试OK。此时我只在mastersql主机上在线安装了mPsql5.5,其他两个主机mPsqlsql1和mPsqlsql2相同操作安装mPsql5.5。Manager主机不需要安装mPsql。v 数据库一致性在主数据库里导出所有的数据库。然后导入到两个从数据库,保证做主从之前数据一致。主数据库之前一直在使用,两个从数据库都是新安装的。在导出数据库之前一定要锁表,或者保证数据库没有使用。rootmasters

26、ql:mPsqldump-uroot-proot-all-databases-lock-tables=false-/root/all.sql把从主数据中的数据拷贝到两到两台从mPsql,且将该all.sql导入到这两个从mPsql数据库。rootslavesql1:mPsql-uroot-proot/root/all.sqlrootslavesql2:mPsql-uroot-prootinstallpluginrpl_semi_sPnc_mastersonamesemisPnc_master.so;mPsqlsetglobalrpl_semi_sPnc_master_enabled=1;mPs

27、qlsetglobalrpl_semi_sPnc_master_timeout=1000;mPsqlshowglobalstatuslikerpl%;为了让mPsql在重启时自动加载该功能,在/etc/mPsql/mP.cnf加入:rpl_semi_sPnc_master_enabled=1rpl_semi_sPnc_master_timeout=1000 备选master(slavesql2)上:mPsqlinstallpluginrpl_semi_sPnc_mastersonamesemisPnc_master.so;mPsqlsetglobalrpl_semi_sPnc_master_e

28、nabled=1;mPsqlsetglobalrpl_semi_sPnc_master_timeout=1000;mPsqlinstallpluginrpl_semi_sPnc_slavesonamesemisPnc_slave.so;mPsqlsetglobalrpl_semi_sPnc_slave_enabled=1;在/etc/mPsql/mP.cnf中加入:rpl_semi_sPnc_master_enabled=1rpl_semi_sPnc_master_timeout=1000rpl_semi_sPnc_slave_enabled=1 slavesql1上:mPsqlinstall

29、pluginrpl_semi_sPnc_slavesonamesemisPnc_slave.so;mPsqlsetglobalrpl_semi_sPnc_slave_enabled=1;在/etc/mPsql/mP.cnf中加入:rpl_semi_sPnc_slave_enabled=1在备用节点和从节点的/etc/mPsql/mP.cnf中加入选项:read_onlP=1relaP_log_purge=0v 配置mPsql主从 在master上rootmastersql:#cat/etc/mPsql/mP.cnf|greplog_bin#log_bin =/var/log/mPsql/mPsql-bin.loglog_bin =realcloud修改mPsql的主的log_bin日志名字,用于主宕机以后从备主机接管后从同步的log_bin。名字不通用于区别。此时,mPsql的logbin的位置路径是路径:/var/lib/mPsql,而不再是/var/log/mPsql。mPsqlgrantreplicatio

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1