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

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

wptr33 2025-07-09 18:01 5 浏览

王林平

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原创,请点击

阅读原文

查看完整文章并参与讨论

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

将本文分享给你的朋友

相关推荐

搭建Oracle数据库服务器(oracle数据库服务器安装教程)

【十一】搭建Oracle数据库服务器...

Oracle 删除大量表记录操作总结(oracle删除表记录数据)

删除表数据操作清空所有表记录TRUNCATETABLEyour_table_name;...

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

王林平CSDN:首先,请做个自我介绍,目前所负责的领域以及所在公司。王林平:大家好,我是王林平,目前在搜狗商业平台研发部工作。主要负责商业广告数据库的维护、优化、架构设计、流程体系建设、自动化运维平台...

Oracle数据库知识 day01 Oracle介绍和增删改查

一、oracle介绍ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构...

深入探索Oracle 回表原理、影响与优化技巧

什么是回表当对一个列创建索引之后,索引会包含该列的键值以及键值对应行所在的rowid。通过索引中记录的rowid访问表中的数据就叫回表。执行计划中的TABLEACCESSBYINDEXROW...

那些年我们踩过的语句创建oracle 12c cdb实例的坑

现在大多数客户使用oracle还是11g版本的,很多小伙伴可能还没接触过12c,所以今天小编要为大家科普下12c版本的oracle的安装过程中会出现的错误。前面步骤其实都是一样的,我们就直接从建好1...

Oracle高级数据库特性揭秘:存储过程、触发器与权限管理

当谈论Oracle高级数据库特性时,存储过程和函数、触发器、权限管理和安全性以及数据库连接和远程访问是关键概念。下面我将为每个主题提供详细的解释,并附上高质量示例。...

ORACLE内核解密之表空间管理(oracle表空间大小是由什么决定)

一、ORACLE表空间管理1、本地表空间管理tablespace(LMT)...

Oracle 创建磁盘组报错ORA-15137的问题分析与解决思路

ASM扩容本来是件很简单的事,当ASM磁盘准备好之后,直接一条命令就会添加上。但是也会有异常情况,最近就碰到Oracle19c在扩容时报错的故障,供大家参考。...

DBA日记之Oracle数据库索引一(oracle数据库索引有哪几种)

什么是索引在oracle数据库中,索引是数据库中一种可选的数据结构,通常与表或簇相关。用户可以在表的一列或数列上建立索引,以提高在此表上执行SQL语句的性能。就像本文档的索引可以帮助读者快速定位所...

利用Oracle触发器实现不同数据库之间的数据同步

首先在两个数据库之间创建链接(DBLink),然后对要同步地表做一个同义(synonym),最后建一个触发器实现同步。实现步骤如下:1)为保证连接到另一台远程服务器的数据库,需要建立一个DBLin...

oracle已有表的分表分区优化操作步骤(单表过大)

第一章、步骤总览0、获取创建表空间DDL、创建表空间(该步骤在将分区放入不同的表空间时采用)...

Oracle 表分区在线重定义(oracle表分区后查询语句改变吗)

表分区有以下优点:a、改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。b、增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用;c、维护方便:如果表的某个分区出现故障...

ORACLE 体系 - 14(oracle 11g的体系结构有几种)

【十四】数据移动...

Oracle-架构、原理、进程(oracle进程结构)

详解:首先看张图:对于一个数据库系统来说,假设这个系统没有运行,我们所能看到的和这个数据库相关的无非就是几个基于操作系统的物理文件,这是从静态的角度来看,如果从动态的角度来看呢,也就是说这个数据库系统...