mysqldbcompare 使用及参数详解

embedded/2024/11/22 19:47:55/

限制

该工具将每行的主键读取到数据结构中,然后用于生成每行的校验和。主键和校验和随后被排序并比较,以检测哪些行存在差异。由于这种设计,工具在处理非常大的表(许多行)时可能会表现出较慢的性能,特别是对于具有宽主键的表。不建议在主键中使用 BLOB 字段的表上使用此工具。

所需权限

用户必须具有对两个连接中要比较的数据库的 SELECT、CREATE TEMPORARY TABLES 和 SHOW VIEW 权限。用户还必须对 mysql 数据库具有 SELECT 权限。如果启用了二进制日志并使用了 --disable-binary-logging 选项,则用户还必须具有 SUPER 权限。

注意事项

在比较过程中数据不可以改变,否则出现错误。

登录用户必须具有读取所有列出的数据库和表的适当权限。对于 --difftype 选项,允许的值不区分大小写。此外,值可以指定为有效值的任何明确前缀。例如,--difftype=d 指定差异类型。如果前缀与多个有效值匹配,则会发生错误。

MySQL 客户端工具的路径应包含在 PATH 环境变量中,以便使用带有登录路径的认证机制。这允许工具使用 my_print_defaults 工具,该工具用于从登录配置文件 (.mylogin.cnf) 中读取登录路径值。

