关于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库中数据字典信息的查 ...
随机推荐
- Python-制作抖音图片
---------------------------------------------------------------------------------------------------- ...
- Codeforces 375C Circling Round Treasures - 最短路 - 射线法 - 位运算
You have a map as a rectangle table. Each cell of the table is either an obstacle, or a treasure wit ...
- bzoj 4810 由乃的玉米田 - bitset - 莫队算法
由乃在自己的农田边散步,她突然发现田里的一排玉米非常的不美.这排玉米一共有N株,它们的高度参差不齐. 由乃认为玉米田不美,所以她决定出个数据结构题 这个题是这样的: 给你一个序列a,长度为n,有m ...
- 网络 --- 3 socket模块 粘包
一 .socket 模块参数及方法 二.缓冲区 三.粘包 1.两种粘包现象 ①连续的小包可能会被优化算法给组合到一起进行发送 ②第一次如果发送的数据大小2000B接收端一次性接受大小为1024, 这就 ...
- aop的使用
最近考虑需要记录客户对项目的操作日志. 如果在每一个客户都有可能操作的类增加日志对象,改动量太大,同时如果有新的功能增加,又要在新的功能上增加日志操作. 因此考虑后决定采用spring的aop功能. ...
- expr的字符串操作 表达式: length, index, match, substr等
参考: http://www.linuxidc.com/Linux/2012-04/58095.htm expr的格式, 主要有两个, 一是 用expr option, 选项: 二是, expr的几个 ...
- Docker 编排工具Rancher 1.6.18
使用docker获取rancher [root@localhost /]# docker pull rancher/server:stable [root@localhost /]# docker i ...
- Tutorials on training the Skip-thoughts vectors for features extraction of sentence.
Tutorials on training the Skip-thoughts vectors for features extraction of sentence. 1. Send emails ...
- Java 大数任意进制转换
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner cin = ...
- 剥开比原看代码09:通过dashboard创建密钥时,前端的数据是如何传到后端的?
作者:freewind 比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchai ...