2025年1月4日参加了中国PostgreSQL数据库生态大会,以下为台上的20分钟记录。
此次的话题是,PostgreSQL运维的难与“难”,我们来讨论讨论运维中,我们虽然掌握的很多的PostgreSQL的运维知识,为什么还是有九九81“难”。
本次的话题将分为四个部分
1 简单的介绍本次的主题
2 通过三个小的运维实例故事来切入主题
3 在切入主题后,我们反思为什么知识都会,依然是还是“不会”
4 最后运维中我们要面对什么具体的问题与时代的变化
在PostgreSQL的运维工作中,难题比比皆是。是我们技术不行吗?还是我们技术没有掌握的牢固。这里要表达的观点是
1 技术在部分运维的场合中,并不是你解决问题的关键。
2 数据库也有先来后到,后来的数据库会遭受更多的责难和不理解,让运维的工作难,难上加难。
3 当前客户的习惯从可以忍耐一些数据库的“异类问题”,到耐心越来越低,不行就换的思维开始占领了数据库市场。
下面我们通过三个小故事来阐述以上的论点。三个故事分别是
1 该不该说
2 该不该做
3 牵着不走
我们先说第一个故事,该不该“说”,PG有一个历史性的问题,有登录权限的账号,在没有实际的创建表或其他如视图,函数,存储过程等情况下,可以在任意的逻辑库中建立,表、视图、函数、存储过程、序列等等。
不少其他的数据库专业的DBA,对此非常的不理解,认为这和他们的数据库的操作方案非常的不同,有安全的风险问题。
可从多年的PostgreSQL的运维工作中,并未发现有因为此问题导致的产生“实际”生产安全的问题。
部分“大聪明”,如同我们故事里面的这个DBA,知道这个问题,新官上任三把火。将这个问题搞得惊天动地,但做好做,改可是不好改,这牵着到数据库,程序配置等多方面的配合改造。尤其已经运维很长一段时间的基于PG的应用程序。
而在大肆宣扬此问题后,必然会有“好事”者洞察的这个问题,并加以利用,不说还好,说了“好事”者到会利用此问题进行一些非正常的操作。
此故事为“该不该说”。
可我们完全不应该说吗? 也不是我们要辨别的说,看业务如何利用数据库,看当前的公司在使用数据库方面的层次和水平,有的放矢的说,若是将PG当做租户概念的方式去使用,那么这个就是一个问题,且必须要说,大声的说出问题和可能产生的“影响”。
PG15对此问题,也进行了改造,从PG15后的版本这个问题将会淡化。
我们在来说第二个故事,“该不该做”,自作自受。
第二个故事,主要要说明的是将有限的知识,无限的应用,产生非预期的后果,这就是第二个故事。
PostgreSQL有一些系统是开发的较早,或者纯属乙方给甲方开发的系统,数据库和应用程序安装在一起,在这样的情况下,POSTGRESQL默认安装后POSTGRES是没有密码的,且不用密码也能登陆到数据内。应用程序利用了这个部分,直接通过socket登录到数据库中根本不需要密码,并进行应用的操作,利用应用程序和数据库在一起的“职务之便”。
但问题是PostgreSQL数据库越来越火,安全软件也不是吃素的,甲方一扫你的应用,马上你的POSTGRES就不安全了。甲方提出整改。 因为不想让应用程序做出改变,DBA就提出了免密功能的的方案,通过免密的功能Postgres 账号虽然有了密码,但对于应用程序还可以无密码的登陆到数据库系统。
可是在这样的运维方案给出后,.pgpass的文件中记录了数据库的明文密码,对于安全软件进行扫描这还是不安全的,在系统文件中存储明文的密码,甲方得知此事后,继续要求整改。
PostgreSQL的数据库知识会了,但在什么场合用,该怎么用依然是一个问题。
此为故事该不该“做”。
第三个故事是牵着不走。
经济形式会不会影响运维的方式,数据库运维的形式,答案是当然,一定会影响。作为技术人员是应该随着大环境的变化而调整自己的工作方法。
这个故事说的是,经济情况下行,在一些项目本身并不稳定或前途不明的情况下,数据库的部署的方式必然是要进行考量的,是因循守旧的继续原来购买服务器,租用机架的方式,还是寻找更灵活的方式,随着项目的变化而变化,并学习新的技术抵御经济不明给项目带来风险,这并非完全的技术问题,考验的运维人员的能否跟上时代的脚步,积极应对寻找匹配的方式去部署数据库产品来解决实际的问题。
在讲完三个小故事后,我们看看PostgreSQL 运维的难或者数据库运维的难到底来自于哪里。
总结:数据库运维的难,PostgreSQL数据库运维的难不少都来自于,运维人员本身的问题。
1 一根筋的解决问题的方式,不知变通
2 数据库知识学的非常棒,但依然管理不好数据库的大有人在,如同人生道理都明白背的滚瓜烂熟,但依然过不少这一生,在这个数据库知识爆炸的年代,我们缺少的恰恰是在众多数据库知识中的有选择辨别的智识能力。
3 不去看外部变化的环境,活在自己的“固定”方案里面,想以不变应万变的工作方法和心里。
从多年的工作经验中,总结了一些处理数据库运维方面的心得。
1 不以不变应万变的心里来去处理问题,而是以万变应万变的方式去处理运维的难题,对于新的产品保持一种年轻的心态,不拒绝,不抵抗,从不同的解决方案中,寻找更好的。
2 面对环境的变化,顺应环境的变化而变化,而不是按照自己的意愿和想法而来,无为之治。
3 以不变应万变这条真理,应该用到的地方是我们是以什么为核心驱动,作为数据库运维工作者,以业务为驱动服务企业是不变的,从这点发散的去应对各种的变化。
如此可能数据库运维,或者POSTGRESQL的运维将不在“难”上加“难”。