主备延迟监控

2023-10-29

主备延迟的模拟

1. 基本工具的安装

1.1 安装 percona-toolkit

 这玩意儿工具挺全,有时间可以深入了解一下,我的系统是 debian,流程如下:

# 下载软件包
wget https://downloads.percona.com/downloads/percona-toolkit/3.3.0/binary/debian/buster/x86_64/percona-toolkit_3.3.0-1.buster_amd64.deb
# 安装,注意路径
apt install ./percona-toolkit_3.3.0-1.buster_amd64.deb
# 校验,随便一个模块 --version,这里选用 pt-find 模块
pt-find --version

如果你的系统不是,到官网获取对应的资源包再安装。

1.2 安装 sysbench

 这个也很方便就可以安装:

# 关联仓库
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh | bash
# 安装
apt -y install sysbench

一些基本参数(来源于网络)说明:

--threads=4500  表示发起4500个并发连接
--oltp-read-only=off 表示不要进行只读测试,也就是会采用读写混合模式测试
--report-interval=10 表示每10秒输出一次测试进度报告
--rand-type=uniform 表示随机类型为固定模式,其他几个可选随机模式:uniform,gaussian,special,pareto
--time=120 表示最大执行时长为 120 秒
--max-requests=0 表示总请求数为 0,因为上面已经定义了总执行时长,所以总请求数可以设定为 0;也可以只设定总请求数,不设定最大执行时长
--tables=10  表示10个表
--table-size=100000  单表100000条记录
--percentile=99 表示设定采样比例,默认是 95%,即丢弃1%的长请求,在剩余的99%里取最大值

SQL statistics:
    queries performed:
        read:                            0         读操作
        write:                           233015     --写总数
        other:                           197026  --其他操作总数(SELECT、INSERT、UPDATE、DELETE之外的操作,例如COMMIT等)
        total:                           430041  --全部总数
    transactions:                        62617  (486.84 per sec.)  --总事务数(每秒事务数)
    queries:                             430041 (3343.55 per sec.) --查询数(每秒查询数)
    ignored errors:                      27087  (210.60 per sec.)  --忽略错误数
    reconnects:                          0      (0.00 per sec.)  --重新连接次数

General statistics:
    total time:                          128.6147s  --运行总时间
    total number of events:              62617  --事件总数

Latency (ms):
         min:                                    2.09
         avg:                                 8957.64
         max:                                99069.80
         95th percentile:                    27846.48
         sum:                            560900840.54

Threads fairness:    #线程平均数
    events (avg/stddev):           13.9149/3.92
    execution time (avg/stddev):   124.6446/2.39

详细说明看sysbench --help输出即可。

**【注】**sysbench 自带一些测试的 lua 脚本,脚本所在目录 /usr/share/sysbench(后面会用到)。sysbench对数据库进行压力测试的过程分为3个阶段:prepare 阶段,做准备的、比较说建立好测试用的表、并向表中填充数据;run 阶段,去跑压力测试的SQL;cleanup 阶段,清除数据的,即drop掉prepare阶段初始化好的表,下面是一个完整阶段的示例:

# 建表,初始化数据
sysbench --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=root --mysql-db=ms_rep oltp_insert prepare

# 跑SQL,输出报告
sysbench --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=root --mysql-db=ms_rep oltp_read_write run

# 清除测试数据
sysbench --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=root --mysql-db=ms_rep oltp_read_write cleanup

上述过程如果执行报错:

sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)

