GoGPT Best VPN GoSearch

OnWorks 网站图标

mysqldbcompare - 云端在线

在 OnWorks 免费托管服务提供商中通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器运行 mysqldbcompare

这是 mysqldbcompare 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


mysqldbcompare - 比较两个数据库并识别差异

概要


mysqldb比较 [选项] db1 [:db2] ...

商品描述


此实用程序比较来自两个数据库的对象和数据以找出差异。 它
识别两个数据库中具有不同定义的对象并将它们呈现在
一种差异风格的选择格式。 数据的差异使用类似的
差异样式格式。 更改或丢失的行以 GRID、CSV、
TAB,或垂直。

使用符号 db1:db2 来命名要比较的两个数据库,或者,仅使用 db1 来命名
比较两个同名的数据库。 后一种情况是一个方便的符号
比较不同服务器上的同名数据库。

可以针对单个服务器上的两个不同名称的数据库运行比较
仅指定 --服务器1 选项。 用户还可以通过以下方式连接到另一台服务器
指定 --服务器2 选项。 在这种情况下,db1 取自 server1,db2 取自
服务器2。

数据库中考虑的对象包括表、视图、触发器、过程、
函数和事件。 每个对象类型的计数可以用 -vv 选项。

使用一系列称为测试的步骤执行检查。 默认情况下,该实用程序停止
在第一次失败的测试中,但您可以指定 --运行所有测试 选项导致
无论最终状态如何,都可以运行所有测试的实用程序。

注意:使用 --运行所有测试 可能会产生预期的级联故障。 例如,如果行
被比较的两个表之间的计数不同,数据一致性也会失败。

测试包括以下内容:

1. 检查数据库定义

数据库存在前提条件检查确保两个数据库都存在。 如果他们这样做
不,无法进一步处理,并且 --运行所有测试 选项被忽略。

2.检查两个数据库中的对象是否存在

对两个数据库中的对象的测试都可以识别一个或多个数据库中缺少的对象。
另一个数据库。 其余测试仅适用于同时出现在
数据库。 要跳过此测试,请使用 --跳过对象比较 选项。 这很有用
当数据库中存在已知的丢失对象时。

3. 比较对象定义

定义( CREATE 陈述)进行比较并提出差异。 到
跳过这个测试,使用 --跳过差异 选项。 当有对象时这很有用
只有您想忽略的名称差异。

4. 检查表格行数

此检查可确保两个表具有相同的行数。 这并不能确保
表数据是一致的。 这只是一个粗略的检查以表明可能
一个表或另一个表中缺少行。 数据一致性检查确定
缺少行。 要跳过此测试,请使用 --跳过行数 选项。

5.检查表数据一致性

此检查从一个或另一个识别更改的行以及丢失的行
数据库中的表。 更改的行显示为差异样式报告
选择的格式(电网 默认情况下)和缺失的行也使用
选择的格式。 要跳过此测试,请使用 --跳过数据检查 选项。

您可能希望使用 --skip-xxx 选项仅运行其中一项测试。 这可能是
在工作使两个数据库同步时很有帮助,以避免运行所有
在此过程中反复进行测试。

每个测试都以以下状态之一结束:

· 通过

测试成功。

· 失败

测试失败。 错误显示在测试状态行之后。

· SKIP

由于缺少先决条件或跳过选项,测试被跳过。

· 警告

测试遇到异常但并非致命的错误。

· -

该测试不适用于该对象。

要指定如何显示差异样式输出,请将以下值之一与
--差异类型 选项​​:

· 统一 (默认)

显示统一格式输出。

· 上下文

显示上下文格式输出。

· 不同

显示不同风格的格式输出。

· SQL

显示 SQL 转换语句输出。

要指定如何显示更改或丢失行的输出,请使用以下方法之一
值与 - 格式 选项​​:

· (默认)

以网格或表格格式显示输出,如 MySQL的 监控。

· CSV

以逗号分隔值格式显示输出。

· 标签

以制表符分隔的格式显示输出。

· 垂直

以单列格式显示输出,就像 \G 命令的那样 MySQL的
监控。

这个 --更改为 选项控制差异的方向(通过指定
要转换的对象)在差异报告(默认)或转换中
报告(指定 --差异类型=sql 选项)。 考虑以下命令:

mysqldbcompare --server1=root@host1 --server2=root@host2 --difftype=sql \
db1:dbx

最左边的数据库 (db1) 存在于 --服务器1 选项
(主机 1)。 最右边的数据库 (dbx) 存在于 --服务器2
选项 (host2)。

· --changes-for=server1:产生显示如何定义的输出
server1 上的对象类似于 server2 上相应对象的定义。

· --changes-for=server2:产生显示如何定义的输出
server2 上的对象类似于 server1 上相应对象的定义。

