前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >两个有点纠结的问题

两个有点纠结的问题

作者头像
jeanron100
发布2018-07-26 15:17:17
3970
发布2018-07-26 15:17:17
举报
文章被收录于专栏:杨建荣的学习笔记

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-05-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档