mysql 复制延迟诊断_MySQL 复制延迟排查

复制延迟排查弄清楚当前数据库在干嘛

查看MySQL当前的状态

查看MySQL调度情况: perf top -p `pidof mysqld`延迟现象Seconds_Behind_master 一直在增大,但Exec_master_log_pos一直卡着不动一般有两种下面的情况:

1.真的是大事务,比如: update/delete 50万行以上

2.更新这个表可能没有索引

定位事物方法:主库上查,下面的日志文件,定位在干嘛

Relay_Master_Log_File: mysql-bin.000003

Exec_Master_Log_Pos: 626

mysqlbinlog -v --base64-output=decode-rows --start-positon=626 mysql-bin.000003 |more

# 也可一去从库上找:

Relay_Log_File: relay-bin.000003

Relay_Log_Pos: 4

mysqlbinlog -v --base64-output=decode-rows --start-positon=4 relay-bin.000003 |more

弄清楚当前数据库在干嘛定位SQL_thread执行位置

show processlist;

show slave status\G;

io_thread , sql_thread

io_thread执行到的位置:

master_log_file

read_master_log_pos

sql_thread执行到的位置:

Relay_Master_Log_File

Exec_Master_Log_Pos

mysqlbinlog --base64-output=decode-rows -vv --start-position=Exec_Master_Log_Pos \

master_log_file查看当前MySQL状态机器负载很高所以不合理

Statement索引不合理

mysql> desc information_schema.processlist;

+---------+---------------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+---------+---------------------+------+-----+---------+-------+

| ID | bigint(21) unsigned | NO | | 0 | |

| USER | varchar(32) | NO | | | |

| HOST | varchar(64) | NO | | | |

| DB | varchar(64) | YES | | NULL | |

| COMMAND | varchar(16) | NO | | | |

| TIME | int(7) | NO | | 0 | |

| STATE | varchar(64) | YES | | NULL | |

| INFO | longtext | YES | | NULL | |

+---------+---------------------+------+-----+---------+-------+

8 rows in set (0.00 sec)

mysql> select * from information_schema.processlist order by time desc limit 2\Gperf top mysqld大招:通过内核查看mysql 进程,定位到源码利用源码定位出问题的文字主持延迟实例

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值