默认方向是 server1。

您必须为帐户提供连接参数(用户、主机、密码等)
具有访问操作中所有对象的适当权限。

如果该实用程序要在启用了二进制日志记录的服务器上运行,并且您没有
想要记录比较步骤,请使用 --禁用二进制日志记录 选项。
配置

mysqldb比较 接受以下命令行选项:

· --全部,-a

包括所有数据库。 在 1.3.5 版中添加。

· - 帮助

显示帮助消息并退出。

· --changes-for=

指定服务器以显示与其他服务器匹配的转换。 例如,到
请参阅转换 server1 上的对象定义以匹配
server2上的对应定义,使用 --changes-for=server1. 允许的值为
服务器1服务器2。 默认是 服务器1.

· --difftype= , -d

指定差异显示格式。 允许的格式值为 统一, 上下文,
不同SQL。 默认是 统一.

· --禁用二进制日志记录

如果启用了二进制日志记录,请在操作期间禁用它以防止比较
操作被写入二进制日志。 注意:禁用二进制日志
需要 特权。

· --排除= , -X

使用特定名称从操作中排除一个或多个数据库,例如
db1 或搜索模式。 多次使用此选项可指定多个
排除。 默认情况下,模式使用数据库模式,例如 。 随着 --正则表达式
选项,模式使用正则表达式来匹配名称。 在 1.3.5 版中添加。

· --格式= , -F

指定更改或丢失行的显示格式。 允许的格式值为
, CSV, 标签垂直。 默认是 .

· --安静,-q

不要打印任何东西。 仅返回成功或失败的退出代码。

· --regexp, --basic-regexp, -G

使用 REGEXP 操作员。 默认是使用 HPMC胶囊
匹配。 在 1.3.5 版中添加。

· --运行所有测试,-t

不要停留在发现的第一个差异处。 处理所有对象。 快捷方式从
-a 到 -t 在 1.3.5 版本中。

· --server1=

第一台服务器的连接信息格式为:
<用户>[:passwd文件>]@主持人>[:端口>][:插座>] 或登录路径>[:端口>][:插座>]。

· --server2=

第二台服务器的连接信息采用以下格式:
<用户>[:passwd文件>]@主持人>[:端口>][:插座>] 或登录路径>[::端口>][::插座>]。

· --显示反转

生成包含 SQL 语句以符合对象的转换报告
反向指定的定义。 例如,如果 --changes-for 设置为 server1,
还为 server2 生成转换。 注:反向变化有注释
并标记为注释。

· --跳过数据检查

跳过数据一致性检查。

· --跳过差异

跳过对象定义差异检查。

· --跳过对象比较

跳过对象比较检查。

· --跳过行计数

跳过行计数检查。

· --span-key-size=

更改用于比较表内容的键的大小。 较高的值有助于
比较大型数据库可以获得更准确的结果,但可能会降低算法速度。

默认值为 8。

· --详细,-v

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

· - 版本

显示版本信息并退出。

· --width=

更改测试报告的显示宽度。 默认值为 75 个字符。
附注

登录用户必须具有读取所有数据库和表的适当权限
上市。

如报名参加 --差异类型 选项,允许的值不区分大小写。 此外,
可以将值指定为有效值的任何明确前缀。 例如,
--差异类型=d 指定不同的类型。 如果前缀匹配多个,则会发生错误
有效值。

MySQL 客户端工具的路径应包含在 PATH 环境变量中
为了使用带有登录路径的身份验证机制。 这将允许实用程序
使用 my_print_defaults 工具,该工具需要从
登录配置文件 (.mylogin.cnf)。

