GoGPT Best VPN GoSearch

OnWorks 网站图标

pt-heartbeatp - 云端在线

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

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

程序:

您的姓名


pt-heartbeat - 监控 MySQL 复制延迟。

概要


用法:pt-heartbeat [OPTIONS] [DSN] --update|--monitor|--check|--stop

pt-heartbeat 测量 MySQL 或 PostgreSQL 服务器上的复制延迟。 你可以用它来
更新主节点或监控副本。 如果可能,从 MySQL 连接选项中读取
您的 .my.cnf 文件。

启动守护进程以更新 master 上的 test.heartbeat 表:

pt-heartbeat -D test --update -h 主服务器 --daemonize

监控从属设备上的复制延迟:

pt-heartbeat -D 测试 --monitor -h slave-server

pt-heartbeat -D test --monitor -h 从服务器 --dbi-driver Pg

检查从机滞后一次并退出(使用可选的 DSN 指定从机主机):

pt-heartbeat -D test --check h=从服务器

风险


Percona Toolkit 是成熟的,在现实世界中得到验证,并经过良好测试,但所有数据库
工具会给系统和数据库服务器带来风险。 在使用这个工具之前,
请:

· 阅读工具的文档

· 查看工具已知的“BUGS”

· 在非生产服务器上测试该工具

· 备份您的生产服务器并验证备份

商品描述


pt-heartbeat 是一个由两部分组成的 MySQL 和 PostgreSQL 复制延迟监控系统,
通过查看实际复制的数据来衡量延迟。 这避免了依赖
复制机制本身,这是不可靠的。 (例如,“显示奴隶状态”
MySQL)。

第一部分是 pt-heartbeat 的“--update”实例,它连接到一个 master 和
每“--interval”秒更新一个时间戳(“心跳记录”)。 自从心跳
table 可能包含来自多个 master 的记录(参见“MULTI-SLAVE HIERARCHY”),
服务器的 ID (@@server_id) 用于标识记录。

第二部分是 pt-heartbeat 的“--monitor”或“--check”实例,它连接到
从站,检查来自其直接主站或指定的复制的心跳记录
“--master-server-id”,并计算与当前系统时间的差异。 如果
从站和主站之间的复制延迟或中断,计算出的差异
如果指定了“--monitor”,将大于零并可能增加。

您必须在主服务器上手动创建心跳表或使用“--create-table”。
有关正确的心跳表结构,请参阅“--create-table”。 “MEMORY”存储
对于 MySQL,建议使用引擎,但当然不是必需的。

心跳表必须包含心跳行。 默认插入心跳行
如果它不存在。 可以使用“--[no]insert-heartbeat-row”禁用此功能
选项,以防数据库用户没有 INSERT 权限。

pt-heartbeat 只依赖于被复制到 slave 的心跳记录,所以它
无论复制机制如何(内置复制,系统,如
连续钨等)。 它适用于复制层次结构中的任何深度; 为了
例如,它会可靠地报告一个奴隶落后于它的主人的主人的主人多远。 和
如果复制停止,它将继续工作并报告(准确!)
奴隶越来越落后于主人。

pt-heartbeat 的最大分辨率为 0.01 秒。 主机和从机上的时钟
服务器必须通过 NTP 紧密同步。 默认情况下,“--update”检查发生在
秒的边缘(例如 00:01)和“--monitor”检查在几秒之间发生
(例如 00:01.5)。 只要服务器的时钟紧密同步和复制
事件在不到半秒内传播,pt-heartbeat 将报告零秒
的延迟。

如果连接有错误,pt-heartbeat 将尝试重新连接,但在以下情况下不会重试
首次启动时无法连接。

“--dbi-driver”选项还允许您使用 pt-heartbeat 来监控 PostgreSQL。 这是
据报道与 Slony-1 复制配合得很好。

多从机 等级制度


