百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

专访搜狗DBA负责人王林平:为何从Oracle转向MySQL?

moboyou 2025-03-18 22:05 11 浏览

王林平

CSDN:首先,请做个自我介绍,目前所负责的领域以及所在公司。

王林平:大家好,我是王林平,目前在搜狗商业平台研发部工作。

主要负责商业广告数据库的维护、优化、架构设计、流程体系建设、自动化运维平台建设等工作,目前比较关注数据库备份恢复、性能优化、运维自动化等几个领域。

CSDN:你是从何时加入搜狗的?从事数据库开发和运维这么多年给你最大的感悟是什么?

王林平:我是2011年初加入搜狗的,到搜狗快五年了,经历了数据库团队由小到大逐步成熟的过程。从事运维工作已经八年多,感受最深的有两点:

  • 第一,责任心重于一切。我们维护的是企业最核心的信息—-数据,一旦数据丢失或者数据异常,带来的损失不可估量。高度的责任心和良好的职业道德是成为一个好的运维工作者的的最重要前提。

  • 第二,自我驱动很重要。运维这项工作在学校的专业里面是没有的,如何开始做运维,如何做好运维,如何让运维工作更有价值,都是需要我们自己去探索,不断给自己提出新的目标并探索解决的方案,能为企业创造更高的价值。

CSDN:目前搜狗主要使用的数据库是什么?为何想到从oracle转向MYSQL呢?

王林平:目前搜狗主要使用的数据库是MySQL、MongoDB、HBase来存储数据。MySQL主要存储对数据状态有要求和更新频繁的数据;MongoDB主要用于存储计费数据、日志数据和流水数据;HBase主要用来做数据分析和存储大数据内容。

从Oracle转向MySQL主要是出于三个方面的原因:

  • 第一,降低运维成本。Oracle数据库自动化运维实现难度和成本较高,而MySQL运维自动化难度和成本相对较低,当数据库实例不断成倍增长的时候,使用MySQL可以在有限人力的情况下维护更多的数据库实例。

  • 第二,降低软件成本。Oracle License成本较高,MySQL及其分支目前是免费的。

  • 第三,提高可扩展性。MySQL是开源数据库,便于有技术能力的公司根据业务发展情况自己开发定制一些数据库周边服务,使数据库使用的扩展性提高,而Oracle对这方面的支持比较一般。

CSDN:你怎么看待MYSQL的性能?有哪些优缺点? 搜狗基于MYSQL的开发场景有哪些?

王林平: MySQL在单实例性能方面和Oracle相比还有一些差距,我们通过规范和技术手段来降低这些性能差距带来的问题。

首先,大量甚至海量数据的增删改、查询、聚合查询的性能还有待提高。为了规避这些问题,我们在开发规范里面要求MySQL的实例大小低于150G,要求带变长行的表行数不超过500w,尽量降低查询、修改、删除脚本的复杂度,以原子查询的方式访问数据库。

其次,MySQL的优化器还不够完善。MySQL的优化器还更接近于基于规则的优化,而不是基于成本的优化,对复杂查询的智能优化有待提高。因此MySQL数据库多表联合查询的性能还不如Oracle。我们的开发规范要求开发人员尽量避免三个表以上的表关联查询。

第三,原生版本的MySQL主从延迟挺严重,远高于Oracle数据库。为此我们将批量更新和批量删除的事务的粒度拆分的比较细,同时在核心业务上使用SSD硬盘来降低主从延迟对业务的影响。

MySQL有以下优点:灵活、可配置、可二次开发、方便维护管理,集群的性能和扩展性强。

MySQL的缺点是存储和查询的数据量、并发数有限,主从非强一致。这就要求DBA必须对数据库的业务深入理解,合理规划并发数、数据量,进行预估、拆分等架构优化来规避这些不足。

我所在的商业广告部门很多平台是面向客户的高并发、高压力的系统,应用MySQL数据库存储广告物料、客户资料、计费、资金、日志、管理平台、基础架构平台等业务数据。不同平台对性能、稳定性、安全性要求不同,我们会根据平台特点选择合理的MySQL部署和配置方式。

CSDN:据了解,搜狗实现了数据库的“一键部署”功能,请问这是怎样的一种解决方案?

王林平:可以理解“一键部署”是一种理念和工具的实现。这个理念是基于MySQL数据库本身的特点出现的,MySQL数据库的安装配置步骤相对简单,安装过程中出错的概率相对比较低,随着业务量增加这种重复劳动量急剧增加,给DBA造成很大的负担,重复劳动的价值并不高,因此考虑对这部分工作进行自动化。

起源:最初是为了降低部署成本,开发了一个很简陋的脚本工具,只是将数据库目录创建好,二进制包解压缩,并给出DBA启动数据库的命令。

