首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用python实现MySQL结构比对【初级版】

使用Python写了个最基本结构比对告警脚本, 目前这个版本只能做到发现结构存在差异。后续考虑再迭代下,看如何把差异和列明细也报出来。..., passwd=configs.mysql_dest_pass, ) dest_cursor = dest_db.cursor() # 1 获取源端清单 get_src_tb_list...- src_tb_set)) print(f"src比dest多:", list(src_tb_set - dest_tb_set)) # print("------------ 开始比较每个每个列信息...(只比对了列和索引,未包括字符集和排序集)检查完成,存在差异如下 ---> ', s1) else: print('结构(只比对了列和索引,未包括字符集和排序集)检查完成,没有发现存在差异...stop_time = time.time() time_dur = stop_time - start_time print(f"耗时 {time_dur} 秒") readme 内容如下: 上面程序里面,我们没有比对表中字符集和排序集

96320

使用pgCompare比对不同pg数据差异

待比较必须有主键(没有主键会在比对时候被自动跳过,日志中提示 Table xx has no Primary Key, skipping reconciliation) 如果target行比...暂存数组大小和行数batch-progress-report-size = 1000000 # 定义 mod 中用于报告进度行数loader-threads = 2 # 设置将数据加载到临时线程数...,指示观察者是否在检查点期间对暂存执行真空清理log-destination = stdout # 设置临时暂存并行工作器数量。...重新检查仅检查已标记为存在差异行。如果行仍然不匹配,则会报告详细信息。否则,行将被清除并标记为同步。...其它:如果在执行完pgcompare后,数据库里面又增加或者减少了,则需要重新执行 下面的操作:0、清空pgcompare下面的各个(清掉后便于查看最新数据,不清的话则需要根据compare_dt时间戳来判断是哪一次执行比对操作

