当前位置: 首页 > news >正文

mysql日志文件binlog分析记录

1、binlog转sql
使用mysql自带的binlog工具

mysqlbinlog  --base64-output=decode-rows -v /var/lib/mysql/binlog.000208 --result-file=/var/lib/mysql/binsql000208.sql

2、筛选统计操作

      import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;public class TxtReadWrite {static String inFileName = "D:\\docker\\mysql\\data\\binsql000050.sql";static String outFileName = "D:\\test\\binsql46-50.txt";static Queue<String> Line_Queue = new ConcurrentLinkedQueue<>();static BufferedWriter writer;static {try {writer = new BufferedWriter(new FileWriter(outFileName,true));} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) throws IOException, ParseException {
//        筛选update和delete操作readAndWrite();
//        统计每个表的操作数量countOperation();
//        统计已有thread_idcountThreadId();
//        每两个小时统计一次操作次数countAsHour();
//          统计每个thread-id更改每个表的次数countIdAndTable();}public static void countIdAndTable() throws IOException {String inFileForCount =  "D:\\test\\binsql46-50.txt";//文件内只有删除、更新FileReader fileReader = new FileReader(inFileForCount);BufferedReader bufferedReader = new BufferedReader(fileReader);String line = bufferedReader.readLine();Map<String,Integer> map = new HashMap();String threadId = "";String tablename ="";while (line != null) {if(line.contains("thread_id")){threadId = line.substring(line.indexOf("thread_id="), line.lastIndexOf("exec_time"));}else if(line.contains("`.`")){tablename = line.substring(line.indexOf("`"), line.lastIndexOf("`"));String str =  threadId+"  "+tablename;Integer i = map.get(str)==null?0:map.get(str);i+=1;map.put(str,i);}line = bufferedReader.readLine();}System.out.println(map.toString());}public static void countAsHour() throws IOException, ParseException {String inFileForCount =  "D:\\test\\binsql46-50.txt";//文件内只有删除、更新FileReader fileReader = new FileReader(inFileForCount);BufferedReader bufferedReader = new BufferedReader(fileReader);String line = bufferedReader.readLine();SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd HH:mm:ss");String beginStr = "20220326  12:00:00";Date beginTime = simpleDateFormat.parse(beginStr);Map<String,Integer> m= new HashMap();Date current;while (line != null) {if(line.contains("thread_id")){String substring = "20"+line.substring(1, 16);current= simpleDateFormat.parse(substring);System.out.println(substring);if (current.getTime()+ (8 * 60 * 60 * 1000)<=beginTime.getTime()){String s = simpleDateFormat.format(beginTime.getTime());Integer i = m.get(s)==null?0:m.get(s);i+=1;m.put(s,i);line = bufferedReader.readLine();}else{beginTime= new Date(beginTime.getTime() + (2 * 60 * 60 * 1000));String s = simpleDateFormat.format(beginTime);m.put(s,0);System.out.println(beginTime);continue;}}else{line = bufferedReader.readLine();}}System.out.println(m.toString());}public static void countThreadId() throws IOException {String inFileForCount =  "D:\\test\\binsql46-50.txt";//文件内只有删除、更新FileReader fileReader = new FileReader(inFileForCount);BufferedReader bufferedReader = new BufferedReader(fileReader);String line = bufferedReader.readLine();HashSet set = new HashSet();while (line != null) {if(line.contains("thread_id")){String substring = line.substring(line.indexOf("thread_id="), line.lastIndexOf("exec_time"));set.add(substring);}line = bufferedReader.readLine();}System.out.println(set.size());for (Object o : set) {System.out.println(o+",");}}public static void countOperation() throws IOException {String inFileForCount =  "D:\\test\\binsql46-50.txt";//文件内只有删除、更新FileReader fileReader = new FileReader(inFileForCount);BufferedReader bufferedReader = new BufferedReader(fileReader);String line = bufferedReader.readLine();HashMap<String, Integer> count = new HashMap<>();while (line != null) {if(line.contains("`")){String substring = line.substring(line.indexOf("`"), line.lastIndexOf("`"));Integer i = count.get(substring)==null?0:count.get(substring);i +=1;count.put(substring,i);}line = bufferedReader.readLine();}System.out.println(count.toString());}public static void readAndWrite() throws IOException {//        读取FileReader fileReader = new FileReader(inFileName);BufferedReader bufferedReader = new BufferedReader(fileReader);String line = bufferedReader.readLine();while (line != null) {if (line.contains("thread_id=")) {
//                String peek = Line_Queue.peek();//获取队列头 ;不移除if(Line_Queue.size()==1){Line_Queue.clear();}else{executeQueue();}Line_Queue.add(line);line = bufferedReader.readLine();continue;}if (line.startsWith("###")) {if (line.contains(" UPDATE ")||line.contains(" DELETE ")) {Line_Queue.add(line);line = bufferedReader.readLine();while(line != null&&line.startsWith("###")) {Line_Queue.add(line);line = bufferedReader.readLine();}}}line = bufferedReader.readLine();}bufferedReader.close();fileReader.close();}public static void executeQueue() throws IOException {//        写入int size = Line_Queue.size();for (int i = 0; i < size; i++) {String line = Line_Queue.poll();writer.write(line);writer.newLine();//写换行符
//            this.execute(sql);}writer.flush();}
}

相关文章:

  • 软考 系统架构设计师系列知识点之杂项集萃(69)
  • [Usaco2007 Dec]队列变换 题解
  • Python之web错误处理与异常捕获
  • LeRobot的机器人控制系统(下)
  • 有监督学习——决策树
  • 从3.7V/5V到7.4V,FP6291在应急供电智能门锁中的应用
  • 为什么mosquitto 禁用了 topic “#“后,无法使用主题中包含%c client_id了?
  • 【动手学深度学习】2.1. 数据操作
  • 技术篇-2.4.Python应用场景及开发工具安装
  • 如果验证集缺失或测试集缺失应该怎么办?
  • Cursor远程连接+工具使用
  • redis-7.4.2 通过 systemd管理,rpmbuild spec文件参考
  • 关于初学者对大模型的一些概念的理解
  • 纳斯达克与标普500的技术博弈:解析美股交易系统的低延迟与高安全解决方案
  • java后端-海外登录(谷歌/FaceBook/苹果)
  • 高等数学-空间中的曲线与曲面
  • React 第四十六节 Router中useInRouterContext的使用详细介绍及注意事项
  • 价格行为(PriceAction)复盘 - Google - 250521
  • 嵌入式自学第二十六天(5.22)
  • C#中WSDL文件引用问题
  • 网站获得流量最好的方法是什么 ( )/市场营销教材电子版
  • 有哪些做电子商务的网站/宁波网站推广怎么做
  • 做个网站需要多久网站设计费用多少/谷歌paypal下载
  • 朝阳做网站公司/百度指数官方
  • 湖北宜昌网络科技有限公司/seo优化网站的注意事项
  • wordpress做商城/柏乡seo快排优化