发展:为了平台化运维需求丰富了功能。随着业务的不断发展,数据库实例越来越多,由几十增长到了上百个,甚至几百个,规模化运维要求有集中的信息管理平台,因此一键部署工具将数据库、服务器、实例信息做了入库管理,同时为了有效提高自动化运维的效率,我们对操作系统、硬件等信息进行了标准化,一键部署工具还需要对这些信息进行校验,一键部署工具还对备份系统、监控系统做了初始化。一键部署工具执行完之后,数据库的使用和基本信息的入库工作,包括后续工作的准备工作都完成了,可以投入生产环境使用。

展望:我们的运维自动化起步是从一键部署开始的,未来我们更倾向于将95%甚至比例更多的工作用Web工具实现,同时有完整的交互界面,一键部署可能会随着业务和需求的增长越来越庞大,会拆分成N键部署,但是依旧高效,期待鼠标点几下、手指触碰几下就完成数据库部署和运维高效时代到来。

CSDN:安全问题,一直是数据库运维人士关注重点,你们是如何确保数据库安全问题的?

王林平:数据的安全我理解应该从两个大的维度去分析,第一是访问安全,不会出现不应该有的访问,不会因为不应该有的访问崩溃,用户的敏感数据不会泄露;第二是数据安全,数据可恢复,不丢失。

访问安全,我们是基于操作系统的安全机制和数据库自身的安全机制来保证的;在操作系统的安全层面,我们采用IPTABLES白名单的方式,仅允许指定范围的IP的内网服务器访问数据库,同时严格隔离线上和线下。在数据库自身安全机制上面,我们针对细粒度IP进行授权,并且回收了表的创建、删除、DDL操作权限;同时我们开发、部署了数据库访问巡检工具,实时屏蔽不合法的访问。针对访问安全,为了降低授权成本,我们研发并全部使用自动化授权工具授权。

数据安全,我们主要是通过多级备份策略来保证的,多级备份策略是指:热备份+逻辑备份+二级备份+定制备份。热备份保证数据库可以在一周内恢复到某个时间点,逻辑备份作为热备份的补充;二级备份主要是将历史上的逻辑备份做一下远程双份备份,以规避误操作带来的损失;定制备份是针对一些特殊业务需求,做按天切片备份,满足业务对某天数据恢复的需求。同时为了确保数据快速恢复,我们尽量把单实例的大小控制在100G以内。热备份+逻辑备份+二级备份可以满足大部分广告数据的恢复需求,而对于资金、计费、财务类数据,由于涉及到审计,我们会与业务方确认是否需要补充定制备份。

CSDN:在你看来,一名优秀的技术人应该具备怎样的素质?

王林平:技术人的范围有些广了,我谈一下运维人员的必备素质吧。

首先是知识沉淀。基础知识是做好工作的基石。系统的学习各类基础知识,熟悉数据库、操作系统的架构及相关工具的使用,熟悉主流脚本语言的开发,同时还需要对故障定位有一定的理解。

其次是经验沉淀。要耐得住寂寞,不断积累经验。做运维工作需要丰富的经验,高并发、大数据量运维经验,大量服务器和实例的运维经验。在关键的时候这些经验会拯救企业的服务和数据。

再次是业务沉淀。要具备较强的业务理解能力,深入并精通所在岗位的业务。技术是为业务服务的,技术人员到一个新的岗位会的只是通用技术,技术适应并结合业务才能发挥更大的作用。

最后是软技能的沉淀。较强的执行力,适应业务、技术的创新能力,良好的沟通协作能力和组织能力,优秀的团队配合能力;细致、冷静、沉稳,优秀的判断能力和紧急状况择优处理能力;充分的理解和被理解。要有不断更新自己的欲望和自我驱动力。互联网技术日新月异的,行业的发展非常迅速,必须不断地学习新知识和技能,才能跟上时代,更好的成长。

CSDN:给从事数据库运维的开发者分享些建议吧。

王林平:有几点想法分享下:

  • 第一,运维工作最重要的是稳定性。判断是否要做一件事比做好一件事更重要。

  • 第二,自动化运维已经成为当前主要的运维方式。互联网运维进入自动化时代,以开放的心态面对现状展望未来,修炼自己全面技术能力很重要,除了会拿来,更需要会创造,让人去想,让机器做事。

  • 第三,工作工具很重要。有一套自己的工作工具,可以事半功倍。

  • 第四,需要建立服务意识和服务体系。作为后台支撑团队,提供更好的数据相关服务是最重要的。

  • 第五,低头走路别忘记抬头看天。做好本职工作的同时要时刻考虑自己和团队的价值是什么,对业务和产品有什么贡献。

CSDN:其他有需要补充的吗?

王林平:从数据库运维发展历程来看,主流的互联网公司的路线基本类似,不同公司在不同的领域有自己的优势。我们在规模化运维方面积累了一些经验,也在国内外一些技术交流大会上学习到了许多经验,希望整个行业能够加强交流频度和深度,互通有无,使数据库运维更快速地发展。

