百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

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

sinye56 2024-10-20 13:03 5 浏览 0 评论

王林平

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

阅读原文

查看完整文章并参与讨论

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

将本文分享给你的朋友

相关推荐

程序员:JDK的安装与配置(完整版)_jdk的安装方法

对于Java程序员来说,jdk是必不陌生的一个词。但怎么安装配置jdk,对新手来说确实头疼的一件事情。我这里以jdk10为例,详细的说明讲解了jdk的安装和配置,如果有不明白的小伙伴可以评论区留言哦下...

Linux中安装jdk并配置环境变量_linux jdk安装教程及环境变量配置

一、通过连接工具登录到Linux(我这里使用的Centos7.6版本)服务器连接工具有很多我就不一一介绍了今天使用比较常用的XShell工具登录成功如下:二、上传jdk安装包到Linux服务器jdk...

麒麟系统安装JAVA JDK教程_麒麟系统配置jdk

检查检查系统是否自带java在麒麟系统桌面空白处,右键“在终端打开”,打开shell对话框输入:java–version查看是否自带java及版本如图所示,系统自带OpenJDK,要先卸载自带JDK...

学习笔记-Linux JDK - 安装&配置

前提条件#检查是否存在JDKrpm-qa|grepjava#删除现存JDKyum-yremovejava*安装OracleJDK不分系统#进入安装文件目...

Linux新手入门系列:Linux下jdk安装配置

本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署,希望能够帮到一些初学者,少走一些弯路。注意:L...

测试员必备:Linux下安装JDK 1.8你必须知道的那些事

1.简介在Oracle收购Sun后,Java的一系列产品就被整合到Oracle官网中,打开官网乍眼一看也不知道去哪里下载,还得一个一个的摸索尝试,而且网上大多数都是一些Oracle收购Sun前,或者就...

Linux 下安装JDK17_linux 安装jdk1.8 yum

一、安装环境操作系统:JDK版本:17二、安装步骤第一步:下载安装包下载Linux环境下的jdk1.8,请去官网(https://www.oracle.com/java/technologies/do...

在Ubuntu系统中安装JDK 17并配置环境变量教程

在Ubuntu系统上安装JDK17并配置环境变量是Java开发环境搭建的重要步骤。JDK17是Oracle提供的长期支持版本,广泛用于开发Java应用程序。以下是详细的步骤,帮助你在Ubuntu系...

如何在 Linux 上安装 Java_linux安装java的步骤

在桌面上拥抱Java应用程序,然后在所有桌面上运行它们。--SethKenlon(作者)无论你运行的是哪种操作系统,通常都有几种安装应用程序的方法。有时你可能会在应用程序商店中找到一个应用程序...

Windows和Linux环境下的JDK安装教程

JavaDevelopmentKit(简称JDK),是Java开发的核心工具包,提供了Java应用程序的编译、运行和开发所需的各类工具和类库。它包括了JRE(JavaRuntimeEnviro...

linux安装jdk_linux安装jdk软连接

JDK是啥就不用多介绍了哈,外行的人也不会进来看我的博文。依然记得读大学那会,第一次实验课就是在机房安装jdk,编写HelloWorld程序。时光飞逝啊,一下过了十多年了,挣了不少钱,买了跑车,娶了富...

linux安装jdk,全局配置,不同用户不同jdk

jdk1.8安装包链接:https://pan.baidu.com/s/14qBrh6ZpLK04QS8ogCepwg提取码:09zs上传文件解压tar-zxvfjdk-8u152-linux-...

运维大神教你在linux下安装jdk8_linux安装jdk1.7

1.到官网下载适合自己机器的版本。楼主下载的是jdk-8u66-linux-i586.tar.gzhttp://www.oracle.com/technetwork/java/javase/downl...

window和linux安装JDK1.8_linux 安装jdk1.8.tar

Windows安装JDK1.8的步骤:步骤1:下载JDK打开浏览器,找到JDK下载页面https://d.injdk.cn/download/oraclejdk/8在页面中找到并点击“下载...

最全的linux下安装JavaJDK的教程(图文详解)不会安装你来打我?

默认已经有了linux服务器,且有root账号首先检查一下是否已经安装过java的jdk任意位置输入命令:whichjava像我这个已经安装过了,就会提示在哪个位置,你的肯定是找不到。一般我们在...

取消回复欢迎 发表评论: