Mysqldump - 不同长度的扩展插入

问题描述 投票:0回答:1

我在两台不同的服务器上有相同数据库的两个副本,并且具有相同版本的 MariaDB。当我在这些上运行 mysqldump (使用默认参数)时,我得到两个非常相似的转储文件,但对于某些表,它以不同的方式分隔扩展插入(来回一行)。

我发现它取决于 net_buffer_length 变量,但两台服务器上的值相同(16384)。我想比较这两个转储文件作为我的集成测试,所以我希望差异为空,所以我得到了误报结果。有人面临(或更好地解决)同样的问题吗?

mariadb mariadb-10.6
1个回答
0
投票

如果您以相同的顺序获取数据,但每行的行数略有不同,请尝试使用相同的 mysqldump 二进制文件,连接到两台主机(或从开发中的生产环境加载后转储并在那里重新转储,这样您的dev after 和 Production after 都是在 dev 中生成的)。如果这没有帮助,您可能需要使用 --skip-extended-insert (如果您实际上打算从这些转储加载,请使用扩展插入进行单独的转储,仅使用跳过扩展插入转储来执行您的操作比较)。

鉴于数据行没有内在顺序,您的目标可能仍然存在问题。您应该使用 --order-by-primary 参数,但如果您的表没有主键或唯一键,那将无济于事。在这种情况下,您可以一次转储一个表并在比较之前对转储文件进行排序。

© www.soinside.com 2019 - 2024. All rights reserved.