01
概
述

现有生产环境由于有新业务需要接入数据量会有增长,因此需要评估数据库的容量是否需要扩容。

02
评
估
依
据

需要收集的数据:
业务场景
例如读多写少、读少写多。
业务预估增长量
新增业务,所涉及的现有表和新增表的数据增长量情况。
所涉及的库表清单。
新业务有什么特点
比如月初、月末某个时间段并发量大。
历史数据是否一直保留
容量规划周期
需要规划多久的容量,比如一年、三年。
当前数据库的运行情况
包括内存、CPU、磁盘、数据库连接数等使用情况。

03
容
量
评
估

磁盘容量增长分析
当前磁盘增长趋势统计
根据日常巡检日志,统计出近一年或者某个时间段的增长量情况。
以下是根据数据库的巡检日志里统计出来的:

按照目前平均每月增长10G,一年120G。
注:如果/dbdata 在所统计的时间段内做过文件的清理,则统计的增长量会有些出入。
新增业务增长趋势统计
数据库大小增长统计
根据日常巡检日志,统计出近一年或者某个时间段的增长量情况。
正常情况下,磁盘量的增长点主要是数据库的大小的增长,表现在文件的话,则为数据文件的增长。
可以分析下数据库大小的增长量与磁盘大小的增长量是否相吻合。
目前库表大小统计
192.168.128.101:
SQL:
select table_schema as DB_NAME,concat(round(sum(DATA_LENGTH/1024/1024),2),\'MB\') as DB_DATA_SIZE,concat(round(sum(INDEX_LENGTH/1024/1024),2),\'MB\') as DB_INDEX_SIZE,concat(round(sum((DATA_LENGTH + INDEX_LENGTH)/1024/1024),2),\'MB\') as DB_TOTAL_SIZE from information_schema.TABLES group by table_schema order by sum(DATA_LENGTH + INDEX_LENGTH) desc ;
查询mysql目录数据大小
cd/dbdata/
du -sh /dbdata/mysql/data
查询所涉及的库表所占用的磁盘空间及数据量
cd /dbdata/mysql/data/db_name_xxxx
ls -lh t1.ibd --检查当前数据文件大小
select count(*) from t1;
案例分析
新业务涉及以下表的增长:
t1表:是现有表。每天的数据量在20万左右,大小200M。上新业务后,每天会增长20万左右。
t2表:是新增表。预计每天的数据量在20万左右,大小200M。
计算新业务带来的数据增长:
t1表每天额外增长200M,一个月约6G,一年72G。
t2表每天增长200M,一个月约6G,一年72G。
则一年新增业务额外增加的容量大小:
72+72=144G
数据库备份文件增长统计
新业务的接入,也会带来数据库备份的额外增长。因此需要评估备份文件的增长。
备份文件增长评估,可根据巡检日志统计出近一年的备份文件增长趋势或由数据库增长趋势推算出备份文件的增长趋势。
假如:备份单独使用一个数据盘500G。当前备份文件的大小压缩后为50G,保留最近7个备份。则当前占用大小为350G。
数据库大小的年增长率为15%,则备份文件总增长350*15%=52.5G
另外新业务带来的备份文件的增长。可根据新业务的数据大小在整个库中的占比,估算出新增业务的备份增长。
假如占比为10%,则备份额外增长:350*10%=35G
则备份盘大小一年总增长52.5+35=87.5G
备份盘需扩容:(350+87.5)/0.7-500=125G
binlog增长分析

可通过以下命令,统计当前binlog文件大小:
ls mysql-bin.* | xargs du -s | awk \'{sum += $1}
原创文章,作者:EBCloud,如若转载,请注明出处:https://www.sudun.com/ask/33356.html