本文为CSDN原创,请点击

阅读原文

查看完整文章并参与讨论

如果您喜欢这篇文章,请点击右上角

将本文分享给你的朋友

相关推荐

php通过IP地址查询详细信息_php根据ip获取位置

前言:以前找过很多查询ip地址信息的工具,有的没有经纬度,有的没有国外的信息。现在本人制作的这个可以查询全国ip的信息,并且给出ip地址所在地的经纬度信息!以下为php程序代码截图...

今晚拿下PHP反序列化的一系列操作

引言在CTF中反序列化类型的题目还是比较常见的,之前有学习过简单的反序列化,以及简单pop链的构造。这次学习内容为php内置的原生类的反序列化以及一点进阶知识。在题目给的的代码中找不到可利用的类时,这...

关于 PHP 启动 MongoDb 找不到指定模块问题

前言:最近有一个小demo,需要通过PHP将用户行为记录储存到MongoDB,再用Spark做协同过滤。由于以前处理跨语言交互是通过消息中间件,这次本地使用MongoDB却弄出了几个问...

PHP8中查询数组中指定元素-PHP8知识详解

php是使用最广泛的web编程语言,数组是一个数据集合,数组是一种非常常用的数据类型。在操作数组时,有时我们需要查询数组中是否有某个指定元素。在实际的程序开发中,我们用到了下列方法来查询数组中指定的元...

通过代码执行或命令执行写Shell_命令执行和代码执行

公众号:白帽子左一专注分享渗透经验,干货技巧...本文由团队手电筒分享,如果你还是个小白担心看不懂,没关系,“三步写马””如何上传木马”“如何拿下服务器并妥善管理”等实战内容可以结合视频观看,视频演示...

ThinkPHP6初步搭建API服务_thinkphp6 api

ThinkPHP6正式发布已有一小段时间,按照官方文档实操了一遍。中间也遇到些小问题,在网上找解决方案花费了一些时间。本次分享整理了ThinkPHP6从头开始部署的详细操作步骤,希望能够帮助大家节省探...

第②章 在逃火锅难民与椒盐喷嚏_椒盐蛋解说我的世界

意识像沉在深海的破船,一点一点被光线和声音打捞上来。林琳,不,现在是李琳琅了,躺在宽大得能跑马的雕花拔步床上,瞪着头顶繁复的藻井彩绘,第无数次确认自己不是在做梦。鼻腔里充斥着淡淡的、混合了药味、熏...

美团外卖特征平台的建设与实践_美团外卖的技术分析

随着美团外卖业务的发展,算法模型也在不断演进迭代中。本文从特征框架演进、特征生产、特征获取计算以及训练样本生成四个方面介绍了美团外卖特征平台在建设与实践中的思考和优化思路。1背景美团外卖业务种类繁多...

分库分表实战(第2期):最初的我们——了解一下单库外卖订单系统

前言上一期内容我们整体了解了分库分表实战项目当前使用的系统架构,也就是单库版本订单系统的系统架构。同时,我们也知道了未来要做的分库分表版本的订单系统架构。现在,我们就从单库版本的订单系统开始,一步一...

“美团外卖小哥帮崩溃程序员写代码”视频遭质疑:自编自导自演

来源:三言财经近日,有网友质疑走红网络的“青岛外卖小哥帮崩溃程序员写代码”的视频是一起策划。有网友认为,就算是行业人员转行送外卖,一上手就能看懂对方的代码并开始马上写的行为太假;还有网友表示,配音搞成...

HarmonyOS NEXT仓颉开发语言实战案例:外卖App

各位周末好,今天为大家来仓颉语言外卖App的实战分享。我们可以先分析一下页面的布局结构,它是由导航栏和List容器组成的。幽蓝君目前依然没有找到仓颉语言导航栏的系统组件,还是要自定义,这个导航栏有三部...

蛋糕房外卖小程序烘焙店点餐外卖小程序微信小程序源码饮品店

基于微信小程序的外卖点餐的设计与实现-计算机毕业设计源码

摘要随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了微信小程序外卖点餐的设计与实现的开发全过程。通过分析微信小程序外卖点餐的设计与实现管理的不足,创建了一个...

外卖源码和外卖平台系统租赁有什么区别?

外卖源码和外卖平台系统租赁是两种不同的模式,它们之间有什么区别?我们来看看吧。1.概念不同:外卖源码是指一种软件源代码,包括了外卖平台的核心代码、框架、功能模块等,需要用户自己进行二次开发和定制。更...

Java项目本地部署宝塔搭建实战java外卖小程序源码

大家好啊,我是测评君,欢迎来到web测评。本期给大家带来一套java开发的外卖小程序源码,这套系统已经完成了线下配送的大部分功能,适合学习与二次开发。技术架构技术框架:springboot+ssm...