博观而约取,厚积而薄发。这篇文章主要讲述报错解决与排错思路相关的知识,希望能为你提供帮助。
网络问题:1.Device eth0 does not seem to be present MAC地址冲突造成
解决:
- rm -f /etc/udev/rules.d/70-persistent-net.rules
- reboot
解决:
- 改为dhcp
[root@1b01 conf.d]# curl -H host :www.yangyang.com 10.0.0.7
www 10.0.0.7
[root@1b01 conf.d]# curl -H host :www yangyang.com 10.0.0.8
www 10.0.0.8
[root@1b01 conf.d]# curl -H host :www.yangyang.com 10.0.0.9
www 10.0.0.9
第二步:负载均衡利用cur1命令访问负载均衡服务器
第三步:打开一个xshell连接ping www.yangyang.com
第四步:配置文件编写不正确
mysql异常 主从复制报错
mysql replication 中slave机器上有两个关键的进程,死一个都不行,一个是slave_sql_running,一个是Slave_IO_Running,一个负责与主机的io通信,一个负责自己的slave mysql进程。
如果是slave_io_running no了,那么就我个人看有三种情况,一个是网络有问题,连接不上,像有一次我用虚拟机搭建replication,使用了nat的网络结构,就是死都连不上,第二个是有可能my.cnf有问题,配置文件怎么写就不说了,网上太多了,最后一个是授权的问题,replication slave和file权限是必须的。
一旦io为no了先看err日志,看看报什么错,很可能是网络,也有可能是包太大收不了,这个时候主备上改max_allowed_packet这个参数。
如果是slave_sql_running no了,那么也有两种可能,一种是slave机器上这个表中出现了其他的写操作,就是程序写了,这个是会有问题的,还有一种占绝大多数可能的是slave进程重启,事务回滚造成的,这也是mysql的一种自我保护的措施,像关键时候只读一样。
这个时候想恢复的话,只要停掉slave,set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; 再开一下slave就可以了,这个全局变量赋值为N的意思是:
This statement skips the next N events from the master. This is useful for recovering from replication stops caused by a statement.
This statement is valid only when the slave thread is not running. Otherwise, it produces an error.
翻译过来就是
该语句跳过主服务器的下一个N事件。 这对于从语句引起的复制停止中恢复很有用。
该语句仅在从属线程未运行时才有效。 否则,将产生错误。
可参考:
https://mariadb.com/kb/en/replication-and-binary-log-system-variables/#sql_slave_skip_counter
错误实例:
show slave status\\G
Slave_IO_Running: Yes
Slave_SQL_Running: No
【报错解决与排错思路】有问题了,Slave_SQL_Running应该是Yes才对。
再往下看,有错误的提示:
Last_Errno: 1062
Last_Error: Error ‘Duplicate entry ‘b847a74ad1e35badd71d0171bd703360’ for key ‘PRIMARY’’ on query. Default database: ‘fangh6fu’. Query: ‘INSERT INTO fangh6fu.ecs_sessions (sesskey, expiry, ip, data) VALUES (‘b847a74ad1e35badd71d0171bd703360’, ‘1447919111’, ‘192.168.1.214’, ‘a:0:{}’)’
先stop slave,然后执行了一下提示的语句,就是把重复的主键记录删除,
再SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;
show slave status\\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
OK了,从服务器也在几分钟内把堆积的log处理完了,两边又同步了:)
MHA 高可用报错
[root@DBproxy app1]# masterha_check_ssh --conf=/data/masterha/app1/app1.cnf
Can’t locate MHA/SSHCheck.pm in @INC (@INC contains: /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/masterha_check_ssh line 25.
BEGIN failed–compilation aborted at /usr/bin/masterha_check_ssh line 25.
[root@DBproxy app1]#
问题定位:应该是环境变量的问题
[root@DBproxy app1]# find / -name SSHCheck.pm
/usr/lib/perl5/vendor_perl/MHA/SSHCheck.pm
将相关路径加入PERL5LIB后,问题解决(根本原因是MHA和OS版本不匹配)。
export PERL5LIB=$PERL5LIB:/usr/lib/perl5/vendor_perl/
问题现象:
[root@DBproxy mysql]# masterha_check_repl --conf=/data/masterha/app1/app1.cnf
…
Fri Jul 15 17:40:59 2016 - [error][/usr/lib/perl5/vendor_perl/MHA/ManagerUtil.pm, ln123]
Can’t locate MHA/BinlogManager.pm in @INC (@INC contains: /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_logs line 24.
BEGIN failed–compilation aborted at /usr/bin/apply_diff_relay_logs line 24.
Fri Jul 15 17:40:59 2016 - [error][/usr/lib/perl5/vendor_perl/MHA/ManagerUtil.pm, ln150] node version on 192.168.0.60 not found! Is MHA Node package installed ?
at /usr/lib/perl5/vendor_perl/MHA/MasterMonitor.pm line 374
Fri Jul 15 17:40:59 2016 - [error][/usr/lib/perl5/vendor_perl/MHA/MasterMonitor.pm, ln424] Error happened on checking configurations. Died at /usr/lib/perl5/vendor_perl/MHA/ManagerUtil.pm line 151.
Fri Jul 15 17:40:59 2016 - [error][/usr/lib/perl5/vendor_perl/MHA/MasterMonitor.pm, ln523] Error happened on monitoring servers.
Fri Jul 15 17:40:59 2016 - [info] Got exit code 1 (Not master dead).
MySQL Replication Health is NOT OK!
[root@DBproxy mysql]#
问题定位:设置环境变量export PERL5LIB=$PERL5LIB:/usr/lib/perl5/vendor_perl后问题依然没解决。
最后安装版本为el6的MHA(导致问题的版本为el5,该版本的MHA安装目录为/usr/lib/perl5/vendor_perl下),问题解决。
推荐阅读
- Python小知识
- 运维小知识
- Nginx调度算法——基于指定的key的hash表来实现对请求的调度
- Mysql/MariaDB 实验细节知识点已经报错解决
- 高可用服务的报错异常处理
- Zabbix(解决Zabbix中文字体乱码已经不显示文字)
- Linux文件共享三大服务——NFS
- 编译安装Zabbix遇到的坑
- Linux文件共享三大服务——SAMBA