如果作为参数指定的任何数据库标识符包含特殊字符或是保留字,则必须使用反引号()进行适当引用。反引号引用的名称必须根据操作系统用单引号或双引号进行引用,即在 Windows 中为 ("),在非 Windows 系统中为 ('),以便工具将反引号引用的标识符作为单个参数读取。例如,要将名为 weirddb.name 的数据库与其他:weirddb.name 进行比较,数据库对必须使用以下语法指定(在非 Windows 系统中): 'weirddb.name`:`other:weirddb.name`'。

mysqldbcompare的语法如下:
 
$ mysqldbcompare --server1=user:pass@host:port:socket --server2=user:pass@host:port:socket db1:db2
以上参数中:
 
--server1:MySQL服务器1配置。
--server2:MySQL服务器2配置。如果是同一服务器,--server2可以省略。
db1:db2:要比较的两个数据库。如果比较不同服务器上的同名数据库,可以省略:db2。
--all:比较所有两服务器上所有的同名数据库。--exclude排除无需比较的数据库
--run-all-tests:运行完整比较,遇到第一次差异时不停止。
--changes-for=:修改对象。例如--changes-for=server2,那么对比以sever1为主,生成的差异的修改也是针对server2的对象的修改。
-d DIFFTYPE,--difftype=DIFFTYPE:差异的信息显示的方式,有[unified|context|differ|sql],默认是unified。如果使用sql,那么就直接生成差异的SQL,这样非常方便。
--show-reverse:在生成的差异修改里面,同时会包含server2和server1的修改。
--skip-table-options:保持表的选项不变,即对比的差异里面不包括表名、AUTO_INCREMENT、ENGINE、CHARSET等差异。
--skip-diff:跳过对象定义比较检查。所谓对象定义,就是CREATE语句()里面的部分,--skip-table-options是()外面的部分。
--skip-object-compare:默认情况下,先检查两个数据库中相互缺失的对象,再对都存在对象间的差异。这个参数的作用就是,跳过第一步,不检查相互缺失的对象。
--skip-checksum-table:数据一致性验证时跳过CHECKSUM TABLE。
--skip-data-check:跳过数据一致性验证。
--skip-row-count:跳过字段数量检查。

• --all, -a
比较两个服务器之间所有相同名称的数据库(共同的数据库)。该选项会忽略以下数据库:INFORMATION_SCHEMA、PERFORMANCE_SCHEMA、mysql 和 sys。
注意:自 Utilities 1.5.5 起,sys 数据库被忽略。

• --help
显示帮助信息并退出。

• --license
显示许可证信息并退出。

• --changes-for=direction
指定服务器以显示转换以匹配另一个服务器。例如,要查看将 server1 上的对象定义转换为匹配 server2 上的相应定义的转换,请使用 --changes-for=server1。允许的值为 server1 和 server2。默认值为 server1。

• --character-set=charset
设置客户端字符集。默认值从服务器变量 character_set_client 中检索。

• --difftype=difftype, -ddifftype
指定差异显示格式。允许的格式值为 unified、context、differ 和 sql。默认值为 unified。

• --disable-binary-logging
如果启用了二进制日志,则在操作期间禁用它,以防止比较操作写入二进制日志。注意:禁用二进制日志需要 SUPER 权限。

• --exclude=exclude, -xexclude
排除一个或多个数据库的操作,可以使用特定名称(如 db1)或搜索模式。可以多次使用此选项以指定多个排除项。默认情况下,模式使用数据库模式(如 LIKE)。使用 --regexp 选项,模式使用正则表达式进行名称匹配。
自 1.4.0 版本新增。

• --format=format, -fformat
指定更改或缺失行的显示格式。允许的格式值为 grid、csv、tab 和 vertical。默认值为 grid。

• --compact
通过减少在差异结果中显示的控制行数量来压缩输出。此选项应与以下差异类型之一一起使用:unified 或 context。与 unified 差异类型和 grid 格式一起使用时最有效。

• --quiet, -q
不打印任何内容。仅返回成功或失败的退出代码。

• --regexp, --basic-regexp, -G
使用 REGEXP 运算符进行模式匹配。默认情况下使用 LIKE 进行匹配。
自 1.4.0 版本新增。

• --run-all-tests, -t
在找到第一个差异时不停止。处理所有对象。

• --server1=source
第一个服务器的连接信息。连接到服务器时,必须指定连接参数,例如用户名、主机名、密码和端口或套接字。MySQL Utilities 提供多种方式来提供此信息。所有方法都需要通过命令行选项(如 --server、--master、--slave 等)指定选择。方法包括以下几种,从最安全到最不安全排序:

  • 使用 .mylogin.cnf 文件中的登录路径(加密,不可见)。示例:loginpath[:port][:socket]
  • 使用配置文件(未加密,不可见)。注意:在 1.5.0 版本中可用。示例:configuration-file-path[:section]
  • 在命令行中指定数据(未加密,可见)。示例:user[:passwd]@host[:port][:socket]

• --server2=source
第二个服务器的连接信息。连接到服务器时,必须指定连接参数,例如用户名、主机名、密码和端口或套接字。MySQL Utilities 提供多种方式来提供此信息。所有方法都需要通过命令行选项(如 --server、--master、--slave 等)指定选择。方法包括以下几种,从最安全到最不安全排序:

  • 使用 .mylogin.cnf 文件中的登录路径(加密,不可见)。示例:loginpath[:port][:socket]
  • 使用配置文件(未加密,不可见)。注意:在 1.5.0 版本中可用。示例:configuration-file-path[:section]
  • 在命令行中指定数据(未加密,可见)。示例:user[:passwd]@host[:port][:socket]

• --show-reverse
生成一个转换报告,包含将指定对象定义反向符合的 SQL 语句。如果 --changes-for 设置为 server1,则同时生成 server2 的转换。注意:反向更改以注释形式标注和标记。

• --skip-checksum-table
跳过数据一致性检查中的 CHECKSUM TABLE 步骤。
自 1.4.3 版本新增。

• --skip-data-check
跳过数据一致性检查。

• --skip-diff
跳过对象定义差异检查。

• --skip-object-compare
跳过对象比较检查。

• --skip-row-count
跳过行计数检查。

• --span-key-size=number of bytes to use for key
更改用于比较表内容的键的大小。更高的值可以帮助在比较大型数据库时获得更准确的结果,但可能会减慢算法。默认值为 8。

• --ssl-ca
包含受信任 SSL CA 列表的文件路径。

• --ssl-cert
用于建立安全连接的 SSL 证书文件的名称。

• --ssl-key
用于建立安全连接的 SSL 密钥文件的名称。

• --ssl
指定服务器连接是否需要使用 SSL。如果无法建立加密连接,则连接尝试失败。默认设置为 0(不需要 SSL)。

• --verbose, -v
指定显示的信息量。可以多次使用此选项以增加信息量。例如,-v = 详细,-vv = 更多详细,-vvv = 调试。

• --version
显示版本信息并退出。

• --use-indexes
列出要使用的索引。如果表没有主键或它有多个唯一索引且没有空列,请使用此选项选择要使用的索引。使用格式:--useindexes="table1.indexA[;table2.indexB;]"。

• --width=number
更改测试报告的显示宽度。默认值为 75 个字符。

文档:https://downloads.mysql.com/docs/mysql-utilities-1.5-en.a4.pdf#page=86&zoom=100,48,801


http://www.ppmy.cn/embedded/139691.html

相关文章

Maven详解

文章目录 Maven详解一、引言二、Maven基础1、Maven安装与配置1.1、下载与安装1.2、配置环境变量1.3、验证安装 2、Maven项目结构 三、Maven依赖管理3.1、依赖配置3.2、依赖范围 四、Maven构建生命周期4.1、常用Maven命令 五、Maven私服5.1、Nexus安装与配置5.1.1、下载与安装Ne…

排序算法:直接插入排序,希尔排序,选择排序,快速排序,堆排序,归并排序

1.直接插入排序 基本思想:把待排序的数按照大小逐个插入到前面已经排序好的有序序列中,直到所有的都插入完为止,得到一个新的有序序列。 如图所示,当插入第i个(i>1)元素的时候,前面的arr[0]…

wps PPT debug

wps无法调整PPT单元格高度 https://zhidao.baidu.com/question/1801894280933920947.html wps如何自定义母版 可以直接右上角搜母版,然后进入“幻灯片母版”。进入后可以修改各个页版式。 原来好像没有添加占位符的功能,现在看已经有了。但是使用的时…

驰骋资讯高速:Spring Boot汽车新闻网站

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理汽车资讯网站的相关信息成为必然。开发合适…

独家原创 | SCI 1区 高创新预测模型!

往期精彩内容: 时序预测:LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较 全是干货 | 数据集、学习资料、建模资源分享! EMD变体分解效果最好算法——CEEMDAN(五)-CSDN博客 拒绝信息泄露!VMD滚动分…

Docker1:认识docker、在Linux中安装docker

欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…

Python入门(12)--数据处理

Python数据处理:从JSON、CSV到XML的全面解析 🔍 1. JSON数据处理 {} JSON(JavaScript Object Notation)是现代数据交换的核心格式,在Python中处理JSON变得异常简单而强大。本节将深入探讨JSON处理的方方面面。 1.1 …

[linux] linux c实现共享内存读写操作

IPC_PRIVATE IPC_PRIVATE 是用于创建新的 System V IPC(Inter-Process Communication,进程间通信)对象的特殊键值。在使用 System V 共享内存、消息队列或信号量时,IPC_PRIVATE 可以作为 key 参数传递给 shmget、msgget 或 semge…