如果复制层次结构有多个从属,它们是其他从属的主控,例如
"master -> slave1 -> slave2", "--update" 实例可以在 slaves 和
掌握。 默认心跳表(请参阅“--create-table”)以“server_id”为键
列,因此每个服务器将更新“server_id=@@server_id”所在的行。

对于“--monitor”和“--check”,如果没有指定“--master-server-id”,该工具会尝试
发现并使用奴隶的直接主人。 如果失败,或者如果您想要显示器延迟
从另一个主服务器,然后您可以指定要使用的“--master-server-id”。

例如,如果复制层次结构是“master -> slave1 -> slave2”
对应的服务器 ID 1、2 和 3,您可以:

pt-heartbeat --daemonize -D 测试 --update -h master
pt-heartbeat --daemonize -D 测试 --update -h slave1

然后检查(或监控)从 master 到 slave2 的复制延迟:

pt-heartbeat -D 测试 --master-server-id 1 --check slave2

或者检查从slave1到slave2的复制延迟:

pt-heartbeat -D 测试 --master-server-id 2 --check slave2

停止“--update”实例一个 slave1 不会影响 master 上的实例。

AND 奴隶 状态


默认心跳表(请参阅“--create-table”)具有用于保存信息的列
“显示主状态”和“显示从状态”。 这些列是可选的。 如果有的话
目前,他们的相应信息将被保存。

佩尔科纳 数据库


尽管 pt-heartbeat 应该适用于所有支持的 Percona XtraDB Cluster 版本
(PXC),我们建议使用 5.5.28-23.7 及更新版本。

如果您在集群节点之间设置心跳实例,请记住,因为
集群的速度由它最慢的节点决定,pt-heartbeat不会上报
集群本身有多快,但只有事件从一个节点复制到多快
另一个。

您必须为“--monitor”和“--check”实例指定“--master-server-id”。

配置


至少指定“--stop”、“--update”、“--monitor”或“--check”之一。

“--update”、“--monitor”和“--check”是互斥的。

“--daemonize”和“--check”是互斥的。

此工具接受额外的命令行参数。 参考“概要”和用法
详细信息。

--询问通行证
连接 MySQL 时提示输入密码。

--字符集
简写:-A; 类型:字符串

默认字符集。 如果值为 utf8,则将 STDOUT 上的 Perl 的 binmode 设置为 utf8,
将 mysql_enable_utf8 选项传递给 DBD::mysql,然后运行 ​​SET NAMES UTF8
连接到 MySQL。 任何其他值在没有 utf8 层的 STDOUT 上设置 binmode,
并在连接到 MySQL 后运行 SET NAMES。

- 查看
检查一次从机延迟并退出。 如果您还指定了“--recurse”,该工具将尝试
发现给定奴隶的奴隶并检查和打印他们的滞后。 这
在延迟之前打印每个从站的主机名或 IP 和端口。 仅“--recurse”
与 MySQL 一起使用。

--check-只读
检查服务器是否启用了只读; 如果是,该工具将跳过执行任何操作
插入。

--配置
类型:数组

阅读这个逗号分隔的配置文件列表; 如果指定,这必须是第一个
命令行选项。

--创建表
如果不存在,则创建心跳“--table”。

此选项会创建由“--database”和“--table”指定的表
使用以下 MAGIC_create_heartbeat 表定义:

创建表心跳(
ts VARCHAR(26) 非空,
server_id int unsigned NOT NULL 主键,
文件 VARCHAR(255) 默认空值,--显示主状态
位置 bigint unsigned DEFAULT NULL, -- 显示主状态
中继主日志文件 VARCHAR(255) 默认空值, -- 显示从机状态
exec_master_log_pos bigint unsigned DEFAULT NULL -- 显示从属状态
);

心跳表至少需要一行。 如果您手动创建心跳
表,那么您必须通过执行以下操作插入一行:

插入 heartbeat (ts, server_id) VALUES (NOW(), N);

或者如果使用“--utc”:

插入心跳 (ts, server_id) VALUES (UTC_TIMESTAMP(), N);

