MySQL数据库迁移工作笔记——连接抓取,展示与异常连接

  

1,抓取连接脚本

为了使切换的过程更高效并解放自己的双手,编写了简单的shell脚本,定时抓取连接并存储至核心数据库,简单的例子:

# !/bin/bash   ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,   StatFile="/var/log/地位/processlist.txt”   #获取IP信息,,,,,,,,   IP='/sbin/ifconfig  |, egrep  -A  1,“乙(0 - 4),”,|,egrep “inet ”, |, egrep  -v “192.168 |: 10。”|, awk  - f”(,,) + ', ' {print  4美元}”,| sed  -n “1 p”   if  [[, IP 美元;=,"]]大敌;,,,,,,   then ,,,,,,,,,,   IP='/sbin/ifconfig  |, egrep  -A  1,“乙(0 - 4),”,|,egrep “inet ”, |, egrep ,“192.168 |: 10。”|, awk  - f”(,,) + ', ' {print  4美元}”,| sed  -n “1 p”,,,,,,,   fi   #,port.txt 存储端口号   cat ,/var/log/port.txt  |, while  read  port ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,   do ,,,,,,,,,,,,,   ,,,/bin/mysql  - h数据库IP  -uroot  - p的密码”,- p port 美元;information_schema  -Bse “select  IP美元,美元端口,用户,substring_index(主机,':',1),as  host 得到,PROCESSLIST  where  user  not 拷贝(“根”、“system 用户”),group  by 用户,substring_index(主机,':',1);“,祝辞StatFile美元   #,此处将show  processlist信息存入文件,也可直接循环执行   #,将文件中信息存入核心数据库,忽略表结构,,,,,,,,,,,   ,,,cat  StatFile 美元;|,while  read  ip , port  username  host ,,,,,,,,,,   ,,,do ,,,,,,,,,,,,,,,,,,   ,,,,,,,/bin/mysql , - h数据库IP  - u用户名,,-p 密码”,- p端口,,库名,-Bse “insert  into  mysql_db_proce (db_ip、端口、用户名、app_host), values  (“$ IP”、“美元港口”,“美元用户名”,“美元主机”);“,,,,,,,,,,,   ,,,done ,,,,,,   以前做


2、信息展示

<强>

①抓取连接脚本加入到计划任务中,每分钟执行一次

②这时可以从核心库中查看到连接信息,根据表中的update_time字段判断当前最新时间的连接情况

③可以使用sql语句进行查询,但仍比较繁琐,众多的服务器依然需要重复执行sql,让人厌烦

④因此使用了最近学习的python用django搭建了简单的web页面进行展示,具体的结构都很简单,就是从数据库中查询数据,传到模板中进行渲染就好了

 MySQL数据库迁移工作笔记——连接抓取,展示与异常连接

默认展示最近一分钟数据,添加了搜索框,可以根据IP、端口号进行筛选。

⑤这样在与开发进行沟通的时候,更加清晰,再也不是黑白页面了(●ˇ?ˇ●),虽然很简单

3,碰到的连接异常

整个工作进行的很顺利,但在切换到最后的时候,页面中看到有一个业务的写库一直有一台网络的连接进的来,于是询问开发是否有配置未同步,

他搜索了很久告诉我用到的地方都已经修改完了,没找到。

抓到的连接显示是他的服务器,因此需要帮助他定位到问题点

①开启MySQL general-log抓取连接具体信息(因为此时主库已不可写,binlog中查不到信息),根据页面信息,抓取了五分钟数据,

查找到具体执行的sql,提供给开发确认

②开发以知晓具体程序,但检查配置已经修改了,怀疑是其他单独布置的脚本未使用贵宾,因此抓取网络信息,查看使用的是什么IP连接的数据库

在数据库服务器上执行命令:

netstat  -lna  |, grep “应用服务器IP”

即可看到该程序使用的数据库IP是什么,发现确实为贵宾,此时我们已经解决不了该问题了,需要交给开发仔细查找

③最后,经过他告诉我说是有一个进程,从昨天开始就一直在执行,新配置没生效

④纪录下这个问题,以后可能还会遇到,修改配置后,最好把程序进程都检查一遍

4,思考

DBA进行数据库变更后,每次都需要开发配合进行修改,这应该存在架构上的问题,每次都需要开发等到半夜很久,也是令人讨厌的一件事

怎样在架构上进行更改,让数据库配置对应用程序透明,做到基本无感,应该是接下来应该考虑的事情。夜深人静,晚安

MySQL数据库迁移工作笔记——连接抓取,展示与异常连接