mysql 执行匿名块_MySQL 数据校验工具-爱可生

pt-table-checksum是Percona Toolkit的一部分,用于检测MySQL主从库的数据一致性。它通过在主库和从库上计算数据块的checksum来比较,分块处理大表以减少服务器负载。工具具备自动连接从库、动态调整chunk大小、监控副本状态等特性,以确保低影响和高效率的数据校验。用户可以通过不同参数配置执行校验,如--replicate-check和--nocheck-binlog-format等。
摘要由CSDN通过智能技术生成
6ee8b7acb4172474edeec81b1253c3fa.png

1. 概述

pt-table-checksum 是 Percona-Toolkit 的组件之一,用于检测 MySQL 主、从库的数据是否一致。其原理是在主库执行基于 statement 的 SQL 语句来生成主库数据块的checksum,把相同的 SQL 语句传递到从库执行,并在从库上计算相同数据块的 checksum,最后,比较主从库上相同数据块的 checksum 值,由此判断主从数据是否一致。它能在非常大的表上工作的一个原因是,它把每个表分成行块,并检查每个块与单个替换。选择查询。它改变块的大小,使校验和查询在所需的时间内运行。分块表的目的是确保校验和不受干扰,并且不会在服务器上造成太多复制延迟或负载,而不是使用单个大查询处理每个表。这就是为什么默认情况下每个块的目标时间是 0.5 秒。

2. 场景

pt-table-checksum 默认情况下可以应对绝对部分场景,官方说,即使上千个库、上万亿的行,它依然可以很好的工作,这源自于设计很简单,一次检查⼀个表,不需要太多的内存和多余的操作;必要时,pt-table-checksum 会根据服务器负载动态改变 chunk 大小,减少从库的延迟。

为了减少对数据库的干预,pt-table-checksum 还会⾃动侦测并连接到从库,当然如果失败,可以指定 --recursion-method 选项来告诉从库在哪里。它的易用性还体现在,复制若有延迟,在从库 checksum 会暂停直到赶上主库的计算时间点(也通过选项 -- 设定一个可容忍的延迟最大值,超过这个值也认为不一致)。

3. 保障措施

pt-table-checksum 有许多其他的安全措施,以确保它不会⼲扰任何服务器的操作,包括副本。为了做到这⼀点,pt-table-checksum 检测副本并⾃动连接到它们。(如果失败,可以使⽤递归⽅法选项给它⼀个提示。)

该工具持续监控副本。如果任何副本在复制过程中远远落后,pt 表校验和会暂停以使其赶上来。如果任何副本有错误,或者复制停止,pt-table 校验和将暂停并等待。此外,pt-table-checksum 查找问题的常见原因,比如复制过滤器,并且拒绝操作,除⾮您强迫它这样做。复制筛选器是危险的,因为 pt-table-checksum 执行的查询可能与它们发生冲突,并导致复制失败。

pt-table 校验和验证块是否太大而不能安全校验和。它对每个块执行解释查询,并跳过可能大于所需行数的块。您可以使用 --chunk-size-limit 选项配置此保护措施的敏感性。如果一个表因为行数少而要在单个块中对其进行校验,那么 pt-table-checksum 将额外验证该表在副本上是否过大。这避免了以下场景:表在主服务器上是空的,但在副本上非常大,并且在一个大型查询中进行检查,这会导致复制过程中出现非常长的延迟。

还有⼀些其他的保障措施。例如,pt-table-checksum 将它的会话级 innodb_lock_wait_timeout 设置为 1 秒,这样,如果存在锁等待,它将成为受害者,而不是导致其他查询超时。另一个安全措施检查数据库服务器上的负载,如果负载过高则暂停。对于如何做到这一点,没有一个正确的答案,但是默认情况下,如果有超过 25 个并发执行的查询,pt-table-checksum 将暂停。您可能应该使用 --max-load 选项为服务器设置一个合理的值。

校验和通常是一个低优先级的任务,应该让位给服务器上的其他⼯作。然而,一个必须经常重启的共工具是很难使用的。因此,pt 表校验和对错误具有很强的弹性。例如,如果数据库管理员出于任何原因需要杀死 pt-table-checksum 的查询,这就不是一个致命错误。⽤户经常运行 pt-kill 来终止任何长时间运行的校验和查询。该工具将重试一次已杀死的查询,如果再次失败,它将移动到该表的下一个块。如果存在锁等待超时,则应用相同的行为。如果发生这样的错误,工具将打印一个警告,但每个表只打印一次。如果到任何服务器的连接失败,pt-table-checksum 将尝试重新连接并继续⼯作。

4. 操作步骤

1. 创建主从架构

466b432c120409555a8ff49e8435a474.png

安装 mysql(略)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值