重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
主从延时如果排查?
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:空间域名、网页空间、营销软件、网站建设、顺平网站维护、网站推广。1. show slave status\G,看一下relay_master_log_file & exec_master_log_pos数值有没有变化(如果是GTID复制也可以看executed_gtid_set的事物号有没有增长 ),如果一直不变化,说明有大事物,导致sql_thread线程hang住,这个时候需要查看主库的binlog,看一下是什么事物:
mysqlbinlog -v --base64-output=decode-rows --start-position= exec_master_log_pos relay_master_log_file | less
然后等大事物结束或者回滚;
这次事物结束后,如果下次从库不能接受这样延时,怎么办,有什么根本的解决方法?
(1)把从库对读要求比较高的业务切换到主库上;
(2)以后更新大事物拆分成多个小事物,比如说一次更新20万条改为一次更新10万条;
2. 如果relay_master_log_file & exec_master_log_pos数值增长很慢,怎么办?
(1)解析对应的binlog: mysqlbinlog -v --base64-output=decode-rows --start-position= exec_master_log_pos relay_master_log_file | less
查看对应的表,看看表有没有主键,索引等结构
(2)检查系统是不是过载cpu,memory,io,
io可以通过工具iotop和pt-ioprofile查看
如果发现是mysql库下的slave_relay_log_info.ibd文件占用IO很高,可以考虑调大sync_relay_log_info,让这个文件同步不要太频繁。
cpu可以通过top命令查看:
如果user比较高,可以show processlist查看,慢日志,有没有大量的排序,主要是sql语句
如果sys很高的话,一般来说,因为:
1、发生swap
2、数据库内发生严重的锁等待
3、用了ssd等设备,产生大量中断,或者网卡中断(cpu中断不均衡)
4、MySQL里频繁创建连接及关闭
5、频繁用到timestamp列,且time_zone=SYSTEM
memory:
free -gt
vmstat
看看mysql的errorlog,主从的server-id是否不一样
如何查看网卡是否连接:
ifconfig |grep up
dmesg|grep eth
以上方法都不行的话,可以尝试其他方法:
使用工具perf top
pstack `pidof mysqld`
ipmitool
硬件方面raid卡等
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。