
Bash
1 前言
一个问题,一篇文章,一出故事。
今天迁移了一个数据库,用户提出需要验证数据是否完整,于是想到通过命令行来统计特定库的特定表的行数来确定。
如果你有更好的方法,请告诉我 O(∩_∩)O。
2 最佳实践
2.1 创建统计脚本
mkdir -p ~/scripts vim ~/scripts/tableCount.sh
加入如下内容,
#!/bin/bash dbUser="root" dbPassword="rootPassword" dbHost="mysql.cmdschool.org" dbPort="3306" dbName="db1" dbTables="tab1 tab2 tab3" dbLog="/var/log/tableClont.log" for dbTable in $dbTables; do echo $dbName"."$dbTable":"`mysql -u$dbUser -p$dbPassword -h$dbHost -P$dbPort -e'select count(1) from '$dbName'.'$dbTable' \G;' 2> /dev/null | grep ^count | cut -d":" -f2` | tee -a $dbLog done
由以上可知,核心语句如下,
mysql -u root -p rootPassword -h mysql.cmdschool.org -P 3306 -e 'select count(1) from db1.tab1 \G;'
使用说明,
参数“dbUser”定义需要统计的数据库服务器的登录用户
参数“dbPassword”定义需要统计的数据库服务器的登录密码
参数“dbHost”定义需要统计的数据库服务器的主机名称
参数“dbPort”定义需要统计的数据库服务器的端口
参数“dbName”定义需要统计的数据库名称
参数“dbTables”定义需要统计的数据库的表名称(一张以上)
参数“dbLog”定义统计日志输出的路径,以上范例定义值为“/var/log/tableClont.log”
2.2 执行统计脚本
sh ~/scripts/tableCount.sh
2.3 查看统计的记录
cat /var/log/tableClont.log
执行完毕后,可以通过以上命令查看统计记录,可见如下显示,
db1.tab1: 258726727 db1.tab2: 4878 db1.tab3: 31
没有评论