关于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库中数据字典信息的查 ...
随机推荐
- 复旦大学2016--2017学年第二学期高等代数II期末考试情况分析
一.期末考试成绩班级前十五名 林晨(93).朱民哲(92).何陶然(91).徐钰伦(91).吴嘉诚(91).于鸿宝(91).宁盛臻(90).杨锦文(89).占文韬(88).章俊鑫(87).颜匡萱(87 ...
- Logger级别和输出的地方
转载自http://blog.csdn.net/u014756827/article/details/52475990 log4j日志配置 关键字: apache log4j 1.配置根Logger: ...
- android 系统 不深度休眠【转】
本文转载自:https://blog.csdn.net/fmc088/article/details/80401405 1.分析解析 android系统有earlysuspend和suspend两种休 ...
- 买不到的数目|2018年蓝桥杯A组题解析第八题-fishers
买不到的数目 小明开了一家糖果店.他别出心裁:把水果糖包成4颗一包和7颗一包的两种.糖果不能拆包卖. 小朋友来买糖的时候,他就用这两种包装来组合.当然有些糖果数目是无法组合出来的,比如要买 10 颗糖 ...
- 外键 Foreign keys
https://docs.microsoft.com/en-us/sql/relational-databases/tables/create-foreign-key-relationships?vi ...
- Winform选择目录路径与选择文件路径
https://blog.csdn.net/zaocha321/article/details/52528279 using System.Collections.Generic; using Sys ...
- Vue学习三:v-on:click命令及v-html命令学习
本文为博主原创,未经允许不得转载: 第一部分: v-on:click 命令讲解及使用方法 <!DOCTYPE html> <html lang="zh"> ...
- CAS Client集群环境的Session问题及解决方案介绍,下篇介绍作者本人项目中的解决方案代码
CAS Client集群环境的Session问题及解决方案 程序猿讲故事 2016-05-20 原文 [原创申明:文章为原创,欢迎非盈利性转载,但转载必须注明来源] 之前写过一篇文章,介绍单点登 ...
- Use Memory Layout from Target Dialog Scatter File
参考 MDK-ARM Linker Scatter File的用法(转载) keil报错 Rebuild target 'Target 1' assembling test1.s... linking ...
- cmake用法及常用命令总结
CMakeLists.txt 的语法比较简单,由命令.注释和空格组成,其中命令是不区分大小写的.指令是大小写无关的,参数和变量是大小写相关的.但推荐全部使用大写指令.符号 # 后面的内容被认为是注释. ...