寫在前面:
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