应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

MySQL高可用实战(MHA)

  一、环境准备
  IP
  主机名
  角色
  OS
  192。168。182。110
  local168182110
  mysqlmaster、MHAmanager、MHAnode
  Centos7
  192。168。182。111
  local168182111
  mysqlslave1、MHAnode
  Centos7
  192。168。182。112
  local168182112
  mysqlslave2、MHAnode
  Centos7
  【温馨提示】MHAmanager最好是单独一台机器部署,尽量不要混部。1、配置hosts192。168。182。110local168182110192。168。182。111local168182111192。168。182。112local1681821122、关闭防火墙systemctlstopfirewalldsystemctldisablefirewalld3、禁用SELinux临时关闭;关闭swap主要是为了性能考虑swapoffa可以通过这个命令查看swap是否关闭了free永久关闭sedris。swap。etcfstab4、关闭swap临时关闭;关闭swap主要是为了性能考虑swapoffa可以通过这个命令查看swap是否关闭了free永久关闭sedris。swap。etcfstab5、配置互信sshkeygensshcopyidlocal168182110sshcopyidlocal168182111sshcopyidlocal168182112二、mysql主从部署1)安装mysql(MySQL5。7。24)添加mysqlserver源mkdirpoptmysqlmha;cdoptmysqlmhawgethttps:dev。mysql。comgetmysql80communityreleaseel73。noarch。rpmrpmivhmysql80communityreleaseel73。noarch。rpm解决报错如,CheckthatthecorrectkeyURLsareconfiguredforthisrepository。rpmimporthttp:repo。mysql。comRPMGPGKEYmysql2022更新yum缓存yummakecache使用yum查看MySQL的仓库,查看MySQL的版本yumrepolistallgrepmysql安装yumconfigmanageryumyinstallyumutils修改为需要的版本,即禁用yum存储库中mysql不需要的版本和开启需要的版本yumconfigmanagerdisablemysql80communityyumconfigmanagerenablemysql57community先禁用本地的MySQL模块,要不然找不到mysqlcommunityserver,默认mysqlserver是8。0的版本yummoduledisablemysql开始安装mysqlserver和mysqlclientyuminstallmysqlcommunityservermysqly2)mysql节点配置1、修改配置文件
  修改mysql的所有节点mysql的主配置文件(etcmy。cnf)
  Master节点serverid1logbinmysqlbinbinlogformatmixedlogslaveupdatestrue
  Slave1,Slave2节点serverid2(slave3节点,则serverid3。三台节点serverid不可重复)logbinmysqlbinrelaylogrelaylogbinrelaylogindexslaverelaybin。index3、启动服务systemctlstartmysqld5、设置root密码默认密码greptemporarypasswordvarlogmysqld。logmysqlurootp重置root密码setglobalvalidatepasswordpolicy0;setglobalvalidatepasswordlength1;ALTERuserrootlocalhostIDENTIFIEDBY123456;3)配置mysql一主两从1、所有数据库节点进行mysql授权登录客户端mysqlurootp123456setglobalvalidatepasswordpolicy0;setglobalvalidatepasswordlength1;从库进行同步使用的用户grantreplicationslaveon。tomyslave192。168。182。identifiedby123456;MHAmanager使用grantallon。tomha192。168。182。identifiedby123456;防止从库通过主机名连接不上主库grantallon。tomhalocal168182110identifiedby123456;grantallon。tomhalocal168182111identifiedby123456;grantallon。tomhalocal168182112identifiedby123456;FLUSHPRIVILEGES;2、在主库查看二进制文件和偏移量(master节点)mysqlshowmasterstatus;
  3、slave1,slave2执行同步操作changemastertomasterhost192。168。182。110,masterusermyslave,masterpassword123456,masterlogfilemysqlbin。000002,masterlogpos1875;startslave;两个slave节点都需要IO线程和SQL线程为yes状态showslavestatusG。。。。。。。。。。。SlaveIORunning:YesSlaveSQLRunning:Yes。。。。。。。。。
  4、两个从库都设置为只读模式通过全局变量readonly设置。设置值为1,或者on,表示开启。设置值为0或者off,表示关闭mysqlsetglobalreadonly1;showglobalvariableslikereadonly;【注意】得退出客户端再登录才会生效4)测试主从插入数据测试主从同步在master节点添加数据createdatabasetest01;createtabletest01。test(idint);insertintotest01。testvalues(1);在slave节点查数据selectfromtest01。test;三、MHA概述
  MHA(MasterHighAvailability)是由日本人yoshinorim开发的一款成熟且开源的MySQL高可用程序,它实现了MySQL主从环境下MASTER宕机后能够自动进行单次故障转移的功能,其本身由perl语言编写,安装方便使用简单。
  MHA官网:https:code。google。comarchivepmysqlmasterha
  GitHub地址:https:github。comyoshinorimmha4mysqlmanager
  文档:https:github。comyoshinorimmha4mysqlmanagerwiki四、MHA架构
  当一个master崩溃时,MHA会恢复下面的restslave。
  五、MHA组件
  MHA由MHAManager和MHANode组成,如下所示:
  MHAManager有监控MySQLmaster、控制master故障转移等管理程序。MHA节点具有故障转移辅助脚本,例如解析MySQL二进制中继日志,识别中继日志位置,中继日志应从哪个位置应用到其他从站,将事件应用到目标从站等。MHA节点在每个MySQL服务器上运行。当MHAManager进行故障转移时,MHAManager通过SSH连接MHANode并在需要时执行MHANode命令。六、安装MHA软件
  下载地址:https:github。comyoshinorimmha4mysqlmanagerwikiDownloads1)所有节点安装MHAnode软件
  下载地址:https:github。comyoshinorimmha4mysqlnodereleasestagv0。58cdoptmysqlmha注意,所有节点都需要安装MHAnode1、先安装相关依赖:yuminstallperlDBDMySQLy下载wgethttps:github。comyoshinorimmha4mysqlnodereleasesdownloadv0。58mha4mysqlnode0。580。el7。centos。noarch。rpm2、安装mha:rpmivhmha4mysqlnode0。580。el7。centos。noarch。rpm也可以使用下面方式安装yuminstallymha4mysqlnode0。580。el7。centos。noarch。rpm2)安装mhamanager(110节点上)1、安装mhamanager先安装好依赖yumyinstallepelreleaseyumyinstallperlConfigTinyperlTimeHiResperlParallelForkManagerperlLogDispatchperlDBDMySQLncftphttps:github。comyoshinorimmha4mysqlmanagerreleasestagv0。58wgethttps:github。comyoshinorimmha4mysqlmanagerreleasesdownloadv0。58mha4mysqlmanager0。580。el7。centos。noarch。rpm安装rpmivhmha4mysqlmanager0。580。el7。centos。noarch。rpm2、编写masteripfailover脚本
  optmysqlmhamasteripfailover,下面配置文件中会用到!usrbinenvperlusestrict;usewarningsFATALall;useGetopt::Long;my(command,origmasterhost,origmasterip,sshuser,origmasterport,newmasterhost,newmasterip,newmasterport,origmastersshport,newmastersshport,newmasteruser,newmasterpassword);这里定义的虚拟IP配置要注意,这个ip必须要与你自己的集群在同一个网段,否则无效myvip192。168。182。20124;mykey1;这里的网卡名称ens33需要根据你机器的网卡名称进行修改如果多台机器直接的网卡名称不统一,有两种方式,一个是改脚本,二是把网卡名称修改成统一我这边实际情况是修改成统一的网卡名称mysshstartvipsudosbinifconfigens33:keyvip;mysshstopvipsudosbinifconfigens33:keydown;mysshBcastarpsudosbinarpingIbond0c3Avip;GetOptions(commandscommand,sshuserssshuser,origmasterhostsorigmasterhost,origmasteripsorigmasterip,origmasterportiorigmasterport,origmastersshportiorigmastersshport,newmasterhostsnewmasterhost,newmasteripsnewmasterip,newmasterportinewmasterport,newmastersshportnewmastersshport,newmasterusernewmasteruser,newmasterpasswordnewmasterpassword);exitmain();submain{sshuserdefinedsshuser?sshuser:root;printINSCRIPTTESTsshusersshstopvipsshusersshstartvip;if(commandeqstopcommandeqstopssh){myexitcode1;eval{printDisablingtheVIPonoldmaster:origmasterhost;stopvip();exitcode0;};if(){warnGotError:;exitexitcode;}exitexitcode;}elsif(commandeqstart){myexitcode10;eval{printEnablingtheVIPviponthenewmasternewmasterhost;startvip();startarp();exitcode0;};if(){warn;exitexitcode;}exitexitcode;}elsif(commandeqstatus){printCheckingtheStatusofthescript。。OK;exit0;}else{usage();exit1;}}substartvip(){sshsshusernewmasterhostsshstartvip;}substopvip(){sshsshuserorigmasterhostsshstopvip;}substartarp(){sshsshusernewmasterhostsshBcastarp;}subusage{printUsage:masteripfailovercommandstartstopstopsshstatussshuseruserorigmasterhosthostorigmasteripiporigmasterportportnewmasterhosthostnewmasteripipnewmasterportport;}
  给该脚本添加可执行权限:chmodaxoptmysqlmhamasteripfailover3、配置(manager节点)创建相关目录(所有节点)mkdirpoptmysqlmhamhanodemanager节点mkdirpoptmysqlmhamha编写配置文件vimoptmysqlmhamysqlmha。cnf内容如下:〔serverdefault〕mha访问数据库的账号与密码usermhapassword123456port3306指定mha的工作目录managerworkdiroptmysqlmhamha指定管理ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a路径managerlogoptmysqlmhamanager。log指定master节点存放binlog的ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a文件的目录logbinmysqlbin默认是在varlibmysqlmasterbinlogdirvarlibmysql指定mha在远程节点上的工作目录remoteworkdiroptmysqlmhamhanode指定主从复制的mysq用户和密码replusermyslavereplpassword123456指定检测间隔时间pinginterval1指定一个脚本,该脚本实现了在主从切换之后,将虚拟ip漂移到新的master上masteripfailoverscriptoptmysqlmhamasteripfailover指定检查的从服务器IP地址。有几个,就用s选项加几个secondarycheckscriptusrbinmasterhasecondarychecks192。168。182。111s192。168。182。112用于故障切换的时候发送邮件提醒reportscriptdata1mysqlmhasendmail〔server1〕hostname192。168。182。110port3306sshuserrootcandidatemaster1checkrepldelay0〔server2〕hostname192。168。182。111port3306sshuserrootcandidatemaster1checkrepldelay0〔server3〕hostname192。168。182。112port3306sshuserrootcandidatemaster1checkrepldelay0
  candidatemaster1
  设置为候选master,设置该参数以后,发生主从切换以后将会将此从库提升为主库,即使这个从库不是集群中最新的slave,nomaster1正好相反
  checkrepldelay0
  默认情况下如果一个slave落后master超过100M的relaylogs的话,MHA将不会选择该slave作为一个新的master,因为对于这个slave的恢复需要花费很长时间;通过设置checkrepldelay0,MHA触发切换在选择一个新的master的时候将会忽略复制延时,这个参数对于设置了candidatemaster1的主机非常有用,因为这个候选主在切换的过程中一定是新的master5)在master上手动启动虚拟iP
  第一次配置需要在master节点上手动启动虚拟IP,标签要和masteripfaioverl配置文件中mykey1;一样sbinifconfigens33:1192。168。182。201246)在manager节点测试ssh无密认证masterhachecksshconfoptmysqlmhamysqlmha。cnf
  7)在manager节点上测试mysql主从情况masterhacheckreplconfoptmysqlmhamysqlmha。cnf
  8)在manage上启动mhanohupmasterhamanagerconfoptmysqlmhamysqlmha。cnfremovedeadmasterconfignorelastfailoverdevnullvarlogmhamanager。log21removedeadmasterconf:该参数代表当发生主从切换后,老的主库的ip将会从配置文件中移除。mangerlog:日志存放位置。ignorelastfailover:在缺省情况下,如果MHA检测到连续发生宕机,且两次宕机间隔不足8小时的话,则不会进行Failover,之所以这样限制是为了避免pingpong效应。该参数代表忽略上次MHA触发切换产生的文件,默认情况下,MHA发生切换后会在日志记目录,也就是上面设置的日志app1。failover。complete文件,下次再次切换的时候如果发现该目录下存在该文件将不允许触发切换,除非在第一次切换后收到删除该文件,为了方便,这里设置为ignorelastfailover。9)查看MHA状态masterhacheckstatusconfoptmysqlmhamysqlmha。cnf
  10)查看MHA日志文件catoptmysqlmhamanager。loggrepcurrentmaster11)manager节点关闭manager服务masterhastopconfoptmysqlmhamysqlmha。cnf七、故障模拟与恢复1)停掉mysqlmastersystemctlstopmysqld2)查看主备节点查看虚拟ipipa
  登录mysql查看主从关系mysqlurootp123456发现111这个节点已经变成主节点了
  3)故障恢复
  先在当前的主库服务器slave1上查看二进制日志和同步点mysqlurootp123456showmasterstatus;
  再在原master服务器上执行同步操作先恢复mysql服务systemctlstartmysqldmysqlurootp123456指向新的master节点进行同步changemastertomasterhost192。168。182。111,masterusermyslave,masterpassword123456,masterlogfilemysqlbin。000003,masterlogpos1948;startslave;这里需要过一段时间再看同步状态showslavestatusG
  MySQL高可用实战就到这了,有疑问的小伙伴欢迎给我留言哦

