首页 文章 精选 留言 我的

精选列表

搜索[高并发],共10000篇文章
优秀的个人博客,低调大师

各种报错,搭建Mysql MHA可用集群时踩的各种坑

mha下载地址,需要××× https://code.google.com/p/mysql-master-ha/ 管理软件 mha4mysql-manager-0.52-0.noarch.rpm 节点软件 mha4mysql-node-0.52-0.noarch.rpm 环境介绍Centos6.7X64 192.168.30.210monitor 192.168.30.211db1(master) 192.168.30.212db2(备master) 192.168.30.213db3 192.168.30.214db4 版本Mysql5.5.45 一、准备工作 db1-3需要先安装好Mysql,不会装的不用看下去了 三台机器都添加hosts表 192.168.30.211db1 192.168.30.212db2 192.168.30.213db3 192.168.30.214db4 实现4台机器间免密码登陆 在db1上执行shell ssh-keygen-trsa ssh-copy-id192.168.30.210 ssh-copy-id192.168.30.212 ssh-copy-id192.168.30.213 ssh-copy-id192.168.30.214 在db2上执行shell ssh-keygen-trsa ssh-copy-id192.168.30.211 ssh-copy-id192.168.30.210 ssh-copy-id192.168.30.213 ssh-copy-id192.168.30.214 在db3上执行shell ssh-keygen-trsa ssh-copy-id192.168.30.211 ssh-copy-id192.168.30.212 ssh-copy-id192.168.30.210 ssh-copy-id192.168.30.214 在db4上执行shell ssh-keygen-trsa ssh-copy-id192.168.30.211 ssh-copy-id192.168.30.212 ssh-copy-id192.168.30.210 ssh-copy-id192.168.30.213 在monitor上执行shell ssh-keygen-trsa ssh-copy-id192.168.30.211 ssh-copy-id192.168.30.212 ssh-copy-id192.168.30.213 ssh-copy-id192.168.30.214 建立Mysql直接主从同步 特别注意:每台DB的server id必须唯一 在DB1 上面建立同步账户 mysql>grantreplicationslaveon*.*toslave@'192.168.30.%'identifiedby"123"; mysql>showmasterstatus; +------------------+----------+--------------+------------------+ |File|Position|Binlog_Do_DB|Binlog_Ignore_DB| +------------------+----------+--------------+------------------+ |mysql-bin.000001|5001||| +------------------+----------+--------------+------------------+ 1rowinset(0.00sec) 在DB2 上面建立同步账户,因为是备用master mysql>grantreplicationslaveon*.*toslave@'192.168.30.%'identifiedby"123"; 打开防火墙 iptables-IINPUT-ptcp--dport3306-jACCEPT&&serviceiptablessave 在db2上做主从,开防火墙 mysql>CHANGEMASTERTOMASTER_HOST='192.168.30.211',MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=5001,MASTER_USER='slave', MASTER_PASSWORD='123'; mysql>slavestart; QueryOK,0rowsaffected(0.00sec) 查看同步状态 mysql>showslavestatus\G ***************************1.row*************************** Slave_IO_State:Waitingformastertosendevent Master_Host:192.168.30.212 Master_User:slave Master_Port:3306 Connect_Retry:60 Master_Log_File:mysql-bin.000003 Read_Master_Log_Pos:107 Relay_Log_File:mysql-relay-bin.000005 Relay_Log_Pos:253 Relay_Master_Log_File:mysql-bin.000003 Slave_IO_Running:Yes Slave_SQL_Running:Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno:0 Last_Error: Skip_Counter:0 Exec_Master_Log_Pos:107 Relay_Log_Space:555 Until_Condition:None Until_Log_File: Until_Log_Pos:0 Master_SSL_Allowed:No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master:0 Master_SSL_Verify_Server_Cert:No Last_IO_Errno:0 Last_IO_Error: Last_SQL_Errno:0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id:2 1rowinset(0.00sec) iptables-IINPUT-ptcp--dport3306-jACCEPT&&serviceiptablessave 在db3上做主从,开防火墙 CHANGEMASTERTOMASTER_HOST='192.168.30.211',MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=5001,MASTER_USER='slave', MASTER_PASSWORD='123'; iptables-IINPUT-ptcp--dport3306-jACCEPT&&serviceiptablessave 基础环境搭建好了 二、安装配置MHA 在monitir上安装 如果安装0.56版本的,则需要添加epel源来提供需要的依赖 yumlocalinstall-ymha4mysql-node-0.52-0.noarch yumlocalinstall-ymha4mysql-manager-0.52-0.noarch.rpm 在db1-4上安装 yumlocalinstall-ymha4mysql-node-0.52-0.noarch 在所有DB上面授权MHA管理账号 mysql>grantallon*.*tomha@'192.168.30.%'identifiedby'123456'; 在monitor上面 先新建一个工作目录 mkdir/mha 编辑配置文件 vim/etc/masterha_default.cnf [serverdefault] #刚才授权的mysql管理用戶名 user=mha password=123456 manager_workdir=/mha manager_log=/mha/manager.log remote_workdir=/mha #ssh免密钥登录的帐号名 ssh_user=root #mysql复制帐号,用来在主从机之间同步二进制日志等 repl_user=slave repl_password=123 #ping间隔,用来检测master是否正常 ping_interval=1 [server1] hostname=db1 master_binlog_dir=/data/mysql #候选人,master挂掉时候优先让它顶 candidate_master=1 [server2] hostname=db2 master_binlog_dir=/data/mysql candidate_master=1 [server3] hostname=db3 master_binlog_dir=/data/mysql #不能成为master no_master=1 [server4] hostname=db4 master_binlog_dir=/data/mysql #不能成为master no_master=1 验证SSH互认是否成功 [root@monitor ~]# masterha_check_ssh --conf=/etc/masterha_default.cnf [root@monitor~]#masterha_check_ssh--conf=/etc/masterha_default.cnf FriAug2617:59:442016-[info]Readingdefaultconfiguratoinsfrom/etc/masterha_default.cnf.. FriAug2617:59:442016-[info]Readingapplicationdefaultconfigurationsfrom/etc/masterha_default.cnf.. FriAug2617:59:442016-[info]Readingserverconfigurationsfrom/etc/masterha_default.cnf.. FriAug2617:59:442016-[info]StartingSSHconnectiontests.. FriAug2617:59:452016-[error][/usr/lib64/perl5/vendor_perl/MHA/SSHCheck.pm,ln63] FriAug2617:59:442016-[debug]ConnectingviaSSHfromroot@db2(192.168.30.212)toroot@db1(192.168.30.211).. FriAug2617:59:442016-[debug]ok. FriAug2617:59:442016-[debug]ConnectingviaSSHfromroot@db2(192.168.30.212)toroot@db3(192.168.30.213).. FriAug2617:59:452016-[debug]ok. FriAug2617:59:452016-[debug]ConnectingviaSSHfromroot@db2(192.168.30.212)toroot@db4(192.168.30.214).. Permissiondenied(publickey,gssapi-keyex,gssapi-with-mic,password). FriAug2617:59:452016-[error][/usr/lib64/perl5/vendor_perl/MHA/SSHCheck.pm,ln106]SSHconnectionfromroot@db2(192.168.30.212)toroot@db4(192.168.30.214)failed! FriAug2617:59:462016-[debug] FriAug2617:59:442016-[debug]ConnectingviaSSHfromroot@db1(192.168.30.211)toroot@db2(192.168.30.212).. FriAug2617:59:452016-[debug]ok. FriAug2617:59:452016-[debug]ConnectingviaSSHfromroot@db1(192.168.30.211)toroot@db3(192.168.30.213).. FriAug2617:59:452016-[debug]ok. FriAug2617:59:452016-[debug]ConnectingviaSSHfromroot@db1(192.168.30.211)toroot@db4(192.168.30.214).. FriAug2617:59:452016-[debug]ok. FriAug2617:59:462016-[error][/usr/lib64/perl5/vendor_perl/MHA/SSHCheck.pm,ln63] FriAug2617:59:452016-[debug]ConnectingviaSSHfromroot@db4(192.168.30.214)toroot@db2(192.168.30.212).. Permissiondenied(publickey,gssapi-keyex,gssapi-with-mic,password). FriAug2617:59:452016-[error][/usr/lib64/perl5/vendor_perl/MHA/SSHCheck.pm,ln106]SSHconnectionfromroot@db4(192.168.30.214)toroot@db2(192.168.30.212)failed! FriAug2617:59:462016-[error][/usr/lib64/perl5/vendor_perl/MHA/SSHCheck.pm,ln63] FriAug2617:59:452016-[debug]ConnectingviaSSHfromroot@db3(192.168.30.213)toroot@db2(192.168.30.212).. FriAug2617:59:452016-[debug]ok. FriAug2617:59:452016-[debug]ConnectingviaSSHfromroot@db3(192.168.30.213)toroot@db1(192.168.30.211).. FriAug2617:59:462016-[debug]ok. FriAug2617:59:462016-[debug]ConnectingviaSSHfromroot@db3(192.168.30.213)toroot@db4(192.168.30.214).. Permissiondenied(publickey,gssapi-keyex,gssapi-with-mic,password). FriAug2617:59:462016-[error][/usr/lib64/perl5/vendor_perl/MHA/SSHCheck.pm,ln106]SSHconnectionfromroot@db3(192.168.30.213)toroot@db4(192.168.30.214)failed! SSHConfigurationCheckFailed! at/usr/bin/masterha_check_sshline44 报错:这个错就是root@db2(192.168.30.212) to root@db4(192.168.30.214)之间互认还没完成,添加ssh认证即可 再来 [root@monitor~]#masterha_check_ssh--conf=/etc/masterha_default.cnf FriAug2618:03:002016-[info]Readingdefaultconfiguratoinsfrom/etc/masterha_default.cnf.. FriAug2618:03:002016-[info]Readingapplicationdefaultconfigurationsfrom/etc/masterha_default.cnf.. FriAug2618:03:002016-[info]Readingserverconfigurationsfrom/etc/masterha_default.cnf.. FriAug2618:03:002016-[info]StartingSSHconnectiontests.. FriAug2618:03:022016-[debug] FriAug2618:03:002016-[debug]ConnectingviaSSHfromroot@db2(192.168.30.212)toroot@db1(192.168.30.211).. FriAug2618:03:012016-[debug]ok. FriAug2618:03:012016-[debug]ConnectingviaSSHfromroot@db2(192.168.30.212)toroot@db3(192.168.30.213).. FriAug2618:03:012016-[debug]ok. FriAug2618:03:012016-[debug]ConnectingviaSSHfromroot@db2(192.168.30.212)toroot@db4(192.168.30.214).. FriAug2618:03:022016-[debug]ok. FriAug2618:03:022016-[debug] FriAug2618:03:012016-[debug]ConnectingviaSSHfromroot@db1(192.168.30.211)toroot@db2(192.168.30.212).. FriAug2618:03:012016-[debug]ok. FriAug2618:03:012016-[debug]ConnectingviaSSHfromroot@db1(192.168.30.211)toroot@db3(192.168.30.213).. FriAug2618:03:022016-[debug]ok. FriAug2618:03:022016-[debug]ConnectingviaSSHfromroot@db1(192.168.30.211)toroot@db4(192.168.30.214).. FriAug2618:03:022016-[debug]ok. FriAug2618:03:032016-[debug] FriAug2618:03:022016-[debug]ConnectingviaSSHfromroot@db4(192.168.30.214)toroot@db2(192.168.30.212).. FriAug2618:03:022016-[debug]ok. FriAug2618:03:022016-[debug]ConnectingviaSSHfromroot@db4(192.168.30.214)toroot@db1(192.168.30.211).. FriAug2618:03:022016-[debug]ok. FriAug2618:03:022016-[debug]ConnectingviaSSHfromroot@db4(192.168.30.214)toroot@db3(192.168.30.213).. FriAug2618:03:032016-[debug]ok. FriAug2618:03:032016-[debug] FriAug2618:03:012016-[debug]ConnectingviaSSHfromroot@db3(192.168.30.213)toroot@db2(192.168.30.212).. FriAug2618:03:022016-[debug]ok. FriAug2618:03:022016-[debug]ConnectingviaSSHfromroot@db3(192.168.30.213)toroot@db1(192.168.30.211).. FriAug2618:03:022016-[debug]ok. FriAug2618:03:022016-[debug]ConnectingviaSSHfromroot@db3(192.168.30.213)toroot@db4(192.168.30.214).. FriAug2618:03:032016-[debug]ok. FriAug2618:03:032016-[info]AllSSHconnectiontestspassedsuccessfully. 通过检查 下一步 检查mysql主从复制 [root@monitor~]#masterha_check_repl--conf=/etc/masterha_default.cnf ------------------------------省略号------------------------------------------------------ Can'tlocateMHA/BinlogManager.pmin@INC(@INCcontains:/usr/local/lib64/perl5/usr/local/share/perl5/usr/lib64/perl5/vendor_perl/usr/share/perl5/vendor_perl/usr/lib64/perl5/usr/share/perl5.)at/usr/bin/apply_diff_relay_logsline24. BEGINfailed--compilationabortedat/usr/bin/apply_diff_relay_logsline24. FriAug2618:11:552016-[error][/usr/lib64/perl5/vendor_perl/MHA/ManagerUtil.pm,ln132]nodeversionondb4notfound!MaybeMHANodepackageisnotinstalled? at/usr/lib64/perl5/vendor_perl/MHA/MasterMonitor.pmline278 FriAug2618:11:552016-[error][/usr/lib64/perl5/vendor_perl/MHA/MasterMonitor.pm,ln315]Errorhappendoncheckingconfigurations.Diedat/usr/lib64/perl5/vendor_perl/MHA/ManagerUtil.pmline133. FriAug2618:11:552016-[error][/usr/lib64/perl5/vendor_perl/MHA/MasterMonitor.pm,ln396]Errorhappenedonmonitoringservers. FriAug2618:11:552016-[info]Gotexitcode1(Notmasterdead). MySQLReplicationHealthisNOTOK! 报错: 那是不是主从检查没通过呢,其实不是得,这是个坑,关键报错在这句 Can'tlocateMHA/BinlogManager.pmin@INC(@INCcontains:/usr/local/lib64/perl5/usr/local/share/perl5/usr/lib64/perl5/vendor_perl/usr/share/perl5/vendor_perl/usr/lib64/perl5/usr/share/perl5.)at/usr/bin/apply_diff_relay_logsline24 百度一下结果是这样的 http://ronaldbradford.com/blog/mysql-mha-and-perl-pathing-2013-08-26/ 解决办法是在5台机器上面做软连接,把这个32位的依赖链接到64位的支持库里面去 ln-s/usr/lib/perl5/vendor_perl/MHA/usr/lib64/perl5/vendor_perl/ 解决完之后,再执行检查,又报错 [root@monitor~]#masterha_check_repl--conf=/etc/masterha_default.cnf ------------------------------省略号------------------------------------------------------ Checkingoutputdirectoryisaccessibleornot.. ok. Binlogfoundat/data/mysql,uptomysql-bin.000003 FriAug2618:21:232016-[info]Mastersettingcheckdone. FriAug2618:21:232016-[info]CheckingSSHpublickeyauthenticationandcheckingrecoveryscriptconfigurationsonallaliveslaveservers.. FriAug2618:21:232016-[info]Executingcommand:apply_diff_relay_logs--command=test--slave_user=mha--slave_host=db1--slave_ip=192.168.30.211--slave_port=3306--workdir=/mha--target_version=5.5.45-log--manager_version=0.52--relay_log_info=/data/mysql/relay-log.info--slave_pass=xxx FriAug2618:21:232016-[info]Connectingtoroot@192.168.30.211(db1).. Checkingslaverecoveryenvironmentsettings.. Opening/data/mysql/relay-log.info...ok. Relaylogfoundat/data/mysql,uptomysql-relay-bin.000048 Temporaryrelaylogfileis/data/mysql/mysql-relay-bin.000048 Testingmysqlconnectionandprivileges..done. Testingmysqlbinlogoutput..done. Cleaninguptestfile(s)..done. FriAug2618:21:252016-[info]Executingcommand:apply_diff_relay_logs--command=test--slave_user=mha--slave_host=db3--slave_ip=192.168.30.213--slave_port=3306--workdir=/mha--target_version=5.5.45-log--manager_version=0.52--relay_log_info=/data/mysql/relay-log.info--slave_pass=xxx FriAug2618:21:252016-[info]Connectingtoroot@192.168.30.213(db3).. Checkingslaverecoveryenvironmentsettings.. Opening/data/mysql/relay-log.info...ok. Relaylogfoundat/data/mysql,uptomysql-relay-bin.000051 Temporaryrelaylogfileis/data/mysql/mysql-relay-bin.000051 Testingmysqlconnectionandprivileges..done. Testingmysqlbinlogoutput..done. Cleaninguptestfile(s)..done. FriAug2618:21:272016-[info]Executingcommand:apply_diff_relay_logs--command=test--slave_user=mha--slave_host=db4--slave_ip=192.168.30.214--slave_port=3306--workdir=/mha--target_version=5.5.45-log--manager_version=0.52--relay_log_info=/data/mysql/relay-log.info--slave_pass=xxx FriAug2618:21:272016-[info]Connectingtoroot@192.168.30.214(db4).. Can'texec"mysqlbinlog":Nosuchfileordirectoryat/usr/lib64/perl5/vendor_perl/MHA/BinlogManager.pmline99. mysqlbinlogversionnotfound! at/usr/bin/apply_diff_relay_logsline425 FriAug2618:21:272016-[error][/usr/lib64/perl5/vendor_perl/MHA/MasterMonitor.pm,ln129]Slavessettingscheckfailed! FriAug2618:21:272016-[error][/usr/lib64/perl5/vendor_perl/MHA/MasterMonitor.pm,ln304]Slaveconfigurationfailed. FriAug2618:21:272016-[error][/usr/lib64/perl5/vendor_perl/MHA/MasterMonitor.pm,ln315]Errorhappendoncheckingconfigurations.at/usr/bin/masterha_check_replline48 FriAug2618:21:272016-[error][/usr/lib64/perl5/vendor_perl/MHA/MasterMonitor.pm,ln396]Errorhappenedonmonitoringservers. FriAug2618:21:272016-[info]Gotexitcode1(Notmasterdead). MySQLReplicationHealthisNOTOK! 这次报错提示找不到mysqlbinlog命令 Can'texec"mysqlbinlog":Nosuchfileordirectoryat/usr/lib64/perl5/vendor_perl/MHA/BinlogManager.pmline99. 我的mysql是编译安装的,添加了mysql bin目录的环境变量的,但是它竟然提示找不到这个命令,可能是没有读取/etc/profile文件吧,那我们就再做软连接到系统目录好了 解决:在所有db执行 [root@db4~]#ln-s/usr/local/mysql/bin/mysqlbinlog/usr/bin/mysqlbinlog 再来检查,又错,再看 [root@monitor~]#masterha_check_repl--conf=/etc/masterha_default.cnf ------------------------------省略号------------------------------------------------------ Checkingoutputdirectoryisaccessibleornot.. ok. Binlogfoundat/data/mysql,uptomysql-bin.000003 FriAug2618:28:122016-[info]Mastersettingcheckdone. FriAug2618:28:122016-[info]CheckingSSHpublickeyauthenticationandcheckingrecoveryscriptconfigurationsonallaliveslaveservers.. FriAug2618:28:122016-[info]Executingcommand:apply_diff_relay_logs--command=test--slave_user=mha--slave_host=db1--slave_ip=192.168.30.211--slave_port=3306--workdir=/mha--target_version=5.5.45-log--manager_version=0.52--relay_log_info=/data/mysql/relay-log.info--slave_pass=xxx FriAug2618:28:122016-[info]Connectingtoroot@192.168.30.211(db1).. Checkingslaverecoveryenvironmentsettings.. Opening/data/mysql/relay-log.info...ok. Relaylogfoundat/data/mysql,uptomysql-relay-bin.000464 Temporaryrelaylogfileis/data/mysql/mysql-relay-bin.000464 Testingmysqlconnectionandprivileges..done. Testingmysqlbinlogoutput..done. Cleaninguptestfile(s)..done. FriAug2618:28:132016-[info]Executingcommand:apply_diff_relay_logs--command=test--slave_user=mha--slave_host=db3--slave_ip=192.168.30.213--slave_port=3306--workdir=/mha--target_version=5.5.45-log--manager_version=0.52--relay_log_info=/data/mysql/relay-log.info--slave_pass=xxx FriAug2618:28:132016-[info]Connectingtoroot@192.168.30.213(db3).. Checkingslaverecoveryenvironmentsettings.. Opening/data/mysql/relay-log.info...ok. Relaylogfoundat/data/mysql,uptomysql-relay-bin.000469 Temporaryrelaylogfileis/data/mysql/mysql-relay-bin.000469 Testingmysqlconnectionandprivileges..done. Testingmysqlbinlogoutput..done. Cleaninguptestfile(s)..done. FriAug2618:28:162016-[info]Executingcommand:apply_diff_relay_logs--command=test--slave_user=mha--slave_host=db4--slave_ip=192.168.30.214--slave_port=3306--workdir=/mha--target_version=5.5.45-log--manager_version=0.52--relay_log_info=/data/mysql/relay-log.info--slave_pass=xxx FriAug2618:28:162016-[info]Connectingtoroot@192.168.30.214(db4).. Checkingslaverecoveryenvironmentsettings.. Opening/data/mysql/relay-log.info...ok. Relaylogfoundat/data/mysql,uptodb4-relay-bin.000002 Temporaryrelaylogfileis/data/mysql/db4-relay-bin.000002 Testingmysqlconnectionandprivileges..sh:mysql:commandnotfound mysqlcommandfailedwithrc127:0! at/usr/bin/apply_diff_relay_logsline315 main::check()calledat/usr/bin/apply_diff_relay_logsline429 eval{...}calledat/usr/bin/apply_diff_relay_logsline409 main::main()calledat/usr/bin/apply_diff_relay_logsline97 FriAug2618:28:162016-[error][/usr/lib64/perl5/vendor_perl/MHA/MasterMonitor.pm,ln129]Slavessettingscheckfailed! FriAug2618:28:162016-[error][/usr/lib64/perl5/vendor_perl/MHA/MasterMonitor.pm,ln304]Slaveconfigurationfailed. FriAug2618:28:162016-[error][/usr/lib64/perl5/vendor_perl/MHA/MasterMonitor.pm,ln315]Errorhappendoncheckingconfigurations.at/usr/bin/masterha_check_replline48 FriAug2618:28:162016-[error][/usr/lib64/perl5/vendor_perl/MHA/MasterMonitor.pm,ln396]Errorhappenedonmonitoringservers. FriAug2618:28:162016-[info]Gotexitcode1(Notmasterdead). MySQLReplicationHealthisNOTOK! 这次报错提示 Testingmysqlconnectionandprivileges..sh:mysql:commandnotfound 那好吧,跟上面一样,软连接 [root@db4~]#ln-s/usr/local/mysql/bin/mysql/usr/bin/mysql 问题解决 再来检查 [root@monitor~]#masterha_check_repl--conf=/etc/masterha_default.cnf ------------------------------省略号------------------------------------------------------ SatAug2710:27:382016-[info]Executingcommand:apply_diff_relay_logs--command=test--slave_user=mha--slave_host=db4--slave_ip=192.168.30.214--slave_port=3306--workdir=/mha--target_version=5.5.45-log--manager_version=0.52--relay_log_info=/data/mysql/relay-log.info--slave_pass=xxx SatAug2710:27:382016-[info]Connectingtoroot@192.168.30.214(db4).. Checkingslaverecoveryenvironmentsettings.. Opening/data/mysql/relay-log.info...ok. Relaylogfoundat/data/mysql,uptomysql-relay-bin.032494 Temporaryrelaylogfileis/data/mysql/mysql-relay-bin.032494 Testingmysqlconnectionandprivileges..done. Testingmysqlbinlogoutput..done. Cleaninguptestfile(s)..done. SatAug2710:27:392016-[info]Slavessettingscheckdone. SatAug2710:27:392016-[info] db2(currentmaster) +--db1 +--db3 +--db4 SatAug2710:27:392016-[info]Checkingreplicationhealthondb1.. SatAug2710:27:392016-[info]ok. SatAug2710:27:392016-[info]Checkingreplicationhealthondb3.. SatAug2710:27:392016-[info]ok. SatAug2710:27:392016-[info]Checkingreplicationhealthondb4.. SatAug2710:27:392016-[info]ok. SatAug2710:27:392016-[warning]master_ip_failover_scriptisnotdefined. SatAug2710:27:392016-[warning]shutdown_scriptisnotdefined. SatAug2710:27:392016-[info]Gotexitcode0(Notmasterdead). MySQLReplicationHealthisOK. 这次终于正常通过了 启动MHA管理程序 [root@monitor~]#masterha_manager--conf=/etc/masterha_default.cnf& SatAug2710:31:512016-[info]Readingdefaultconfiguratoinsfrom/etc/masterha_default.cnf.. SatAug2710:31:512016-[info]Readingapplicationdefaultconfigurationsfrom/etc/masterha_default.cnf.. SatAug2710:31:512016-[info]Readingserverconfigurationsfrom/etc/masterha_default.cnf.. 一切正常 观察日志 [root@monitor~]#cat/mha/manager.log ------------------------------省略号--------------------------------------------------- SatAug2710:33:042016-[info] db2(currentmaster) +--db1 +--db3 +--db4 SatAug2710:33:042016-[warning]master_ip_failover_scriptisnotdefined. SatAug2710:33:042016-[warning]shutdown_scriptisnotdefined. SatAug2710:33:042016-[info]Setmasterpinginterval1seconds. SatAug2710:33:042016-[warning]secondary_check_scriptisnotdefined.Itishighlyrecommendedsettingittocheckmasterreachabilityfromtwoormoreroutes. SatAug2710:33:042016-[info]Startingpinghealthcheckondb2(192.168.30.212:3306).. SatAug2710:33:042016-[info]Pingsucceeded,sleepinguntilitdoesn'trespond.. 看到目前启动正常 db2是master(不是说好的master是db1么?好吧,我之前做完切过一次了,所以master飘到db2了,大家凑合着看哈) db1 db3 db3是从机 到目前为止 MHA就搭起来了 三、做故障测试,把db2关掉,看下会不会主从自动切换到db1 关掉db2 mysql,我们来tail monitor日志 [root@monitor~]#tail-f/mha/manager.log ------------------------------省略号--------------------------------------------------- SatAug2711:15:402016-[info]Masterfailovertodb1(192.168.30.211:3306)completedsuccessfully. SatAug2711:15:402016-[info] -----FailoverReport----- masterha_default:MySQLMasterfailoverdb2todb1succeeded Masterdb2isdown!#DB2挂了 CheckMHAManagerlogsatmonitor:/mha/manager.logfordetails. Startedautomated(non-interactive)failover. Thelatestslavedb1(192.168.30.211:3306)hasallrelaylogsforrecovery. Selecteddb1asanewmaster. db1:OK:Applyingalllogssucceeded. db4:Thishosthasthelatestrelaylogevents. db3:Thishosthasthelatestrelaylogevents. Generatingrelaydifffilesfromthelatestslavesucceeded. db4:OK:Applyingalllogssucceeded.Slavestarted,replicatingfromdb1.###db4重新设置主从到db1 db3:OK:Applyingalllogssucceeded.Slavestarted,replicatingfromdb1.###db3重新设置主从到db1 db1:Resettingslaveinfosucceeded. Masterfailovertodb1(192.168.30.211:3306)completedsuccessfully.###master飘到db1成功 在刷了一大堆日志后,出现了这个汇总报告,主从切换成功 我们去db3 db4上面看下是不是真的切换成功了 mysql>showslavestatus\G; ***************************1.row*************************** Slave_IO_State:Waitingformastertosendevent Master_Host:192.168.30.211 Master_User:slave Master_Port:3306 Connect_Retry:60 Master_Log_File:mysql-bin.000002 Read_Master_Log_Pos:1869 Relay_Log_File:mysql-relay-bin.000002 Relay_Log_Pos:253 Relay_Master_Log_File:mysql-bin.000002 Slave_IO_Running:Yes Slave_SQL_Running:Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno:0 Last_Error: Skip_Counter:0 Exec_Master_Log_Pos:1869 Relay_Log_Space:409 Until_Condition:None Until_Log_File: Until_Log_Pos:0 Master_SSL_Allowed:No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master:0 Master_SSL_Verify_Server_Cert:No Last_IO_Errno:0 Last_IO_Error: Last_SQL_Errno:0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id:1 1rowinset(0.01sec) ERROR: Noqueryspecified db4主从切到db1了,成功 mysql>showslavestatus\G; ***************************1.row*************************** Slave_IO_State:Waitingformastertosendevent Master_Host:192.168.30.211 Master_User:slave Master_Port:3306 Connect_Retry:60 Master_Log_File:mysql-bin.000002 Read_Master_Log_Pos:1869 Relay_Log_File:mysql-relay-bin.000002 Relay_Log_Pos:253 Relay_Master_Log_File:mysql-bin.000002 Slave_IO_Running:Yes Slave_SQL_Running:Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno:0 Last_Error: Skip_Counter:0 Exec_Master_Log_Pos:1869 Relay_Log_Space:409 Until_Condition:None Until_Log_File: Until_Log_Pos:0 Master_SSL_Allowed:No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master:0 Master_SSL_Verify_Server_Cert:No Last_IO_Errno:0 Last_IO_Error: Last_SQL_Errno:0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id:1 1rowinset(0.00sec) ERROR: Noqueryspecified 再去看看db1,主从已经停止了(废话,都成master了,主从肯定停了) mysql>showslavestatus\G; ***************************1.row*************************** Slave_IO_State: Master_Host:192.168.30.212 Master_User:slave Master_Port:3306 Connect_Retry:60 Master_Log_File: Read_Master_Log_Pos:4 Relay_Log_File:mysql-relay-bin.000001 Relay_Log_Pos:4 Relay_Master_Log_File: Slave_IO_Running:No Slave_SQL_Running:No Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno:0 Last_Error: Skip_Counter:0 Exec_Master_Log_Pos:0 Relay_Log_Space:126 Until_Condition:None Until_Log_File: Until_Log_Pos:0 Master_SSL_Allowed:No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master:NULL Master_SSL_Verify_Server_Cert:No Last_IO_Errno:0 Last_IO_Error: Last_SQL_Errno:0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id:2 1rowinset(0.00sec) ERROR: Noqueryspecified 至此,mha测试完成,搭建MHA上面的坑,问题还是挺多的,要多看日志多看报错,才能找出问题的所在,当然,一篇靠谱的教程还是要有的

