如何统计MySQL多表行数?

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
没有评论

发表评论

Bash
如何命令查找docker集群实例关键字?

1 前言 一个问题,一篇文章,一出故事。 笔者定位某个IP地址在集群中的位置,于是笔者想到使用循环去 …

Bash
如何使用计划任务操作容器?

1 前言 一个问题,一篇文章,一出故事。 笔者今天需要根据一定的条件删除容器里面的过期文件,但由于容 …

Bash
如何实现主从存储目录镜像?

1 理论部分 1.1 工具的介绍 Inotify一种强大的、细粒度的、异步文件系统监控机制,它满足各 …