MySQL 数据库迁移工作笔记----连接抓取、展示与异常连接
admin
2023-05-24 05:23:01
0

背景:由于公司机房网络调整,需要调整一批mysql 数据库的服务器IP,在新环境中已经搭建好新架构(keepalive+lvs),并需要开发工程师配合修改程序配置,共有2个业务,9台服务器,50多个实例。

1、抓取连接脚本

---从繁重的重复工作中解脱出来

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

#!/bin/bash
                                                                                                   
StatFile="/var/log/status/processlist.txt"
#获取IP信息        
IP=`/sbin/ifconfig | egrep -A 1 "eth[0-4] " | egrep "inet " | egrep -v "192.168|:10."| awk -F'[ :]+' '{print $4}' | sed -n "1p"`
if [[ $IP = '' ]]       
then           
IP=`/sbin/ifconfig | egrep -A 1 "eth[0-4] " | egrep "inet " | egrep  "192.168|:10."| awk -F'[ :]+' '{print $4}' | sed -n "1p"`       
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','$port',user,substring_index(host,':',1) as host from  PROCESSLIST where user not in ('root','system user') group by user,substring_index(host,':',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,port,username,app_host) values ('$IP','$port','$username','$host');"           
    done       
done


2、信息展示

-----让我的结果更好看

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

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

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

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

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

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

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

3、碰到的连接异常

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

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

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

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

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

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

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

netstat –lna | grep ‘应用服务器IP’

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

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

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

4、思考

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

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

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

相关内容

热门资讯

“体感差”与“双速经济” 文/刘胜军近日,《求是》刊发题为“如何看待宏观数据与微观感受“温差””的文章,直击最近几年屡被提及的...
鲁比奥:霍尔木兹海峡协议取得进... 美国国务卿鲁比奥表示,在霍尔木兹海峡自由通行协议方面已经取得了“进展……但尚未最终达成协议”。美国最...
从实验室到产业一线:AI“入海... 新华网北京8月3日电(杨易辰 记者刘军)记者8月3日从自然资源部获悉,今年上半年,我国海洋经济实现稳...
OpenAI和Anthropi... 7月16日,月之暗面发布2.8万亿参数的Kimi K3。AI评测平台Arena联合创始人直言,这可能...
400余名青少年珠算爱好者亮相... 8月2日至3日,2026青少年珠算文化非遗美育大会暨第七届“指尖上的智慧”珠算文化非遗教育成果展演亮...
原创 涨... 01、主力机型集体涨价,热搜两极分化 8月2日0点,小米商城价格悄然刷新:REDMI Turbo 5...
伊朗高官:美试图阻挠伊朗阿曼就... 据伊朗方面4日消息,一名伊朗高级官员说,美国政府试图阻挠伊朗与阿曼之间关于霍尔木兹海峡管理的持续谈判...
铠侠与闪迪发布第十代332层Q... IT之家 8 月 4 日消息,铠侠株式会社今天宣布与闪迪公司共同推出下一代四层单元(QLC)3D 闪...
官方通报卫生巾疑现虫卵:对涉事... 8月4日晚,广西桂林市七星区市场监督管理局发布情况通报:4日,网络上关于“购买的卫生巾疑现虫卵”的信...
奖励一颗小行星命名!中国科学家... 中国科学家又有喜讯了。 综合中国气象报社、科技日报消息,当地时间8月3日,在意大利佛罗伦萨举办的第4...