• 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

  • 相关阅读:
    Objective-C基础教程读书笔记(6)
    Objective-C基础教程读书笔记(7)
    [置顶] android网络通讯之HttpClient4不指定参数名发送Post
    一些常见的正在表达式
    给EditText中的图片加监听
    HDU 4569Special equations2012长沙邀请赛E题(数学知识)
    Linux malloc大内存的方法
    优秀员工的做法-领先的专业、道路管理
    ZOJ 3324 Machine
    DateUtil
  • 原文地址:https://www.cnblogs.com/danhuangpai/p/16159599.html
Copyright © 2020-2023  润新知