当前位置: 首页 > news >正文

两个有点纠结的问题

今天看到Grafana的一个报警,看到一个抖动图的时候,突然陷入了深思,发现自己在细粒度的优化方面有很多的工作没有完成。

640?wx_fmt=png

    MySQL的技术发展至今,其实已经从很粗放的管理方式到了逐步完善的阶段,这个过程中因为性能诊断的粒度不够细或者是缺少一些需要参考的信息,所以很多的优化分析很难做。

    比如上面这种情况,你要去追溯历史时间里的一些细节,慢日志就是你需要分析的一个重中之重。毕竟Oracle中的ASH的特性还需要MySQL很长一段时间的完善。MySQL 8.0来了,可以看到很多设计已经有了Oracle的味道,很多不健全的内容也有了取舍。这可能就是技术的一个发展阶段吧,不完善的时候,我们可以出攻略,一旦官方版本成熟了,留给我们的其实是更高层次的要求。

    可能说到这里,有些同学不知道我的意图是什么,目前来看有两个,一个是能够做一些数据收集的补充,可以参考天兔的一些功能,在问题发生做回溯的时候有据可查。

    另外一个就是对于已有的运维工具的完善,优化是在基础运维稳定的基础之上,现在也算是一边建设一边完善吧。所以有大量的基础工作要做,我是一个粉刷匠。。。。

        

    另外一个是关于防火墙开通的功能设计,目前的使用是基于iptables的方式。

我们知道iptables有save的模式,可以把内存中的信息刷新到配置文件中。

另外一种是reload的方式,reload的方式是把权限信息重新刷新一遍到内存中,这个阶段不会改变已有的配置文件。

    现在的问题是如果我想开通一个权限,同时又想保证能够添加注释,那么这个功能就有些纠结了。

    下午的时候开始写这个功能,初步测试OK,但是反复调用测试的时候还是有些问题。

    先放一个草稿版的脚本,明天争取完善好,这个脚本需要做的就是生成一个随机串。

    我不知道该在/etc/sysconfig/iptables文件中添加,我干脆就生成一个随机串嵌入到iptales的comment属性里面,然后刷新内存文件到iptables文件,这个时候我们就可以找到最新插入的位置了,然后开始更新和替换,完成之后reload

思路听起来没问题,但是save的模式会刷新掉已有的文本注释,这个就比较纠结了。

ipaddr=$1

port=$2

comment=$3

curdate=`date "+%Y%m%d"`

random_str=`head -c 500 /dev/urandom | tr -dc a-z0-9A-Z | head -c 20`

if [  -z $ipaddr ];then

 echo 'IP Address is needed....'

 exit

fi

ip_exists=`iptables -nvL|awk '{print $8}'|grep -w $ipaddr|wc -l`

echo $ip_exists

function open_firewall(){

chattr -i /etc/sysconfig/iptables

iptables_cmd="iptables -I INPUT -s  ${ipaddr}  -p tcp -m multiport --dports ${port}  -j ACCEPT -m comment --comment '${comment} ${random_str} ,added by yangjr ${curdate}'"

iptables -I INPUT -s  ${ipaddr}  -p tcp -m multiport --dports ${port}  -j ACCEPT -m comment --comment "${comment} ${random_str} ,added by yangjr ${curdate}"

comment="${comment} ,added by yangjr ${curdate}"

echo $comment

service iptables save

cat /etc/sysconfig/iptables

line_num=`sed  -n -e "/$random_str/=" /etc/sysconfig/iptables`

echo $line_num

#line_num=`expr $line_num - 1`

#echo $line_num

sed -i  "${line_num}s/$random_str//" /etc/sysconfig/iptables

sed  -i "${line_num}i#${comment}" /etc/sysconfig/iptables

service iptables reload

cat /etc/sysconfig/iptables

#sudo chattr +i /etc/sysconfig/iptables

}

if [ ${ip_exists} -eq 0 ];then

  open_firewall

else

  echo 'IP:'${ipaddr}' is already in list'

fi

期望的实现结果是:

xxxxxx

#this is a test6 ,added by yangjr 20180509

-A INPUT -s  192.168.2.116  -p tcp -m multiport --dports 3306  -j ACCEPT

xxxxxx

    

相关文章:

  • 防火墙开通的自动化尝试和感悟
  • 使用shell脚本得到MySQL实例列表
  • 运维开发的开源项目
  • 关于运维开发,说说你的看法
  • Greenplum集群故障修复小记
  • 运维开发流程梳理和思考
  • MySQL 8.0初体验
  • Oracle Cloud初体验
  • MySQL权限开通的设计方案
  • Oracle Cloud for MySQL的初步测试
  • 技术分享活动的小结
  • 两道简单的数学题
  • 技术学习的一些建议
  • 我的女儿二三事(十一)
  • 一些技术认证的学习成本感想
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 「面试题」如何实现一个圣杯布局?
  • 230. Kth Smallest Element in a BST
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • express + mock 让前后台并行开发
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • JS实现简单的MVC模式开发小游戏
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • PaddlePaddle-GitHub的正确打开姿势
  • PhantomJS 安装
  • React-Native - 收藏集 - 掘金
  • Redis 中的布隆过滤器
  • 关于extract.autodesk.io的一些说明
  • 回顾 Swift 多平台移植进度 #2
  • 计算机在识别图像时“看到”了什么?
  • 写给高年级小学生看的《Bash 指南》
  • 转载:[译] 内容加速黑科技趣谈
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #Lua:Lua调用C++生成的DLL库
  • (day 12)JavaScript学习笔记(数组3)
  • (笔试题)合法字符串
  • (分类)KNN算法- 参数调优
  • (转)Linux下编译安装log4cxx
  • (转载)从 Java 代码到 Java 堆
  • ../depcomp: line 571: exec: g++: not found
  • ./configure,make,make install的作用(转)
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .net网站发布-允许更新此预编译站点
  • /*在DataTable中更新、删除数据*/
  • /var/spool/postfix/maildrop 下有大量文件
  • @Bean注解详解
  • @ModelAttribute 注解
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • [2]十道算法题【Java实现】
  • [20190416]完善shared latch测试脚本2.txt
  • [Flutter]WindowsPlatform上运行遇到的问题总结
  • [go] 策略模式
  • [Hadoop in China 2011] Hadoop之上 中国移动“大云”系统解析
  • [HCIE] IPSec-VPN (手工模式)