FATAL: unable to connect to MySQL server on host '127.0.0.1', port 3306, aborting...
FATAL: error 1045: Plugin caching_sha2_password could not be loaded: /usr/lib/x86_64-linux-gnu/mariadb19/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory
FATAL: `sysbench.cmdline.call_command' function failed: ./oltp_common.lua:83: connection creation failed

解决方式,更改加密方式:

# 更新用户的密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root'; 
# 更新用户的密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root'; 
# 刷新权限
FLUSH PRIVILEGES;

上述已经打包好了镜像,可以直接使用docker pull registry.cn-shanghai.aliyuncs.com/hhu/mysql:wgl_8.0.24

2. 搭建延迟监控

 先创建好一个测试的数据库 ms_rep,然后

# 主库:创建后台不断更改心跳表的线程
pt-heartbeat --user=root --ask-pass --host=127.0.0.1 --create-table -D ms_rep --interval=1 --update --replace --daemonize
# 验证后台线程正常在跑,必须验证
pgrep -fla pt-heartbeat
# 关闭后台线程(结束时执行)
pt-heartbeat --stop

# 从库:监控延迟,-h 后指定的是从库的地址,建议在各个从库执行,这样观察更直观
pt-heartbeat --user=root --ask-pass --host=127.0.0.1 --table=heartbeat --monitor -D ms_rep

 通常刚建立的延迟监控输出都为0.00s [ 0.00s, 0.00s, 0.00s ],这时通过 sysbench 在 master 上生成不同的数据观察延迟即可。

# 在 master 上生成数据以便观察 binlog 重放的延迟
sysbench --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=root --mysql-db=ms_rep --table-size=1000000 oltp_insert prepare

测试结果:

插入的记录数     延迟时间
   1000            0
   2000            0
   2W              0
   3W              0
   4W             0.99
   5W             0.9,1.0
   6W             1
   7W             1, 0.99
   8W             1,1
   9W             0.99, 1, 1
   10W            1,1
   11W            1,1,1

**【注】**在执行完pt-heartbeat --stop后会提示创建文件/tmp/pt-heartbeat-sentinel,下次再建立监控时必须删除此文件,否则会跑一下就挂了。在从节点建立监控后会出现类似于 5s [ 0.25s, 0.05s, 0.02s ] 标识延迟时间,默认是1m内、5m内、15m内的时间段,通过参数--frames指定。

心跳表无须手动创建,指定参数--create-table即可,心跳表的定义如下:

CREATE TABLE heartbeat (
  ts                    varchar(26) NOT NULL,
  server_id             int unsigned NOT NULL PRIMARY KEY,
  file                  varchar(255) DEFAULT NULL,    -- SHOW MASTER STATUS
  position              bigint unsigned DEFAULT NULL, -- SHOW MASTER STATUS
  relay_master_log_file varchar(255) DEFAULT NULL,    -- SHOW SLAVE STATUS
  exec_master_log_pos   bigint unsigned DEFAULT NULL  -- SHOW SLAVE STATUS
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

主备延迟监控 的相关文章

随机推荐

  • 运输层 :UDP用户数据报协议

    1 相关概念 UDP数据包产生 上层应用产生数据 但是这与真正发送的IP数据报数量并没有什么联系 并且UDP报文并不是一种可靠的协议 我们必须关注IP数据报的长度 如果超过MTU 在链路层的一种限制 则应该进行分片 2UDP报文 16位源端
  • c++ new与delete与qt内存回收机制

    在c primer中读到 new 是在堆里面申请一段内存资源 new必须与delete成对使用 否则就会造成内存泄漏 可最近学qt 我经常可以看见只new而不delete的情况 是不是这样就内存溢出了 非也 百度了一下qt的内存管理机制 才
  • Qt使用数组实现控件批处理

    Qt使用数组实现控件批处理 在Qt中 当你需要对多个控件进行批处理操作时 使用控件数组会大大简化你的代码量 例如希望在一个页面中创建一个控件数组 其中包含8条控件集合 控件数组的定义如下 QCheckBox checkbox 8 QLabe
  • 微机原理课堂练习五

    练习五 定时计数器 和A D D A转换 一 选择题 在下列每小题的四个备选答案中选出一个正确的答案 并将其字母标号填入括号内 24分 1 某一测控系统要用一脉冲信号产生单稳信号 如果使用8253可编程定时 计数器来实现此功能 则8253应
  • Ubuntu16.04 搭建Android源码的git+gitosis+repo代码管理的服务器

    一份源码 要让团队里的人能够轻松地拉取 以下是我的搭建过程 1 关于源码及相关编译环境参考我之前的一篇博文https blog csdn net qq 28449863 article details 79978937 2 简单做个描述 所
  • 2分钟学会Python绘制蟒蛇!

    目录 一 Python蟒蛇绘制 问题分析 1 1 Python蟒蛇绘制 二 Python蟒蛇绘制 实例编写 三 运行效果 3 1 程序关键 四 Python蟒蛇绘制 举一反三 4 1 Python语法元素理解 4 2 程序参数的改变 4 3
  • 吐槽大会,来瞧瞧资深老前端写的垃圾代码

    忍无可忍 不吐不快 本期不写技术文章 单纯来吐槽下公司项目里的奇葩代码 还都是一些资深老前端写的 希望各位对号入座 知道了什么是烂代码 才能写出好代码 别说什么代码和人有一个能跑就行的话 玩笑归玩笑 人都有菜的时候 写出垃圾代码无可厚非 但
  • 面试时,被问到频繁跳槽该如何回应?

    有数据显示 现在的职场人 跳槽越来越频繁 95后平均7个月就离职 对于面试官来说 一个跳槽过于频繁的人总是存在潜在风险 比如抗压力差 稳定性不好 心不定这山望着那山高 职业规划不清晰等等 我一直强调一个观点 职场人跳槽 应该是为了下一步有更
  • 十八、部署 Vue.js 项目到生产环境

    本章概要 构建发布版本 部署 项目开发完毕并测试后 就要准备构建发布版本 部署到生产环境 18 1 构建发布版本 在构建发布版本前 注意将项目代码中用于调试的 alert debugger console log 等语句删除或注释 在生产环
  • Linux目录读写和可执行权限

    一 进入目录权限 如果我在普通用户下创建了一个目录f1 然后使用chomd u rwx g rwx o rwx之后 我在普通用户下想进入f1目录 权限不允许 然后我切换到超级用户下 再次尝试进入到f1目录 这个时候允许进入 然后回到普通用户
  • static的作用域

    一 面向过程设计中的static 1 静态全局变量 在全局变量前 加上关键字static 该变量就被定义成为一个静态全局变量 静态全局变量有以下特点 该变量在全局数据区分配内存 未经初始化的静态全局变量会被程序自动初始化为0 自动变量的值是
  • Linux下rgmii接口,zynq7010 petalinux 2019.2 RGMII via EMIO 连接问题

    各位好 遇到一个问题 petalinux 2019 2 zynq7010 通过gmii to rgmii 连接挂外EMIO管脚上的PHY kernel启动没有识别PHY的动作 在非linux环境下测试过网络是OK的 u boot下也能够正常
  • Gcc 编译时指定宏

    gcc 编译指定宏 那在makefile里面 gcc DMACRONAME MACRODEF 或者 gcc DMACRONAME 这样就定义了预处理宏 编译的时候可选代码就会被编译进去了 举例说明 Dmacro string 等价于在头文件
  • ubuntu16.04 安装 pygraphviz

    sudo apt get install python pydot python pydot ng graphviz graphviz dev sudo pip3 install pygraphviz
  • qt自定义控件设置属性

    自定义控件设置的属性出现在ui designer控件栏 参考 https blog csdn net Mingyueruya article details 121268933 主要是靠Q PROPERTY 定义一个QString类型 名字
  • C#入门-简介

    一 入门 1 简介 1 1 C 语言介绍 C 是一种新式编程语言 不仅面向对象 还类型安全 C 是面向对象的 面向组件的编程语言 多项 C 功能有助于创建可靠且持久的应用程序 垃圾回收自动回收不可访问的未用对象所占用的内存 可以为 null
  • 中标龙芯、deepin龙芯、ubuntu证书存放路径及安装卸载说明

    中标龙芯 deepin龙芯 ubuntu证书存放路径及安装卸载说明 一 Ubuntu deepin龙芯 证书路径 etc ssl certs ca certificates crt 安装步骤 1 生成 crt后缀证书 如test crt 2
  • fiddler抓包番外————了解工具栏

    前言 作为一款功能强大的工具 Fiddler 提供了许多实用的功能和工具栏 可以帮助用户更加高效地使用它 如果您想了解 Fiddler 的工具栏及其功能 那么本篇文章就是为您准备的 在这里 我将为大家详细介绍 Fiddler 的工具栏及其各
  • ubuntu linux 教程 pdf,Ubuntu 12.04 菜鸟完全使用教程(四) PDF

    Linux公社已经在先前发布Suruibin 同学制作的 Ubuntu 12 04 菜鸟使用手册一到三系列教程 看来 Suruibin 同学是要将这套教程进行到底了 Ubuntu 12 04 菜鸟使用手册 四 已经写好了 当我们面对一件繁杂
  • 主备延迟监控

    主备延迟的模拟 文章目录 主备延迟的模拟 1 基本工具的安装 1 1 安装 percona toolkit 1 2 安装 sysbench 2 搭建延迟监控 1 基本工具的安装 1 1 安装 percona toolkit 这玩意儿工具挺全