其中“N”是服务器的 ID; 不要使用@@server_id 因为它会复制和
slaves 将插入他们自己的 server ID 而不是 master 的 server ID。

这是由“--create-table”自动完成的。

仍支持旧版心跳表:

创建表心跳(
id int NOT NULL 主键,
ts 日期时间 NOT NULL
);

旧表不支持多从站的每个从站上的“--update”实例
像“master -> slave1 -> slave2”这样的层次结构。 手动插入所需的一行
进入遗留表:

插入 heartbeat (id, ts) VALUES (1, NOW());

或者如果使用“--utc”:

插入心跳 (id, ts) VALUES (1, UTC_TIMESTAMP());

该工具会自动检测心跳表是否为旧版。

另请参见“多从架构”。

--守护进程
叉到后台并从外壳上分离。 仅限 POSIX 操作系统。

- 数据库
简写:-D; 类型:字符串

用于连接的数据库。

--dbi 驱动程序
默认值:mysql; 类型:字符串

为连接指定驱动程序; 支持“mysql”和“Pg”。

--defaults-文件
简写:-F; 类型:字符串

仅从给定文件中读取 mysql 选项。 您必须提供绝对路径名。

- 文件
类型:字符串

将最新的“--monitor”输出打印到此文件。

当给出 "--monitor" 时,将输出打印到指定的文件而不是 STDOUT。
该文件在每个时间间隔被打开、截断和关闭,因此它只包含
最近的统计数据。 当给出“--daemonize”时很有用。

--帧
类型:字符串; 默认值:1m、5m、15m

平均值的时间范围。

指定在“--monitor”为“--monitor”时计算移动平均线的时间范围
给。 指定为带后缀的以逗号分隔的数字列表。 后缀可以是
s 代表秒,m 代表分钟,h 代表小时,或 d 代表天。 最大的尺寸
frame 决定了最大内存使用量,最多为指定的每秒次数
样本保存在内存中以计算平均值。 您可以指定多个
你喜欢的时间范围。

- 帮帮我
显示帮助并退出。

- 主持人
简写:-h; 类型:字符串

连接到主机。

--[no]插入心跳行
默认:是

如果不存在,则在“--table”中插入一个心跳行。

心跳“--table”需要一个心跳行,否则没有什么可“--update”,
“--monitor”或“--check”! 默认情况下,如果有一个心跳行,该工具将插入一个
不存在。 您可以通过指定禁用此功能
“--no-insert-heartbeat-row”以防数据库用户没有插入权限。

- 间隔
类型:浮动; 默认值:1.0

更新或检查心跳“--table”的频率。 更新和检查开始于
第一个完整的第二然后重复“--update”和每个“--interval”秒
“--interval”加上“--skew”秒为“--monitor”。

例如,如果在 00:00.4 以 0.5 秒的间隔启动“--update”实例,
第一次更新发生在 00:01.0,下一次更新发生在 00:01.5,依此类推。如果在 00:10.7
“--monitor”实例以 0.05 秒的间隔启动,默认为 0.5 秒
“--skew”,然后第一次检查发生在 00:11.5 (00:11.0 + 0.5) 这将是
上次更新后的“--skew”秒,因为实例正在检查
同步间隔,发生在 00:11.0。

该工具等待并在第一个整秒开始只是为了制作间隔
计算更简单。 因此,该工具在更新前最多可能等待 1 秒
或检查。

最小(最快)间隔为0.01,最大精度为两位小数
位,因此 0.015 将四舍五入为 0.02。

如果使用旧式心跳表(请参阅“--create-table”),则最大精度
是 1s,因为“ts”列的类型是“datetime”。

- 日志
类型:字符串

守护进程时将所有输出打印到此文件。

--主服务器 ID
类型:字符串

从这个主服务器 ID 计算“--monitor”或“--check”的延迟。 如果不
给定,pt-heartbeat 尝试连接到服务器的主节点并确定其
服务器标识。

- 监视器
持续监控从设备延迟。

指定 pt-heartbeat 应该每秒检查从属设备的延迟并报告给
STDOUT(或者如果给出了“--file”,则改为文件)。 输出是电流
延迟后跟在“--frames”中给出的时间范围内的移动平均线。 为了
例,

5 秒 [ 0.25 秒,0.05 秒,0.02 秒]

- 密码
简写形式:-p; 类型:字符串

连接时使用的密码。 如果密码包含逗号,则必须对其进行转义
带反斜杠:“exam\,ple”

--pid
类型:字符串

创建给定的 PID 文件。 如果 PID 文件已经存在并且该工具将不会启动
它包含的 PID 与当前 PID 不同。 但是,如果 PID 文件
存在并且它包含的 PID 不再运行,该工具将覆盖 PID
带有当前 PID 的文件。 工具退出时,PID 文件会自动删除。

- 港口
简写形式:-P; 类型:int

用于连接的端口号。

--打印主服务器 ID
打印自动检测或给定的“--master-server-id”。 如果“--check”或“--monitor”是
指定,指定此选项将打印自动检测或给定
每行末尾的“--master-server-id”。

--递归
类型:int

在“--check”模式下递归地检查从站到这个深度。

尝试递归地发现从属服务器,达到指定的深度。 发现后
服务器,对每个服务器运行检查并打印主机名(如果可能),
其次是奴隶延迟。

这目前仅适用于 MySQL。 请参阅“--递归方法”。

--递归方法
类型:数组; 默认值:进程列表,主机

用于查找从站的首选递归方法。

可能的方法有:

方法用途
==============================
进程列表显示进程列表
主机显示奴隶主机
none 不找奴隶

首选使用 processlist 方法,因为 SHOW SLAVE HOSTS 不可靠。
但是,如果服务器使用非标准端口(不是
3306)。 通常 pt-heartbeat 会做正确的事情并找到奴隶,但您可能
给出一个首选的方法,它将被首先使用。 如果它没有找到任何奴隶,则
将尝试其他方法。

- 代替
对--update 使用“REPLACE”而不是“UPDATE”。

在“--update”模式下运行时,使用“REPLACE”而不是“UPDATE”来设置
心跳表的时间戳。 “REPLACE”语句是 SQL 的 MySQL 扩展。
当您不知道表是否包含任何行时,此选项很有用。
它必须与--update 结合使用。

- 运行
类型:时间

退出前运行的时间。

- 哨兵
类型:字符串; 默认值:/tmp/pt-heartbeat-sentinel

如果此文件存在,则退出。

--设置变量
类型:数组

在这个逗号分隔的“变量=值”对列表中设置 MySQL 变量。

默认情况下,工具集:

等待超时=10000

在命令行上指定的变量会覆盖这些默认值。 例如,
指定“--set-vars wait_timeout=500”会覆盖默认值 10000。

如果无法设置变量,该工具会打印警告并继续。

--偏斜
类型:浮动; 默认值:0.5

检查延迟多长时间。

默认设置是延迟检查半秒。 由于更新发生在
可能在主服务器上的第二个开始之后,这允许半秒
在报告从站滞后主站一秒之前的复制延迟。
如果您的时钟不完全准确,或者您有其他原因想要
或多或少延迟奴隶,你可以调整这个值。 尝试设置“PTDEBUG”
环境变量以查看其效果。

- 插座
简写:-S; 类型:字符串

用于连接的套接字文件。

- 停止
通过创建哨兵文件停止运行实例。

这应该具有停止所有正在监视的正在运行的实例的效果
相同的哨兵文件。 如果没有指定“--update”、“--monitor”或“--check”,
“pt-heartbeat”将在创建文件后退出。 如果指定其中之一,
“pt-heartbeat”将等待“--interval”给出的时间间隔,然后删除文件并
继续工作。

如果需要,您可能会发现这很方便优雅地停止 cron 作业,或者替换一个
与另一个运行实例。 例如,如果您想停止并重新启动
每小时“pt-heartbeat”(只是为了确保它每小时重新启动,以防万一
服务器崩溃或其他问题),您可以使用“crontab”行,如下所示:

0 * * * * pt-heartbeat --update -D 测试 --stop \
--sentinel /tmp/pt-heartbeat-每小时

非默认的“--sentinel”将确保每小时的“cron”作业仅停止实例
以前以相同的选项开始(即,来自同一个“cron”作业)。

另见“--sentinel”。

- 桌子
类型:字符串; 默认:心跳

用于心跳的表。

不要指定database.table; 使用“--database”来指定数据库。

请参阅“--create-table”。

- 更新
更新 master 的心跳。

- 用户
简写:-u; 类型:字符串

如果不是当前用户,则用于登录的用户。

- 世界标准时间
忽略系统时区并仅使用 UTC。 默认情况下 pt-heartbeat 不检查或
针对不同的系统或 MySQL 时区进行调整,这可能会导致工具计算
滞后不正确。 指定此选项是个好主意,因为它确保
无论时区如何,该工具都能正常工作。

如果使用,此选项必须用于所有 pt-heartbeat 实例:“--update”,
“--monitor”、“--check”等。您可能应该在“--config”文件中设置该选项。
将此选项与不使用此选项的 pt-heartbeat 实例混合将导致错误 -
由于不同时区而导致的正滞后读数(除非您的所有系统都设置为
使用 UTC,在这种情况下不需要此选项)。

- 版
显示版本并退出。

--[无]版本检查
默认:是

检查 Percona Toolkit、MySQL 和其他程序的最新版本。

这是一个标准的“自动检查更新”功能,还有两个额外的
特征。 首先,该工具在本地系统中检查其他程序的版本
除了它自己的版本。 例如,它检查每个 MySQL 服务器的版本
它连接到 Perl 和 Perl 模块 DBD::mysql。 其次,它检查并警告
关于存在已知问题的版本。 例如,MySQL 5.5.25 有一个严重的错误并且
被重新发布为 5.5.25a。

在工具正常输出之前,任何更新或已知问题都会打印到 STDOUT。
此功能不应干扰工具的正常操作。

欲了解更多信息,请访问.

DSN 配置


这些 DSN 选项用于创建 DSN。 每个选项都像“option=value”一样给出。
选项区分大小写,因此 P 和 p 不是同一个选项。 不可能有
“=”之前或之后的空格,如果该值包含空格,则必须用引号引起来。
DSN 选项以逗号分隔。 有关完整详细信息,请参阅 percona-toolkit 联机帮助页。

· 一种

dsn:字符集; 副本:是

默认字符集。

·D

dsn:数据库; 副本:是

默认数据库。

F

dsn: mysql_read_default_file; 副本:是

仅从给定文件中读取默认选项

· H

dsn:主机; 副本:是

连接到主机。

·p

dsn:密码; 副本:是

连接时使用的密码。 如果密码包含逗号,则必须对其进行转义
带反斜杠:“exam\,ple”

·P

dsn:端口; 副本:是

用于连接的端口号。

·S

dsn: mysql_socket; 副本:是

用于连接的套接字文件。

·你

dsn:用户; 副本:是

如果不是当前用户,则用于登录的用户。

环境


环境变量“PTDEBUG”启用对 STDERR 的详细调试输出。 启用
调试并将所有输出捕获到文件中,运行该工具,如:

PTDEBUG=1 pt-heartbeat ... > 文件 2>&1

请注意:调试输出量很大,可能会生成几兆字节的输出。

系统 参赛要件


你需要 Perl、DBI、DBD::mysql 和一些应该安装在任何地方的核心包。
相当新版本的 Perl。

使用 onworks.net 服务在线使用 pt-heartbeatp


免费服务器和工作站

下载 Windows 和 Linux 应用程序

Linux 命令

Ad




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