施瓦辛格靠外家上位,和胖保姆出轨20年,私生子只比亲生子大五在美国的加州,流传着这样一段传说:这个世界,没有人比加州州长更会演戏,也没有任何一个演员,拥有加州州长的权利。这段传说的原因,是因为当时担任加州州长的人,是赫赫有名的施瓦……豪爽豪迈的男宝宝,适合这些赏心悦目的名字家人们为宝宝起名一方面想要能够体现父母希望孩子平安喜乐、福瑞之气绵长的盼望,另一方面也希冀孩子聪明睿智、才华横溢、风趣儒雅,在人生之路上顺利、安康地走向成功。我们为各位父母准备……杀手锏失效,张帅首盘抢7告负无缘决赛!2数据揭示对手有多么可北京时间2022年9月24日上午11时,东京网球公开赛进入半决赛,中国一姐张帅对阵俄罗斯一姐萨姆索诺娃。双方在8强中分别击败了强大对手马尔蒂奇和穆古鲁扎,尤其张帅首胜对手,让人……央视主播邢质斌28年0失误,退休后被疑晚节不保她做了什么《新闻联播》开播44年来,陪伴过无数观众了解国内外的时事新闻。每到晚上七点,电视机中传来熟悉的旋律和声音,我们就知道今天的主播是谁了。这些耳熟能详的声音,对于观众的……iOS专题iOS16。2正式版来了,你的手机能升级吗2022年12月14号,苹果正式向用户推出了全新的iOS16。2正式版本。这个版本作为很多用户比较期待的大版本的跨越,让我们猜测这款系统它是否会给我们带来一些不一样的体验,我们……sanag塞那X6S暖冬系列无线户外蓝牙音箱,高颜值蓝牙音箱俗话说得好读万卷书,不如行万里路。只有走出去,我们才能得到更多信息,学习到更多东西。有条件的我们可以远途旅行,条件不允许的也可以短途旅行。三五好友在一起聚会,谈谈心,聊聊天,都……OPPO马里亚纳MariSiliconY自研芯片亮相,用于蓝IT之家12月13日消息,OPPO此前宣布第二颗自研芯片将于12月14日在未来科技大会2022(OPPOINNODAY2022)上正式发布。在发布之前,OPPO印度官方已……广西工业振兴特派员助企纾困激发发展活力为企业把脉问诊、解决企业急难愁盼问题、推动惠企政策落地近日,许多广西工业振兴特派员活跃在当地生产发展一线。在广西柳州市鹿寨县柳化泰润新材料有限公司的生产车间内,数条生产线……又大又白谁不爱?七彩虹Z790GAMINGFROZENDDR随着Intel发布了万众期待的十三香系列CPU闪亮登场,同步推出的Z790主板,也随之迎来了各品牌的一大波产品。今天评测的主角就是来自国内硬件巨头七彩虹科技。七彩虹这个国……快递保价屡登热搜问卷数读谁是消费者心中寄递新卷王?双11如约而至,寄递需求激增,作为快递行业最重要的年末节奏,今年在头部企业的带领下,整个快递市场正在发生一系列变化。最为明显的是在更细枝末节的寄递服务上的打磨与出新,新一轮的鲶……看了69岁的赵雅芝才发现中年女人穿得花花绿绿,照样优雅有气质从骨子里都散发出来的魅力,从来不会因为年龄而产生品味的壁垒,娱乐圈中从来不缺这样品味与魅力双在的女性,而在这其中独树一帜的绝对要数赵雅芝莫属了,已经69岁的赵雅芝依然有着非常高……卡塔尔世界杯,中国制造的轮回11月,世界杯开幕前夕的卡塔尔,暑意已经消散。6740公里外的中国义乌,备战世界杯的工厂、卖家和品牌则忙得热火朝天。自加入中国WTO以来,中国制造未曾缺席历届世界杯。从2……
16年西决雷霆31被翻盘,杜兰特场均308,威少表现如何?20152016赛季可以说是NBA最具有传奇色彩的赛季之一了,历史前十的科比布莱恩特在赛季开始前宣布本赛季结束后将正式退役,科比在生涯最后一战中爆砍60分,金州勇士队当家球星斯……区域集中度高,中型企业不良率逾2,湖州银行闯关A股能否顺利?截至2022年6月30日,湖州银行小微企业和中型企业贷款余额分别为371。53亿元和44。3亿元,不良贷款率分别为0。49和2。02《投资时报》研究员章帆注册制全面……中小企业发展指数调头向上创两年最大升幅,开工率待提高随着疫情防控形势好转,生产生活秩序逐步恢复,中小企业的生产经营情况和发展信心明显改善。中国中小企业协会15日发布的数据显示,1月份中国中小企业发展指数(SMEDI)为88……MiniLED电视销量暴增近4倍,电视分区再创新高能否赢下2梁振鹏文【作者系资深产业经济观察家、家电IT互联网行业分析师】如今,电视的刚需属性下降,休闲娱乐方式和选择越来越多,尤其是在智能手机的冲击下,电视的更新换代需求释放……在宁波,邂逅网红打卡点这两天,浙江宁波春雨绵绵,位于宁波东南郊的东钱湖,风光绮丽、青山环抱,雨中湖边的村落古色斑驳,有着别样的韵味。扬子晚报紫牛新闻记者随2023全国融媒体宁波行探访这里时,邂逅了一……索斯盖特拉什福德并不经常为英格兰出场,因此他缺阵算不上损失直播吧3月26日讯拉什福德因伤退出英格兰队,主教练索斯盖特接受采访时表示,对于一名不怎么出场的球员,你自然不会想念他。自2020年来,拉什福德第五次因伤退出英格兰队,他目……和你的爱人在一起,你感受到真爱了吗?这两个人有什么要说的第一次爱一个人,第一次拥抱一个人,第一次想嫁给一个人,那种感觉真的很温暖。我变得不安和烦躁。也许明天我就会嫁给你,也许过几天就会。每个人都曾经有一颗为爱疯狂的心,愿意为一……生活,一半一半!生活,一半烟火,一半清欢,幸福,一半争取,一半随缘,人生,一半清醒,一半释然!人这一生,说长不长,说短不短,日落夜来,夜去日升,如此循环往复。平凡的生活……应该培养学龄前儿童怎样的自理能力?36岁学龄前儿童要达到的自理能力水平参考以下:34岁学龄前儿童自主交流,熟练就餐,能帮助摆放和收餐具。自己穿脱衣服,叠衣服。自己大小便。有洗手习惯。能独立睡觉或陪伴后很快……数字化如何助力新疆畜牧业解决融资难题?畜牧业是新疆传统基础产业和优势产业。刘新摄中新网乌鲁木齐3月22日电(闫文陆侯立慧)畜牧业是新疆传统基础产业和优势产业,也是新疆现代农业的重要组成部分。近年来,新疆畜牧业……ChatGPT为什么亮剑是最经典的抗日神剧?还评价了李云龙《亮剑》是中国电视剧史上的经典之作,其深刻的历史意义、高超的制作水平、出色的演员阵容以及震撼人心的情节和台词都是导致它成为最经典、最受欢迎的抗日神剧的原因。白号首先……三员老将重返赛场游泳春锦赛有了年代感京报体育记者李远飞因为想要参加今年的杭州亚运会,已退役的吴鹏、半退役的傅园慧和在大学兼顾训练的叶诗文都参加了正在青岛举行的全国春季游泳锦标赛。三位浙江籍老将在3月20日这……
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网