揭秘乐视MySQL数据库架构与运维实践
《揭秘乐视MySQL数据库架构与运维实践》要点:
一、乐视数据库概述1、数据库平台介绍我们数据库部门的数据库种类较多:有MySQL、Oracle、MongoDB、Redis等.从另一角度,可分为传统的DB (MySQL、MongoDB..) 及云数据库RDS.其中,MySQL在公司内部广泛使用,今天将就乐视MySQL的运维情况进行分享. 2、数据库产品现状?
? 3、数据库架构Master-Slave 结构有:
提个问题,图中1主N从+Relay结构,引入relay有什么优缺点?
4、数据库监控我们的数据库监控以开源软件为主,有天兔Lepus、Prometheus、Open-Falcon等. (1)天兔
对于不是特别大的DB规模,天兔监控就够用,也挺好用,可省去大量开发成本. (2)Prometheus Prometheus是一个开源的服务监控系统,它通过HTTP协议从远程的机器收集数据并存储在本地的时序数据库上.它提供简单的网页界面、一个功能强大的查询语言以及HTTP接口等. (3)Open-Falcon 我们用Open-Falcon来做服务器基础监控.对Open-Falcon进行了一些2次开发,如增加电话报警功能、IDC 的概念. (4)作为补充还有Zabbix、微信告警等 此外,公司监控平台提供email报警,短信报警,电话语音报警. 作为补充,数据库平台增加了微信告警. 优点是方便,成本低. 重要性大于邮件的,不到电话或短信级别的可以用微信. 5、数据库备份数据备份是非常重要的,我们的DBA也非常重视数据库的备份工作.在这我把备份概念略微扩展,我认为数据库实时从库也是一种备份. 实时从库
说明:?
冷备份
主要使用xtrabackup来物理备份MySQL.使用了全备+增备,每周至少一次全备,多个增备.为了简便,增备只做基于全备份的增备,并没有使用增备的增备.利用Mount 挂载大的存储 30T,做为备份存储.为避免存储容量满,会有脚本定期压缩,清理历史备份. 二、私有云RDS实践1、私有云RDS项目背景为什么做私有云RDS? 有各种理由: PaaS平台的流行,老板提出需要把数据库服务化、容器技术兴起、成本优化(硬件成本+管理成本)、用户体验等. 但是最真实原因:忙! 2、RDS介绍乐视云RDS基于Docker + Mcluster 开发的一种高可用、可弹性伸缩的在线数据库服务(Relational Database Service,简称RDS). 其中,Mcluster(MySQL Server Cluster)是MySQL数据库集群.
PXC官方的链接: https://www.percona.com/doc/percona-xtradb-cluster/5.6/index.html 3、私有云RDS架构(1)架构图 RDS整体架构主要分为以下几大部分:
(2)RDS架构图2 普通用户登录私有云平台matrix,申请创建RDS.? BeeHive计算分析机群中的资源情况,选择合适的3台机器布署Mcluster DB,同时还会额外布署一个VIP容器来做DB高可用和负戴均衡. 用户可以通过此VIP来访问MySQL.RDS管理员可通过matrix后台对平台全部的RDS进行管理、监控运行状态等. 4、Mcluster架构Mcluster是乐视云基于PXC (Percona XtraDB Cluster)封装和调优的私有云MySQL集群.因为基于PXC封装,故Mcluster具有和PXC 相同的特点.
Mcluster和主从MySQL对比 RDS界面 RDS界面——用户前端 类似阿里云、AWS的RDS用户平台页面.用户选择RDS的配置,主要是磁盘及内存,点下一步,就可以提交RDS申请.(每个用户可以免费建3个,超出需要DBA审核) RDS界面——管理后台 RDS管理员可登录管理后台进行RDS管理,主要功能如下:
DockerFile DockerFilek完成的工作:
Mcluster-Manager 大家可以看到在DockerFile最后一行,会启动mcluster-manager. Mclustre-Manager功能:
mcluster-manager安装在Docker容器中,用来管理MySQL.外部系统不直接操作MySQL,而是通过mcluster-manager API 调用.包括启动、停止、初始化、监控、备份、管理MySQL等功能. RDS运用 私有云RDS上线后大大减轻了DBA工作量,降低了服务器成本和人力成本. 目前在乐视体系各子公司得到广范使用. 运维和坑
数据库规范、流程非常重要,因为这是运维自动化的基础.我们吃过这个亏,数据库版本众多,并且安装目录不同,带来很大的麻烦. 使用私有云确实是可节省大量机器成本及人力成本,这个在乐视云是可以确认的经验,因为我们每台机器上安装了20-30个Docker,即跑了20-30个MySQL,较传统的MySQL布署节省大量成本.若是有个别业务写入量特别大,因为PXC多份写的原因,这时我们也可能迁移到传统的主从DB方式. 私有云RDS产品设计,管理该和公有云有区别.如曾经有RDS用户在线修改大表,引发故障.在公有云上,DBA不用关心此问题. 但是因为是公司内部用户,是私有云,故只能是我们DBA来处理,善后 :( ?另私有云常还有产品树的概念,而公有云就不用类似的设计. 组件较多,相互间依赖太强.我们的RDS 系统做得还是有点太复杂,未来版本希望可减化. 运维工具待完善,如宿主机器故障,恢复工作量较大. 某一宿主机故障,要恢复20-30+的DB.当前是DBA手动执行脚本,还是有点low. Q2:使用数据库增量备份,恢复起来很麻烦吗? A2:乐视云使用基于全备的增备,并不会进行增备的增备.恢复起来并不麻烦. Q3:PXC多主架构是否是采用一个节点写,其余节点读的架构? A3:多点大量同时写数据,有时会有锁问题,所以我们主要是写一节点,多节点读. Q4:如果写的节点挂了怎么办? A4:我们前面有个架构图,用户通过Gblance来访问RDS.(相当于做了VIP高可用) Q5:前面讲到广州到北京复制,你们走公网还是专线? A5:我们使用专线.乐视云在全国有10多个机房.大机房之间走专线. Q6:乐视云RDS是否存在着licence问题? A6:不会有licence问题.我们的RDS是基于Docker + MySQL开发,而MySQL、Docker都是开源软件,没有licence风险. Q7:乐视云RDS会开源吗?会对外提供RDS服务么? A7:目前暂无开源计划,只用在集团内部提供私有云服务,但依公司发展战略,不排除未来提供公有云RDS的可能. 文章来自微信公众号:DBAplus社群 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |