MySQL数据库架构与运维实践.docx
- 文档编号:12120136
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:9
- 大小:117.50KB
MySQL数据库架构与运维实践.docx
《MySQL数据库架构与运维实践.docx》由会员分享,可在线阅读,更多相关《MySQL数据库架构与运维实践.docx(9页珍藏版)》请在冰豆网上搜索。
MySQL数据库架构与运维实践
MySQL数据库架构与运维实践
分享大纲:
1.乐视数据库介绍
2.揭秘私有云RDS架构及实践
一、乐视数据库概述
1、数据库平台介绍
我们数据库部门的数据库种类较多:
有MySQL、Oracle、MongoDB、Redis等。
从另一角度,可分为传统的DB(MySQL、MongoDB..)及云数据库RDS。
其中,MySQL在公司内部广泛使用,今天将就乐视MySQL的运维情况进行分享。
2、数据库产品现状
∙MySQL版本较多,有官方MySQL5.5、MariaDB10、PXC5.6等;
∙架构有1主多从、1主多层、PXC(Percona-XtraDB-Cluster)等结构;
∙硬件有SAS盘、SATASSD,主要使用SATASSD。
3、数据库架构
Master-Slave结构有:
∙1主N从
∙1主N从+MB(master-backup)
∙1主N从+Relay
提个问题,图中1主N从+Relay结构,引入relay有什么优缺点?
∙优点:
在跨机房高可用时,布署一台同步用的relay在异地机房可减少跨机房同步带宽。
∙缺点:
增加了架构复杂度,主从关系变成多层树结构。
若是使用不当,比较乱,易出错。
我见过超过4层的主从,梳理关系就很麻烦,建议不超过3层。
4、数据库监控
我们的数据库监控以开源软件为主,有天兔Lepus、Prometheus、Open-Falcon等。
(1)天兔
∙Lepus是一个由Python+PHP开发的数据库企业级监控系统
∙支持MySQL/Oracle/MongoDB/Redis等数据库的监控
对于不是特别大的DB规模,天兔监控就够用,也挺好用,可省去大量开发成本。
(2)Prometheus
Prometheus是一个开源的服务监控系统,它通过HTTP协议从远程的机器收集数据并存储在本地的时序数据库上。
它提供简单的网页界面、一个功能强大的查询语言以及HTTP接口等。
(3)Open-Falcon
我们用Open-Falcon来做服务器基础监控。
对Open-Falcon进行了一些2次开发,如增加电话报警功能、IDC的概念。
(4)作为补充还有Zabbix、微信告警等
此外,公司监控平台提供email报警,短信报警,电话语音报警。
作为补充,数据库平台增加了微信告警。
优点是方便,成本低。
重要性大于邮件的,不到电话或短信级别的可以用微信。
5、数据库备份
数据备份是非常重要的,我们的DBA也非常重视数据库的备份工作。
在这我把备份概念略微扩展,我认为数据库实时从库也是一种备份。
实时从库
∙大存储机器单机多实例布署(20-30+)
∙重要业务异地机房从库
∙多源复制从库
说明:
1.我们找了一些大磁盘存储10T+,在具布署了30+左右的MySQL数据库,不提供线上服务。
这样相当于在一台机器上有30个DB的热备份。
2.对重要业务,进行异地跨机房从库制作。
可避免单一IDC异常,引发故障。
3.乐视有一些统计分析数据库,使用MariaDB多源复制,一个实例同时同步多个主库。
某些情况也可以使用分析库来恢复数据。
冷备份
∙xtrabackup物理热备份
∙全备+增备
∙Mount挂载大存储
∙定期清理历史备份
主要使用xtrabackup来物理备份MySQL。
使用了全备+增备,每周至少一次全备,多个增备。
为了简便,增备只做基于全备份的增备,并没有使用增备的增备。
利用Mount挂载大的存储30T,做为备份存储。
为避免存储容量满,会有脚本定期压缩,清理历史备份。
二、私有云RDS实践
1、私有云RDS项目背景
为什么做私有云RDS?
有各种理由:
PaaS平台的流行,老板提出需要把数据库服务化、容器技术兴起、成本优化(硬件成本+管理成本)、用户体验等。
但是最真实原因:
忙!
2、RDS介绍
乐视云RDS基于Docker+Mcluster开发的一种高可用、可弹性伸缩的在线数据库服务(RelationalDatabaseService,简称RDS)。
其中,Mcluster(MySQLServerCluster)是MySQL数据库集群。
∙Mcluster是我们开发出的一种私有云MySQL集群
∙基于PXC(PerconaXtradbCluster)封装和调优
∙真正的多主架构没有单点故障,高可用性
∙是RDS的根基
∙良好的扩展性
PXC官方的链接:
3、私有云RDS架构
(1)架构图
RDS整体架构主要分为以下几大部分:
1.Docker:
乐视云RDS是跑在Docker容器内部
2.Database:
为具体的数据库。
可以是MySQL,也可以是PostgreSQL等任何数据库
3.Matrix:
负责前端数据库创建、管理、监控、维护和相关资源调度
4.BeeHive:
负责资源的调度管理,BeeHive类似Kubernete
5.DataAnalysis:
负责数据库日志的分析还有用户行为分析
(2)RDS架构图2
普通用户登录私有云平台matrix,申请创建RDS。
BeeHive计算分析机群中的资源情况,选择合适的3台机器布署MclusterDB,同时还会额外布署一个VIP容器来做DB高可用和负戴均衡。
用户可以通过此VIP来访问MySQL。
RDS管理员可通过matrix后台对平台全部的RDS进行管理、监控运行状态等。
4、Mcluster架构
Mcluster是乐视云基于PXC(PerconaXtraDBCluster)封装和调优的私有云MySQL集群。
因为基于PXC封装,故Mcluster具有和PXC相同的特点。
∙多点读写
机群中任一DB节点都可以写入
∙并行复制
可以多个线程复制,以事务为单位,多个事务同时并行推送到所有集群节点
∙强一致性
各节点数据强一致性
∙高可用性
单一节点故障不会影响机群的可用性
∙兼容传统MySQL
与传统MySQL几乎完全兼容,数据可以直接使用不需要任何转换
Mcluster和主从MySQL对比
RDS界面
RDS界面——用户前端
类似阿里云、AWS的RDS用户平台页面。
用户选择RDS的配置,主要是磁盘及内存,点下一步,就可以提交RDS申请。
(每个用户可以免费建3个,超出需要DBA审核)
RDS界面——管理后台
RDS管理员可登录管理后台进行RDS管理,主要功能如下:
∙用户、宿主机资源管理
∙RDS日常管理 申请审核,RDS信息查询,人员变更等
∙Docker容器管理
∙RDS备份
∙RDS监控 RDS运行状态监控
DockerFile
DockerFilek完成的工作:
1.安装及配置MySQL
2.安装相关软件
3.启动mcluter-manager
Mcluster-Manager
大家可以看到在DockerFile最后一行,会启动mcluster-manager。
Mclustre-Manager功能:
∙tornado的web服务
∙启动、停止初始化MySQL
∙监控、管理MySQL
mcluster-manager安装在Docker容器中,用来管理MySQL。
外部系统不直接操作MySQL,而是通过mcluster-managerAPI调用。
包括启动、停止、初始化、监控、备份、管理MySQL等功能。
RDS运用
私有云RDS上线后大大减轻了DBA工作量,降低了服务器成本和人力成本。
目前在乐视体系各子公司得到广范使用。
运维和坑
∙数据库规范、流程非常重要
∙私有云可节省大量机器成本及人力成本
∙私有云RDS产品设计、管理该异与公有云
∙RDS用户在线修改大表,引发故障
∙多节点同时大量写,容易引起死锁
∙组件较多,相互间依赖太强
∙运维工具待完善如宿主机器故障,恢复工作量大
数据库规范、流程非常重要,因为这是运维自动化的基础。
我们吃过这个亏,数据库版本众多,并且安装目录不同,带来很大的麻烦。
使用私有云确实是可节省大量机器成本及人力成本,这个在乐视云是可以确认的经验,因为我们每台机器上安装了20-30个Docker,即跑了20-30个MySQL,较传统的MySQL布署节省大量成本。
若是有个别业务写入量特别大,因为PXC多份写的原因,这时我们也可能迁移到传统的主从DB方式。
私有云RDS产品设计,管理该和公有云有区别。
如曾经有RDS用户在线修改大表,引发故障。
在公有云上,DBA不用关心此问题。
但是因为是公司内部用户,是私有云,故只能是我们DBA来处理,善后:
( 另私有云常还有产品树的概念,而公有云就不用类似的设计。
组件较多,相互间依赖太强。
我们的RDS系统做得还是有点太复杂,未来版本希望可减化。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MySQL 数据库 架构 实践