优秀的个人博客,低调大师

单机服务器如何充分利用服务器性能,达到最大并发量?

23号当天12点一瞬间有大量的用户涌进来,具体多少人不好说,我看TCP链接是6千左右。 我的服务器配置如下: 数据库是使用阿里云的PolarDB,8核32GB,有读写分离,最大IOPS是64000,我查看过数据库相关压力,数据库几乎没有波动,排除是数据库原因造成的,我们的业务相对简单,且大部分查询是单表查询,数据量很小。 服务器是使用阿里云的ECS,8核16G,CPU占用最高不到百分之二十,基本都在百分之五左右,内存占用也没有什么波动,CPU和内存没有充分得到利用。 我是使用的spring boot 部署,容器是tomcat,配置如下: server.tomcat.accept-count=500 server.tomcat.max-connections=30000 server.tomcat.max-threads=2000 server.servlet.session.timeout=3600s server.max-http-header-size=1024000 我启动的时候给JVM分配了内存,命令如下: nohup java -server -Xms10240m -Xmx10240m -jar xxx.jar & 另外我使用的是nginx代理到tomcat的,当天高峰期服务瘫痪的时候,nginx部署的另外一个静态页也同时不能访问,所以我怀疑是nginx或tomcat在哪一个环节出现了问题。 以下是当天12点-16点的一些服务器监控截图: 所以我想请教一下大家,这是哪个环节的问题造成了瓶颈,有哪些优化方案?

