mysql系列~复制延时


1.io_thread无法赶上主库binlog
   问题分析:1 主从网络通信受限,比如丢包率严重
                  2 主库短时间内产生的binlog太多
   分析解决:
                  1 保障网络通信
                  2 优化主库binlog产生数量和大小
 2 备库IO硬件条件较主库差
     问题分析:1 由于从库硬件条件不如主库,所以产生延时
     分析解决:1 提升硬件水平
3  主库执行出现大事务,导致出现延时的突刺
    问题分析:1 由于出现大事务,导致从库迟迟无法提交 Waiting for dependent transaction to commit 从库出现
   分析解决: 1 分析binlog 找到大事务让研发进行优化
4 备机当前会话存在元数据锁等待
   问题分析:1 通常是由于在从库提供查询功能导致的锁等待
   分析解决:1  kill慢查询即可
5 无主键表操作
   问题分析:1 表上没有主键或者唯一键 状态为:system lock 或者 reading event from the relay log
   分析解决:1 表加主键

                2 调整 参数为 slave_rows_search_algorithms=INDEX_SCAN,HASH_SCAN

6 分析大事务脚本

  

#!/bin/bash
BINLOG_FILE="mysql-bin.000006"
mysqlbinlog --base64-output=decode-rows -vv $BINLOG_FILE | awk \
'BEGIN {xid="null";s_type="";stm="";endtm="";intsta=0;inttal=0;s_count=0;count=0;insert_count=0;update_count=0;delete_count=0;flag=0;bf=0;period=0;} \
{
if(match($0,/^(BEGIN)/)) {bg=1;} \
if(match($0,/#.*server id/)) \
{if(bg==1) {statm=substr($1,2,6)" "$2;cmd=sprintf("date -d \"%s\" +%%s",statm);cmd|getline intsta;close(cmd);bg=0;bf=1;} \
else if(bf==1) {endtm=substr($1,2,6)" "$2;cmd=sprintf("date -d \"%s\" +%%s",endtm);cmd|getline inttal;close(cmd);}} \
if(match($0,/#.*Table_map:.*mapped to number/)) {printf "Timestamp : " $1 " " $2 " Table : " $(NF-4);flag=1} \
else if(match($0,/#.*Xid =.*/)) {xid=$(NF)} \
else if(match($0,/(### INSERT INTO .*..*)/)) {count=count+1;insert_count=insert_count+1;s_type="INSERT";s_count=s_count+1;} \
else if(match($0,/(### UPDATE .*..*)/)) {count=count+1;update_count=update_count+1;s_type="UPDATE";s_count=s_count+1;} \
else if(match($0,/(### DELETE FROM .*..*)/)) {count=count+1;delete_count=delete_count+1;s_type="DELETE";s_count=s_count+1;} \
else if(match($0,/^(# at)/) && flag==1 && s_count>0) {print " Query Type : "s_type " " s_count " row(s) affected" ;s_type="";s_count=0;} \
else if(match($0,/^(COMMIT)/)) {period=inttal-intsta;if(inttal==0) {period=0}; \
print "[Transaction total : " count " Insert(s) : " insert_count " Update(s) : " update_count " Delete(s) : " delete_count " Xid : " xid " period : " period \
" ] \n+----------------------+----------------------+----------------------+----------------------+"; \
count=0;insert_count=0;update_count=0;delete_count=0;s_type="";s_count=0;flag=0;bf=0;bg=0;}}' >> fenxi.txt

cat fenxi.txt|grep -v 'Xid'|awk -F':' '{print $5,$6}'|awk '{print $1,$4}'|sort -n |uniq -c|sort -nr 

7  统计 库表增删查改

  /mysqlbinlog -vv --base64-output=decode-rows binlogfile|awk '/###/ {if($0~/UPDATE|INSERT|SELECT/)count[$2" "$NF]++}END{for(i in count) print i,"\t",count[i]}' | column -t | sort -k3nr

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章