23310
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL不同环境结构比对并给出修改SQL

    之前用python写了个脚本,用于比对test和prod结构差异(防止出现上prod时候,发生或者索引遗漏情况)。 但是还不够友好,只能找出差异但是不能自动生成fixSQL。...这里再介绍一个小工具 skeema,它免费版功能已经足够强大,可以自动找出差异,并给出fix语句。...test环境和uat环境结构差异 需要权限: test环境: create user user1@'%' identified by 'pass1'; grant select on...上差异建表语句拉到本地文件夹下(执行show create table xxx) 执行 diff后,会把src上建表语句下发到dest _skeema_tmp 这个临时创建库里,然后进行比对,...(比对会自动忽略掉视图) 4 对外键检测基本支持有限(生产上外键一般用很少) 5 对分区支持也有限,看下面的例子 源端执行: CREATE TABLE sales ( money

    61720

    Oracle 与 MySQL 差异分析(3):创建和索引

    Oracle 与 MySQL 差异分析(3):创建和索引 1.1 命名 l Oracle: 名、字段名、索引名等,不能超过30个字符。...l MySQL: 数据库、名、列名,不能超过64个字符。 注意:MySQL 是大小写敏感,所以一般都用小写。...1.3 索引 整个数据库中,MySQL 索引是可以重名MySQL 索引是级别的,但是 Oracle 索引是不可以重名,它索引是数据库级别的。...由于 MySQL 索引命名是级别的,所以删除索引时也要指定名。...MySQL 分区上创建索引是本地索引,不支持全局索引,创建索引不需要 load 关键字。在分区上一般不创建主键或唯一索引,如果要创建的话,需要包含分区列。

    1.3K21

    MySQL 8.0 information_schema.tables和之前版本差异

    在做自动化运维开发过程中,需要从information_schema.tables获取MySQL表相关元信息,发现MySQL8.0和5.7存在差异还是比较大;在MySQL8.0以前,通常会通过infomation_schema...来获取一些元数据,例如从tables中获取下一个auto_increment值,从indexes获取索引相关信息等。...但如果总是要analyze table命令去人为更新才能得到真实数据,那么tables存在意义何在? 在MySQL8.0,数据字典方面做了不少改动。...数据字典有很多相关,但这些是不可见。...原本记录在这些文件中元数据,现在记录就记录在数据字典表里,而数据字典集中存在一个单独innodb空间中,系统文件名为mysql.ibd,也就是说,元数据不再是直接在.frm等文件上读写,而是存在存储引擎上

    1.7K10

    python比较两个文件差异

    使用python脚本比较两个文件差异内容并输出到html文档中,可以通过浏览器打开查看。...一、脚本使用 对比nginx配置文件差异  python python_diff_file.py -f1 web26.conf -f2 web103.conf 二、脚本内容 #!...fromlines和tolines,用于比较内容,格式为字符串组成列表 fromdesc和todesc,可选参数,对应fromlines,tolines差异化文件标题,默认为空字符串 context... 和 numlines,可选参数,context 为True时,只显示差异上下文,为false,显示全文,numlines默认为5, 当context为True时,控制展示上下文行数,当context...为false时,控制不同差异高亮之间移动时“next”开始位置 3.使用argparse传入两个需要对比文件 """ import difflib import argparse import sys

    4.5K00

    python比较两个excel表格差异

    一个同事有两个excel表格要比较差异, 找了一下有相关软件,如: beyond compare, excel compare 但这两个似乎都是直接排序再比较....这个脚本先读入要比较文件中. 读时候 ,如果没有空行就把它和它前面的加一起,直到有空行. 这样比较的话, 不能得到具体那一行有差异, 只有一个大概位置. 如果表格中间空行越少,越精确..../script diff_1.xlsx diff_2.xlsx \n"   sys.exit() def getcontent(table):  #获取xlsx内容   tmp_data = {}...):   f = open(filename, 'w')   f.write(excel_diff)   f.close() def diff_content(table1,table2): #检查两个差异...== i.strip():         tmp.append(j)         break   return tmp         for i in range(0,2):  # 比较几个

    4.6K20

    TiDB 和 MySQL差异

    在 NewSQL 数据库出现之前,一般采用单机数据库(比如 MySQL)作为存储,随着数据量增加,“分库分”是早晚面临问题,即使有诸如 MyCat、ShardingJDBC 等优秀中间件,“分库分...站在业务开发视角,TiDB 最吸引人几大特性是: 支持 MySQL 协议(开发接入成本低); 100% 支持事务(数据一致性实现简单、可靠); 无限水平拓展(不必考虑分库分)。...TiDB 事务和 MySQL 事务差异 MySQL 事务和 TiDB 事务对比 image.png 在 TiDB 中执行事务 b,返回影响条数是 1(认为已经修改成功),但是提交后查询,status...可见,MySQL 事务和 TiDB 事务存在这样差异MySQL 事务中,可以通过影响条数,作为写入(或修改)是否成功依据;而在 TiDB 中,这却是不可行!...和 MySQL 相比,TiDB 底层存储和结构决定了其特殊性和差异性;但是,TiDB 支持 MySQL 协议,它们也存在一些共同之处,比如在 TiDB 中使用“预编译”和“批处理”,同样可以获得一定性能提升

    1.4K00

    ABAP 取两个交集 比较两个不同

    SAP自带函数: CTVB_COMPARE_TABLES和BKK_COMPARE_TABLES; 似乎可以比较两个,得出第二个内不同于第一个内部分...因为,我在测试数据时,发现这两个函数效果不那么简单。 如果上述函数确实可以,提取两个不同部分,则我可以据此做两次比较,得到两个交集。...所以,我先用另外一种方式解决了-自己写了一个提取两个交集函数,供大家检阅: *" IMPORTING *" VALUE(ITAB1) TYPE INDEX TABLE...以下转自华亭博客:感谢华亭分享: 函数模块:CTVB_COMPARE_TABLES 这个函数模块比较两个,将被删除、增加和修改行分别分组输出。...,做为内行是否为增加判断条件。

    3K30

    python filecmp.dircmp实现递归比对两个目录方法

    使用python filecmp模块dircmp类可以很方便比对两个目录,dircmp用法已经有很多文章介绍,不再赘述。...而x.report_full_closure()可以递归打印所有子目录比对信息,但是输出太多,大多数情况下我们可能只关心两目录不同之处。...本文编写脚本,重点关注并实现两个目标: 1)递归比对两个目录及其所有子目录。...py脚本compare_dir.py内容如下: # -*- coding: utf-8 -*- """ @desc 使用filecmp.dircmp递归比对两个目录,输出比对结果以及统计信息。...总结 到此这篇关于filecmp.dircmp实现递归比对两个目录文章就介绍到这了,更多相关filecmp.dircmp实现递归比对两个目录内容请搜索ZaLou.Cn以前文章或继续浏览下面的相关文章希望大家以后多多支持

    1.2K30

    MySQL FAQ 系列 — 如何将两个名对调

    问题 有位同学问我,在类似 pt-osc 场景下,需要将两个名对调,怎么才能确保万无一失呢? 分析 估计其他同学就笑了,名对掉还不简单吗,相互 RENAME 一下嘛。...但是,我们想要是同时完成名对调,如果是先后对掉,可能会导致有些数据写入失败,那怎么办? 回答 其实也不难,从 MySQL 手册里就能找到方法,那就是:同时锁定2个,不允许写入,然后对调名。...我们通常只锁一个,那么同时锁两个应该怎么做呢,可以用下面的方法: LOCK TABLES t1 WRITE, t2 WRITE; ALTER TABLE t1 RENAME TO t3; ALTER...TABLE t2 RENAME TO t1; ALTER TABLE t3 RENAME TO t2; UNLOCK TABLES; 看到了吧,其实很简单,两个同时加级写锁,然后用 ALTER 语法改名就可以了...废话挺多,谢谢各位客官耐心看完 :)

    1.6K00

    MySQL 8.0与MySQL 5.7binlog差异小结

    在本文中,我们将介绍MySQL 8.0版本与MySQL 5.7版本在binlog方面的主要差异,以及这些差异原因和影响。 2....,不记录具体数据变化,而是记录SQL语句上下文信息,如执行时间、用户、数据库、等。...MySQL 8.0版本与MySQL 5.7版本在binlog格式方面的主要差异是: • MySQL 8.0版本引入了一个新系统变量binlog_expire_logs_seconds,用来设置binlog...MySQL 8.0版本与MySQL 5.7版本在binlog管理方面的主要差异是: • MySQL 8.0版本引入了一个新系统变量binlog_expire_logs_seconds,用来设置binlog...MySQL 5.7没有原生支持二进制日志加密 在线binlog重置:MySQL 8.0支持在线重置二进制日志,而MySQL 5.7需要停止和启动MySQL服务进行重置 新事务描述事件:MySQL 8.0

    40710
    领券