Archery系统调用my2sql读取binlog的功能优化

这篇具有很好参考价值的文章主要介绍了Archery系统调用my2sql读取binlog的功能优化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Archery系统集成了my2sql工具,可以通过此功能分析MysQL的binlog,方便SQL回滚,还可以协助异常分析,定位问题。

优化点

解析后没有SQL语句返回,可能的原因是解析过程中遇到了错误,而系统没有捕获错误,更没有将错误异常返回给操作者。

此处的优化,就是解决这一信息黑洞,排除因解析遇错而导致没有SQL语句。换句话说,优化后,当解析过程中遇到Error或fatal时,定会抛出错误。

代码位置

优化代码文件:..../sql/binlog.py

方法---def my2sql(request):

step 1 定义捕获异常的正则表达式

在以下代码的后面

    # 参数转换
    cmd_args = my2sql.generate_args2cmd(args)

添加正则表达式

###### 添加个正则表达式,去判断是不是结果中有fatal 或者 error
    ######例如[2019/01/12 16:37:51] [fatal] context.go:401 start postion(-start-file -start-pos) must less than stop position(-end-file -end-pos)
    fatal_pattern = r'^(\[)\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}\]\W+\[fatal\]'

    ######例如[2019/01/12 16:37:51] [error] binlogstreamer.go:77 close sync with err: ERROR 1236 (HY000): A slave with the same server_uuid/server_id as this slave has connected to the master;
    error_pattern = r'^(\[)\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}\]\W+\[error\]'

    errmsgs = []
    ###2024011201

 step 2 通过正则刷选返回的数据

改造前的代码

            if n <= num and isinstance(line, str):
                if line[0:6].upper() in ("INSERT", "DELETE", "UPDATE"):
                    n = n + 1
                    row_info = {}
                    try:
                        row_info["sql"] = line + ";"
                    except IndexError:
                        row_info["sql"] = line + ";"
                    rows.append(row_info)
            else:
                break

改造后的代码

            if n <= num and isinstance(line, str):
                if line[0:6].upper() in ("INSERT", "DELETE", "UPDATE"):
                    n = n + 1
                    row_info = {}
                    try:
                        row_info["sql"] = line + ";"
                    except IndexError:
                        row_info["sql"] = line + ";"
                    rows.append(row_info)

                ### start add  利用正则判断,筛选有结果中错误的行数
                elif re.search(fatal_pattern,line) or rs.search(error_pattern,line):
                    n = n + 1
                    errmsgs.append(line + ';')
                    #err_info = {} ###注释掉的这段代码是把错误信息当初SQL信息,打印到前端SQL显示端
                    #try:
                    #    err_info['sql'] = line + ';'
                    #except IndexError:
                    #    err_info['sql'] = line + ';'
                    #errmsgs.append(err_info)
                #####  end

            else:
                break

3.异常捕获后,返回

修改前

        if rows.__len__() == 0:
            # 判断是否有异常
            stderr = p.stderr.read()
            if stderr and isinstance(stderr, str):
                result["status"] = 1
                result["msg"] = stderr
                return HttpResponse(json.dumps(result), content_type="application/json")
        # 终止子进程

修改后

        if rows.__len__() == 0:
            # 判断是否有异常
            stderr = p.stderr.read()
            if stderr and isinstance(stderr, str):
                result["status"] = 1
                result["msg"] = stderr
                return HttpResponse(json.dumps(result), content_type="application/json")

        ###start add  将结果中错误信息返回给前端
        if errmsgs.__len__() != 0:
           result['status'] = 1
           result['msg'] = errmsgs
           return HttpResponse(json.dumps(result, cls=ExtendJSONEncoder, bigint_as_string=True), content_type='application/json')
        ### end
        # 终止子进程

 文章来源地址https://www.toymoban.com/news/detail-807282.html