优秀的个人博客,低调大师

【使用linux 并发命令parallel 加快处理文本文件】-原来是坑爹啊。

1,看到oschina 上面的一篇文章 如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等 http://www.oschina.net/news/45477/use-cpu-cores-linux-commands 系统使用的是Redhat 5 parallel的官网: http://www.gnu.org/software/parallel/ 需要使用opensuse的源进行安装 http://software.opensuse.org/download.html?project=home%3Atange&package=parallel 对于CentOSCentOS-6,请以根用户 root运行下面命令: cd /etc/yum.repos.d/ wget http://download.opensuse.org/repositories/home:tange/CentOS_CentOS-6/home:tange.repo yum install parallel 对于CentOSCentOS-5,请以根用户 root运行下面命令: cd /etc/yum.repos.d/ wget http://download.opensuse.org/repositories/home:tange/CentOS_CentOS-5/home:tange.repo yum install parallel 经测试wc -l 命令 发现在cpu数量是4的时候并没有提高计算时间,反而慢了。 计算1G文件行数,用wc-l花费 1s而使用 parallel后花费 10s 对于200MB的文件也是10倍的关系。 总结: 理论和实际使用还是有差别啊。在4cup的机器上面测试一点 优势也没有啊。 基本上要慢个 10倍以上啊。看来要处理大文件,还是hadoop比较靠谱啊。

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册