共计 2464 个字符,预计需要花费 7 分钟才能阅读完成。
作者:莫善
某互联网公司资深 DBA。
本文起源:原创投稿
* 爱可生开源社区出品,原创内容未经受权不得随便应用,转载请分割小编并注明起源。
目 录
一、概述
二、环境信息
三、环境筹备
1、centos1
2、centos2
3、centos3
四、测试
1、筹备数据
2、flush binlog
3、MySQL 压测
4、解析 binlog
五、总结
一、概述
作为一个 MySQL DBA,查看剖析 binlog 是日常工作的一部分。
不晓得你是否遇到过这样的需要:一个时间段,各个表的 dml 统计状况。
但,如果 binlog 文件很多呢?又或者负责的业务线比拟多,有多个业务都有这种需要呢?
其实需要很简略,只是操作起来有点头疼?
所以,本文就针对这类需要做了一个测试。
如果你在工作中也有相似的懊恼,或者常常须要批量解析 binlog,这篇文章或者对你有帮忙。
二、环境信息
三、环境筹备
1、centos1
(1)装置 MySQL
hostname
ip a|grep 192
cat /proc/cpuinfo | grep processor
free -m
df -h|grep data
/usr/local/mysql80/bin/mysql -uroot -p1234567890 -h192.168.1.10 -P3306 -e "select version()"
提醒:省略装置 MySQL 的步骤。
2、centos2
(1)装置 sysbench
sysbench --version
提醒:省略装置 sysbench 的步骤。centos 6 的 yum 能够参照如下操作配置。
备份源文件:mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo-backup
编辑文件:vi /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-6
failovermethod=priority
#baseurl=https://vault.centos.org/6.9/os/x86_64/
baseurl=http://mirrors.sohu.com/centos/6.10/os/x86_64/
gpgcheck=0
清理软件源, 从新建设源数据缓存
yum clean all && yum makecache
(2)筹备测试脚本
https://gitee.com/mo-shan/script/blob/master/sysbench.sh #这里获取,或者能够本人写脚本
3、centos3
(1)analysis_binlog
analysis_binlog 是 git 开源我的项目,可实现高效剖析 binlog,现有性能如下:
- 统计各个表的 dml 次数,表的最初批改工夫。
- 业务表的 binlog to sql。
- 多个 binlog 文件可并行解析。
# yum –y install git #没有 git 环境的须要装置 git
mkdir -p /data/git && cd /data/git/ && git clone https://gitee.com/mo-shan/analysis_binlog.git
# https://gitee.com/mo-shan/analysis_binlog/tree/master # 装置详情可参考这里
罕用参数介绍
--mysqlbinlog-path or –mpath #mysqlbinlog 工具的门路,不指定就应用零碎 PATH
--binlog-file or -bfile #binlog 文件列表,逗号隔开
--threads or -w #线程数,并行解析 binlog。--binlog2sql or -sql #将 binlog 解析成 sql
(2)筹备 MySQL
不须要装置 MySQL,然而剖析工具依赖 mysqlbinlog 工具,所以须要用同版本的 MySQL 安装包。
四、测试
1、筹备数据
利用测试脚本筹备五张表,并别离 insert 1w 行的数据。请先创立测试库。
/usr/local/mysql80/bin/mysql -uroot -p1234567890 -h192.168.1.10 -P3306
create database if not exists mstest; #创立测试库这个库名跟 sysbench 脚本对应
2、flush binlog
为了测试后果更加直观,倡议先 flush MySQL 的 binlog。
/usr/local/mysql80/bin/mysql -uroot -p1234567890 -h192.168.1.10 -P3306
flush binary logs;
show binary logs;
3、MySQL 压测
利用 sysbench 并发十个线程开始压测。
select 操作时不会记录 binlog,为了后果更加直观,本次应用 lua 脚本的是只有写操作。【oltp_update_non_index.lua】
压测工夫为 60s,压测后果如下:2860 个 dml,且 2860 个事务。
4、解析 binlog
(1)拷贝 binlog 文件
将须要解析的 binlog 拷贝到剖析服务器【centos1 centos3】。本次测试只须要剖析【3306-binlog.000011】一个文件。
(2)解析 binlog- 统计 dml
统计各个表的 dml 状况。后果如下:统计到总共有 2860 个 update,2860 个事务。
(3)解析 binlog-binlog2sql
针对各个表能够实现 binlog2sql。
(4)解析 binlog- 并行
并行解析多个文件。
五、总结
本文次要介绍了通过 analysis_binlog 工具解决开篇提出的需要,心愿对你有帮忙。
analysis_binlog 工具还有很多可选的参数,有趣味的读者能够通过【–help】查看帮忙手册。
analysis_binlog 工具利用内存换取工夫,加上能够并行剖析多个文件,所以能做到高效解析 binlog,然而这可能也是毛病。不倡议在生产环境服务器应用,否则容易将内存打满。
应用 analysis_binlog 工具过程中有任何问题都能够在 git 上给我留言或者也欢送广大读者提 Issues。