如果指定为参数的任何数据库标识符包含特殊字符或者是
保留字,那么它必须适当地用反引号 (`)。 反过来,名字
用反引号引用也必须用单引号或双引号引用,具体取决于
操作系统,即(") 在 Windows 或 (') 在非 Windows 系统中,为了
将反引号引用的标识符作为单个参数读取的实用程序。 例如,到
将数据库与名称进行比较 奇怪的`db.name - 其他:奇怪的`db.name, 数据库对
必须使用以下语法指定(在非 Windows 中):
'`奇怪的``db.name`:`other:weird``db.name`'.
示例

使用以下命令比较本地服务器上的emp1和emp2数据库,并
即使之前的测试失败,也要运行所有测试:

$ mysqldbcompare --server1=root@localhost emp1:emp2 --run-all-tests
# 本地主机上的 server1:...已连接。
# 检查 server1 上的数据库 emp1 和 server2 上的 emp2
警告:server2:emp2 中的对象,而不是 server1:emp1 中的对象:
触发器:trg
程序:p1
表:t1
视图:v1
定义行数据
类型对象名称差异计数检查
-------------------------------------------------- -------------------------
功能 f1 通过 - -
TABLE 部门通过 pass FAIL
在行之间发现的数据差异:
--- emp1.部门
+++ emp2.​​departments
@@ -1,4 + 1,4 @@
************************ 1. 行 ************************ ***
部门编号:d002
- 部门名称:不知道
+ 部门名称:财务
1 行。
emp1.departments 中的行不在 emp2.​​departments 中
************************ 1. 行 ************************ ***
部门编号:d008
部门名称:研究
1 行。
emp2.departments 中的行不在 emp1.​​departments 中
************************ 1. 行 ************************ ***
部门编号:d100
部门名称:愚蠢
1 行。
表 dept_manager pass pass pass
数据库一致性检查失败。
# ...完毕

鉴于:具有相同表布局的两个数据库。 每个表的数据包含:

mysql> select * from db1.t1;
+---+----------------+
| 一个| 乙 |
+---+----------------+
| 1 | 测试 789 |
| 2 | 测试 456 |
| 3 | 测试 123 |
| 4 | 新行 - db1 |
+---+----------------+
4 行(0.00 秒)
mysql> select * from db2.t1;
+---+----------------+
| 一个| 乙 |
+---+----------------+
| 1 | 测试 123 |
| 2 | 测试 456 |
| 3 | 测试 789 |
| 5 | 新行 - db2 |
+---+----------------+
4 行(0.00 秒)

要生成数据转换的 SQL 语句,使 db1.t1 与 db2.t1 相同,
使用 --changes-for=server1 选项。 我们还必须包括 -a 选项以确保
运行数据一致性测试。 以下命令说明了使用的选项和
生成的结果摘录:

$ mysqldbcompare --server1=root:root@localhost \
--server2=root:root@localhost db1:db2 --changes-for=server1 -a \
--差异类型=sql
[...]
# 定义行数据
# 输入对象名称差异计数
查看 #
-------------------------------------------------- -----------------------
# TABLE t1 pass pass 失败
# # 方向 = server1 的数据转换:
# 行间发现数据差异:UPDATE db1.t1 SET b = 'Test 123'
哪里 a = '1'; 更新 db1.t1 SET b = 'Test 789' WHERE a = '3'; 删除
从 db1.t1 WHERE a = '4'; INSERT INTO db1.t1 (a, b) VALUES('5', 'New
行 - db2');
# 数据库一致性检查失败。 # # ...完毕

同样,当运行相同的命令时 --changes-for=server2--差异类型=sql
生成以下报告:

$ mysqldbcompare --server1=root:root@localhost \
--server2=root:root@localhost db1:db2 --changes-for=server2 -a \
--差异类型=sql
[...]
# 定义行数据
# 输入对象名称差异计数
查看 #
-------------------------------------------------- -----------------------
# TABLE t1 pass pass 失败
# # 方向 = server2 的数据转换:
# 行间发现数据差异:UPDATE db2.t1 SET b = 'Test 789'
哪里 a = '1'; 更新 db2.t1 SET b = 'Test 123' WHERE a = '3'; 删除
从 db2.t1 WHERE a = '5'; INSERT INTO db2.t1 (a, b) VALUES('4', 'New
行 - db1');

随着 --差异类型=sql SQL 生成选项集, --显示反转 显示对象
两个方向的转换。 以下是结果的摘录:

$ mysqldbcompare --server1=root:root@localhost \
--server2=root:root@localhost db1:db2 --changes-for=server1 \
--show-reverse -a --difftype=sql
[...]
# 定义行数据
# 输入对象名称差异计数
查看 #
-------------------------------------------------- -----------------------
# TABLE t1 pass pass 失败
# # 方向 = server1 的数据转换:
# 行间发现数据差异:UPDATE db1.t1 SET b = 'Test 123'
哪里 a = '1'; 更新 db1.t1 SET b = 'Test 789' WHERE a = '3'; 删除
从 db1.t1 WHERE a = '4'; INSERT INTO db1.t1 (a, b) VALUES('5', 'New
行 - db2');
# 方向 = server2 的数据转换:
# 行间发现数据差异:UPDATE db2.t1 SET b = 'Test 789'
哪里 a = '1'; 更新 db2.t1 SET b = 'Test 123' WHERE a = '3'; 删除
从 db2.t1 WHERE a = '5'; INSERT INTO db2.t1 (a, b) VALUES('4', 'New
行 - db1');
# 数据库一致性检查失败。 # # ...完毕

版权


使用onworks.net 服务在线使用mysqldbcompare


免费服务器和工作站

下载 Windows 和 Linux 应用程序

Linux 命令

Ad




×
广告
❤️在这里购物、预订或购买——免费,有助于保持服务免费。