运维DBA要不要学python
运维DBA要不要学python
我个人认为是:要
现在python在运维数据库的工作中主要用在
1、编写一些运维脚本
2、编写运维管理平台
3、研究互联网大厂的运维脚本/工具并应有
特别是运维开源数据库的时候,第三点特别重要,例如MongoDB的zabbix监控数据库脚本就是用老外用python写的,如果要改一下里面的指标
肯定要用到python
一些互联网大厂开源的数据库脚本和工具,例如mysql相关工具,基本都是用python写的,这些工具/轮子我们肯定会用到
所以python是如此重要,当然用shell也可以完成第一点,如果强硬用python来写也只是用python来调用一下某些shell命令
但是,既然要学python,用python,做一个pythoner,那么最好所有工作都用python,有些人不这么认为,某些任务,shell可以做的python做不了
python一定要调用shell命令来做,这个是的,既然是调用shell命令为何不直接用shell
但是我个人觉得shell有个最大的缺点:格式化
shell几乎是没有格式的,只有简单的缩进,也没有专用的shell编辑器,那么,当你写了几百行代码的时候,如果没有很好的缩进习惯,那么review你的shell脚本
的那个人简直就是灾难,也由于没有专用的shell编辑器,编写shell的时候很容易出错,也不好调试
用python就没有这些问题,python可以用pycharm(本人觉得除了pycharm其他工具都不行)或者其他工具,python有严格的格式化,编辑器也非常强大
pdb,ipdb,print调试手段手到擒来
我记得之前有个招S银行技术部的招聘信息,其中有一条
必须会写shell,并且有写过单个脚本超过10000行shell代码的经验
当时觉得这个要求非常蛋疼,能在单个脚本写超过10000行shell代码的可能是高人也可能是SB,反正觉得招S银行的技术也好不到哪里好
据我所知,他们的mysql运维也是外包给某数据库服务公司,反正大部分都是外包,核心技术应该比较一般
不过,用python不是说完全不用学shell,毕竟python也是要调用shell命令的,不会shell你怎么知道怎么调用shell命令去完成某些任务
只不过不需要学习shell的流程控制语句之类的复杂语法已而
最后,还有一个语言,go语言
go作为互联网界的C/C++,虽然发展历史不长,但是最近几年确实比较火,go虽然是静态语言,也是带GC功能的
因为需要GC,所以go语言不适合做
1、系统编程:系统编程依然是C/C++做主导,由于GC的关系,性能比不上C/C++
2、大数据:依然是JAVA的天下,当时hadoop诞生的时候,go语言还没出生,所以大数据领域还是无法取代JAVA
3、电商:依然是JAVA的天下,JAVA有最成熟的解决方案,阿里巴巴的业务大量使用JAVA就是一个例子
go语言适合做
1、云计算:在云计算领域,go语言没有对手,go语言一般用于非cpu密集型业务,cdn,对象存储,docker,consul,k8s
其实性能上,go语言应该是比JAVA逊色不少,发展历史没有JAVA长,GC功能没有JAVA的完善
至于在运维领域,其实go语言的性能比python是要强,毕竟是静态语言,而且可以利用多核优势,没有python的GIL锁问题
但是在运维领域,更注重的是运维生态,而不是性能,我们开发的运维工具和运管平台其实都不需要很高性能
如果没有运维生态支持,运维将会非常难做,例如,现在每种数据库基本都有python驱动(mongodb,DB2,oracle,mssql,mysql,pgsql,sqlite等等),
spark编写作业也可以用python来编写,openstack本来用python来开发,有很完善的python API,kvm管理也有很完善的python API,
Linux内置python,Windows安装python也比较简单
python有相应的库可以编写Windows服务,国内公有云厂商基本都有python API等等,几乎每种工具、系统、软件都支持python
而这种运维生态,go语言是没有的,原因是go语言是2009年诞生,到现在才10年时间,而python到现在已经有30年历史
所以python才会有这种运维生态,所以才会有每种工具、系统、软件都支持python
例如,DB2数据库就没有go语言的驱动,mssql对go语言不支持bulk insert语法等等
而且目前互联网大厂用go语言来写的开源数据库运维工具和脚本非常少
当然,如果对python有几年经验并且很扎实了,那么可以用空余时间学学go语言
还有一个提醒:据我所知,go语言最流行的web框架beego问题比较多,没有python的django框架那么完善
如果要用go语言来开发运维管理平台,要注意这个坑
最后总结一句:对于运维或DB运维,个人觉得真没有必要学go语言,毕竟go语言是静态语言,门槛相对比较高,而且go语言没有运维生态
当然,如果公司业务的技术栈统一,比如都用java+MySQL+Linux,那么用go语言来做运维的工作也没尝不可,本人就有个朋友在唯品会做运维主管
运维的机器至少几千台,统一用go语言作为运维工作的第一语言,从性能上来说,确实go语言是第一选择
目前本人负责运维:MongoDB,MSSQL,MySQL,PGSQL
用到的语言有:JavaScript,SQL,Python,Windows的批处理,bash shell
如有不对的地方,欢迎大家拍砖o(∩_∩)o
本文版权归作者所有,未经作者同意不得转载。
运维DBA要不要学python的更多相关文章
- undo丢失恢复异常恢复,运维DBA反映Oracle数据库无法启动报错ORA-01157 ORA-01110,分析原因为Oracle数据库坏块导致
本文转自 惜纷飞 大师. 模拟基表事务未提交数据库crash,undo丢失恢复异常恢复,运维DBA反映Oracle数据库无法启动报错ORA-01157 ORA-01110,分析原因为Oracle数据库 ...
- 【转】运维DBA的4大纪律9项注意
朋友们调侃说,运维是个把脑袋别在裤腰带上的活,更有人说,运维是个把脑袋别在他人裤腰带上的活,苦劳没人认,有锅就有得背! 测试的同学说,“吃瓜群众很难感知运维背后的付出,倒是出了事情更能体现我们的专业性 ...
- 一、linux-mysql 运维DBA介绍
一.DBA数据库管理人员需要在整个架构中解决数据库的压力,前端业务通过扩展,加机器就可以很好的解决,但是存储.数据库就不是很好的可以进行扩展,数据也是分配不均的,所以,1)通过在数据库前面添加Memc ...
- Python自动化运维开发实战 三、python文件类型
导语: python常用的有3种文件类型 1. 源代码 py 2. 字节代码 pyc 3. 优化代码 pyo 源代码: python源代码的文件以”py"为扩展名,由python程序解释,不 ...
- Python自动化运维开发实战 二、Python基本用法
导语: Python编程博大精深,知识点众多,需要先整体上了解python的一些基本用法之后再去对每一个知识点细细研究,这样学习的速度会快很多.所以下面就先看一些python事先需要知道的基本知识. ...
- 运维笔记--linux环境提示python: command not found
场景描述: 新部署的容器环境,终端执行python命令,提示没有该命令. 从报错异常可以看出,可能是python环境未安装. 分析思路: 检查python路径: 方式一:type -a python ...
- 转:某运维DBA的mysql学习心得
转自:http://www.cnblogs.com/lyhabc/p/3691555.html 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心 ...
- 运维朋友们,别再问需不需要学 Python 了!
运维人员需不需要学开发?需不需要学 Python?PythonN 和 Shell 有什么区别?天天问这种好水的问题,我实在受不了,决定帮大家扫扫盲. 现阶段,掌握一门开发语言已经成为高级运维工程师的必 ...
- 数读 | 为什么运维朋友们都需要学Python?
运维人员需不需要学开发?需不需要学Python?PythonN和Shell有什么区别?天天问这种好水的问题,我实在受不了,决定帮大家扫扫盲. 现阶段,掌握一门开发语言已经成为高级运维工程师的必备计能, ...
随机推荐
- 6个常见的php安全攻击
1.SQL注入 SQL注入是一种恶意攻击,用户利用在表单字段输入SQL语句的方式来影响正常的SQL执行.还有一种是通过system()或exec()命令注入的,它具有相同的SQL注入机制,但只针对sh ...
- JDK安装遇见的问题及解决方案
问题描述: Jdk安装完成后从新启动电脑,打开eclipse报找 不到JRE或JDK,在cmd中输入 java -version 也不显示JDK信息. 后把JDK配置的环境变量path的JAVA_H ...
- linux的远程唤醒
这里主要是针对ubuntu系统的说明 1.检查计算机硬件是否支持WOL(wake on lan)功能. 1.1.检查主板和电源是否支持WOL: 进入BIOS的Power Management Setu ...
- Tiny4412中断介绍
通过几天裸板驱动开发,今天对ARM的中断做一些简单总结,前面我们已经了解了ARM的7种异常模式,中断是异常模式的一种,在ARM中异常事件发生将会触发中断,但是,所有的中断都不能直接访问cpu,而是都统 ...
- SIMATIC_STEP_V5.6使用报错
SIMATIC_STEP_V5.6是西门子出来的一款能够在Windows 10上运行的step 7软件. 正常的安装步骤我们可以在百度上面进行一些查找,在这里我将我遇到的一个问题发出来. 在Windo ...
- 手把手教你创建「人物角色Persona」
一.为什么要创建人物角色 下图来自 Cooper interaction design ,同样有购车需求的用户,用车的人不同.各自的目的不同,最终满足需求的车型也有很大差异.对于汽车公司而言,在车辆设 ...
- java基础之修饰符和内部类
1.java修饰符 /* 修饰符: 权限修饰符:private,默认的,protected,public 状态修饰符:static,final 抽象修饰符:abstract 类: 权限修饰符:默认修饰 ...
- SVN学习之windows下svn的安装
svn是apache的一个开源项目,全称为subversion.是一个基于版本的项目管理软件,一般在多人开发的项目中使用,目前svn已经替代了原来的cvs.大多数情况下,svn服务安装在linux服务 ...
- Spring Data Jpa 实现分页(Spring MVC+easyui)
spring data jpa很好的对dao层进行了封装,这篇文章主要来写的是实现easyui datagird数据分页,由于各个UI参数不大一样,所以如果使用的是其他UI,得稍作修改.需要说明的是我 ...
- 【莫比乌斯反演】BZOJ2154 Crash的数字表格
Description 求sigma lcm(x,y),x<=n,y<=m.n,m<=1e7. Solution lcm没有什么直接做的好方法,用lcm=x*y/gcd转成gcd来做 ...