关于Mysql 查询所有表的实时记录用于对比2个MySQL 库的数据是否异步
Xu言:
今天,为了研究一个MySQL主从同步开机后报错 问题,如下图
故障原因分析:
经过分析,可能是主从服务器开机顺序导致。(有待下次断电再次测试)
主从错误提示:日志读取错误的问题。解决方法:更新日志记录文件,重新主从同步。
担心主从问题过程中有数据写入,想去确认下主从库上的数据是否一致。想到了查询下数据库行数的方式。
网上查询了下 ,一般有2种:
方法一:查看当前表的记录行数
SELECT count(*) from 表名
方法二:"查看数据库中所有表的记录数" # 这里之所以打引号,是因为这里的数据不准确
SELECT table_name,table_rows FROM information_schema.tables
WHERE TABLE_SCHEMA = 'testdb'
ORDER BY table_rows DESC;
所以,经过各路大仙帮助使用了第一种方法进行了改良。
拼接法:
借助information_schema库的tables表,来拼接出一个条sql语句
use information_schema; select concat(
'select "',
TABLE_name,
'", count(*) from ',
TABLE_SCHEMA,
'.',
TABLE_name,
' union all'
) from tables
where TABLE_SCHEMA='数据库名';
拼接出来以后,使用工具去掉“union all ”部分,批量执行。
Python方式循环:
#!/usr/bin/env python
# Author: Loki
# Date: 2019-02-012
# Version: 0.1 import pymysql
User = '' # 这里补充你的MySQL用户名
Pass = '' # 这里补充你的MySQL密码
Port = 33060 # 自己的MySQL端口 db = pymysql.connect(host="192.168.x.x", port=Port, user=User, password=Pass, db='数据库名') cursor = db.cursor() cursor.execute("show tables") # 查询本数据库的所有表名
table_name = cursor.fetchall() count = 0
for item in table_name: # 循环
count += 1
tbn = item[0]
sql_ = "SELECT count(*) FROM %s" % tbn
cursor.execute(sql_)
data = cursor.fetchone()
print("table_name=%s, row=%s" % (tbn,data))
print("table totle= %s" % count) # Close Connect
cursor.close()
db.close()
以上Python方法输出比较不友好,可以优化为输出到文本里面。账号密码部分也可以使用input()函数方式来提示填入
Shell方式循环:
#!/bin/bash
# Author:Jerry tb_name=`mysql -u账号 -p密码 -h192.168.x.x -P端口 -e "select table_name from information_schema.tables where table_schema='数据库名'"|awk 'NR>1{print $1}'`
for name in $tb_name ;
do
tbl_count=`mysql -u账号 -p密码 -h192.168.x.x -P端口 -e "select count (*) as times from cwsys.$name;"| tail -`
echo "$name=$tbl_count" >>/home/xxx/xxx.log
done
以上就是使用的一些方法和思路,留个记录以作备忘。
PS:最后鸣谢各路大仙,就不一一点名!你们懂得
参考资料:
https://www.cnblogs.com/woider/p/5926744.html
https://blog.csdn.net/a19860903/article/details/52311765
https://www.cnblogs.com/xfxing/p/9322199.html
关于Mysql 查询所有表的实时记录用于对比2个MySQL 库的数据是否异步的更多相关文章
- mybatis框架-查询用户表中的记录数
之前已经搭建过mybatis框架了,现在我们要用mybatis框架真正的干点事情了. 这是这个简单web项目的整体架构. 我们使用mybatis框架查询用户表中的记录数: 这是用户类: package ...
- mysql查询锁表语句
processlist命令的输出结果显示了有哪些线程在运行,可以帮助识别出有问题的查询语句,两种方式使用这个命令. 1. 进入mysql/bin目录下输入mysqladmin process ...
- mysql查询锁表及解锁
SHOW PROCESSLIST; KILL ; 锁表网上解释: 这牵涉到mysql的事务,简单通俗的话,就这样给你解释有一个任务序列控制sql语句的执行,第一次有select的语句查询表a,mysq ...
- mysql 查询锁表
1)使用情景“判断通过后写入数据库”,这个一般是不会有问题的, 但并发访问的时候就不太好搞.因为写入(insert)是需要时间的,假设现在有两个并发请求,(假设第一个访问是最后一个符合条件的写入请求, ...
- SQL查询一个表的总记录数的方法
一.简单查询语句 1. 查看表结构 SQL>DESC emp; 2. 查询所有列 SQL>SELECT * FROM emp; 3. 查询指定列 SQL>SELECT empmo, ...
- MySQL统计各个表中的记录数
通过下面的SQL语句可以统计出数据库的各个表中的记录数: select table_schema, table_name,table_rows from information_schema.tabl ...
- mysql 查询a表在b表中不存在的记录
select * from tbl_user a where(select count(1) as cnt from tbl_order b where a.phone=b.phone)=0
- MySQL(四) —— 操作数据表中的记录
插入记录 INSERT [INTO] tbl_name [(col_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),... //法二: ...
- mysql查询INFORMATION_SCHEMA表很慢的性能优化
最近发现,我们有些环境的tomcat应用启动非常缓慢,大部分在3-5分钟,有个测试环境更加阶段,要十几分钟才能启动完成.经过仔细分析,是一个查询INFORMATION_SCHEMA库中数据字典信息的查 ...
随机推荐
- 【Python54.1--豆瓣登录】
1.模拟豆瓣登录 ''' |-- 代码解析: |-- 1.登录必须具备的条件:url,cookie,fromData fromData的参数如下: source: index_nav form_ema ...
- 转载:索引与分片 plus
[Python笔记]序列(一)索引.分片 Python包含6种内建序列:列表.元组.字符串.Unicode字符串.buffer对象.xrange对象.这些序列支持通用的操作: 索引 索引是从0开始 ...
- HTML DOM open() 方法
HTML DOM Window 对象 定义和用法 open() 方法用于打开一个新的浏览器窗口或查找一个已命名的窗口. 语法 window.open(URL,name,features,replace ...
- ODAC(V9.5.15) 学习笔记(三)TOraSession(1)
1. 连接相关 名称 类型 说明 ConnectDialog 执行连接对话框控件 Connected Boolean 连接状态,通过函数Connect和Disconnect连接或关闭数据库连接,并触发 ...
- Flask学习【第11篇】:整合Flask中的一些知识点
SQLAlchemy-Utils 由于sqlalchemy中没有提供choice方法,所以借助SQLAlchemy-Utils组件提供的choice方法 import datetime from sq ...
- CodeForces 430A Points and Segments (easy)(构造)题解
题意:之前愣是没看懂题意...就是给你n个点的坐标xi,然后还规定了Li,Ri,要求给每个点染色,每一组L,R内的点红色和黑色的个数不能相差大于1个,问你能不能染成功,不能输出-1,能就按照输入的顺序 ...
- Unity3D学习笔记(三十二):Xlua(2)
Xlua支持通过子类对象访问父类的变量属性和方法 对于C#的ref,out参数的方法 当调用的时候:out类型的参数是不需要传递实参的,普通的参数和ref参数需要传递实参. out,ref传出值通 ...
- VHDL 类型转换
STD_LOGIC_1164包集合 函 数 名 功 能 TO_STDLOGICVECTOR(A) 由BIT_VECTOR转换为STD_LOGIC_VECTOR TO_BITVECTOR(A) 由STD ...
- Sublime Text 查找时排除指定的文件夹或文件
Sublime Text 查找时排除指定的文件夹或文件 Ctrl + Shift + F这组快捷键可以调出 Sublime Text 的查找替换窗口,里边有一栏 Where,可以做一些高级设置:d:\ ...
- Js操作Cookie的实现