统计数据库天天产生的数据量大小

写在前面:
mysql


如今有这样一个需求,须要统计线上数据库天天产生的数据量有多少,以此来反馈线上业务库的繁忙程度,怎么作呢?刚开始的时候,考虑用统计数据库备份文件大小,而后对比几天内的数据量差别的方法来进行统计,后来通过思考,发现这样一来,只能看出数据量增长了多少(只能统计insert、create等)。但若是业务库更多的是执行update、delete等操做,你会发现其实你的数据量并不会增长,甚至数据量较以前还会减小,这样,反映不了线上业务库的真实状况,并且这其中还掺杂着表碎片的影响。因此,通过考虑,笔者决定写个简单的Shell,分析binlog来进行统计较为靠谱sql


#!/bin/bash
#统计数据库天天产生的数据量大小
#author:lzb


time=`date "+%F"`
dataBases="bailidb university knowledge interface crm edusoho_e newedusoho ucserver bailiurm teacherprogram"
mysqlbinlog=/usr/local/mysql/bin/mysqlbinlog
binlog="mysql-bin.000304"
start="2019-06-08 10:00:00"
stop="2019-06-09 10:00:00"

for db in $dataBases
do
    $mysqlbinlog --database=$db --start-datetime="$start" --stop-datetime="$stop" $binlog > ${db}-$time.sql
    sleep 3
    du -sh ${db}-$time.sql
    /bin/rm -f ${db}-$time.sql
done
数据库


若是你认为笔者哪里写的有问题,或者你有更好的想法,欢迎下方留言!
bash

相关文章
相关标签/搜索