mysqldbcompare 使用及参数详解
限制
该工具将每行的主键读取到数据结构中,然后用于生成每行的校验和。主键和校验和随后被排序并比较,以检测哪些行存在差异。由于这种设计,工具在处理非常大的表(许多行)时可能会表现出较慢的性能,特别是对于具有宽主键的表。不建议在主键中使用 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 系统中为 ('),以便工具将反引号引用的标识符作为单个参数读取。例如,要将名为 weird
db.name 的数据库与其他:weirddb.name 进行比较,数据库对必须使用以下语法指定(在非 Windows 系统中): '
weirddb.name`:`other:weird
db.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