到了这里,关于Archery系统调用my2sql读取binlog的功能优化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • NL2SQL进阶系列(1):DB-GPT-Hub、SQLcoder、Text2SQL开源应用实践详解

    NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(Spider vs BIRD)全面对比优劣分析[Text2SQL、Text2DSL] NL2SQL基础系列(2):主流大模型与微调方法精选集,Text2SQL经典算法技术回顾七年发展脉络梳理 MindSQL 是一个 Python RAG(检索增强生成)库,旨在仅使用几行代码来简

    2024年04月27日
    浏览(32)
  • TEXT2SQL-顶峰:Vanna部署及介绍

    Vanna 是一款采用 MIT 许可的开源 Python RAG (检索增强生成)框架,用于生成 SQL 语句和相关功能。 如何使用 Vanna Vanna 的使用分为两个简单步骤 - 在你的数据上训练一个 RAG \\\"模型\\\",然后提出问题,该问题将返回可设置为自动在你的数据库上运行的 SQL 查询。 1. 在你的数据上训练一

    2024年02月22日
    浏览(29)
  • LLM在text2sql上的应用

    目前,大模型的一个热门应用方向text2sql它可以帮助用户快速生成想要查询的SQL语句。那对于用户来说,大部分简单的sql都是正确的,但对于一些复杂逻辑来说,需要用户在产出SQL的基础上进行简单修改,Text2SQL应用主要还是帮助用户去解决开发时间,减少开发成本。 Text to

    2024年02月08日
    浏览(28)
  • 【REST2SQL】05 GO 操作 达梦 数据库

    【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 【REST2SQL】04 REST2SQL第一版Oracle版实现 信创要求用国产数据库,刚好有项目用的达梦,研究一下go如何操作达梦数据库 登录 达梦 官网,有DM8开发版可以下载,我下载的是X86,Win

    2024年02月01日
    浏览(43)
  • 大模型LLM在 Text2SQL 上的应用实践

    一、前言 目前,大模型的一个热门应用方向Text2SQL,它可以帮助用户快速生成想要查询的SQL语句,再结合可视化技术可以降低使用数据的门槛,更便捷的支持决策。本文将从以下四个方面介绍LLM在Text2SQL应用上的基础实践。 · Text2SQL概述 · LangChain基础知识 · 基于SQLDatabaseCha

    2024年01月16日
    浏览(30)
  • 【REST2SQL】07 GO 操作 Mysql 数据库

    【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 【REST2SQL】04 REST2SQL第一版Oracle版实现 【REST2SQL】05 GO 操作 达梦 数据库 【REST2SQL】06 GO 跨包接口重构代码 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle旗

    2024年01月22日
    浏览(75)
  • 最强开源Text2SQL大模型本地部署的解决方案

      大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的

    2024年02月08日
    浏览(27)
  • 【REST2SQL】08 日志重构增加输出到文件log.txt

    【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 【REST2SQL】04 REST2SQL第一版Oracle版实现 【REST2SQL】05 GO 操作 达梦 数据库 【REST2SQL】06 GO 跨包接口重构代码 【REST2SQL】07 GO 操作 Mysql 数据库 原来的日志只输出到控制台,关闭控制台

    2024年02月01日
    浏览(32)
  • 大模型 LLM RAG在 Text2SQL 上的应用实践

    1. 前言 在上篇文章中「LLM Agent在Text2SQL应用上的实践」介绍了基于AI Agent来优化LLM的Text2SQL转换效果的实践,除此之外我们还可以使用RAG(Retrieval-Augmented Generation)来优化大模型应用的效果。 本文将从以下4个方面探讨通过RAG来优化LLM的Text2SQL转换效果。 1. RAG概述 2. 基于LangC

    2024年02月02日
    浏览(28)
  • NL2SQL进阶系列(1):DB-GPT-Hub开源应用实践

    云鲸智能渠道运营实习面经 一直想找销售实习,但是日常销售实习好难找。。。海投面试中拿到了这个岗位的offer,就给大家分享下这   题解 | #验证IP地址# /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 验证I   题解 | #验证IP地址

    2024年04月23日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包