mysql 生产实践_京东容器化MySQL生产实践
京东容器数据库系统,MySQL Docker容器实例达到万级以上。架构简单可靠,Docker容器计算平台与MySQL集群管理平台解耦处理。为描述方便,京东容器化数据库系统命名为CM(Containerized MySQL),底层京东Docker容器计算平台命名为JDOS。
本文重点介绍JDOS如何支持CM。CM是更大的话题,后续数据库团队会分享相关实践。
介绍
CM依赖京东坚实的JDOS技术,MySQL Docker容器实例达到万级以上。
CM借助JDOS技术优势获得主要3个方面的技术收益:
CM借助Docker容器资源隔离能力,有效支持同一宿主物理机上多MySQL实例直接资源隔离,极大提高数据库实例部署密度,有效提升资源使用率。
CM借助Docker容器资源平滑升级能力,方便数据库实例平滑扩容需求。
CM借助JDOS平台资源池化提供管理容器生命周期API能力,实现用户自助上下线数据库以及自动化运维。
本文会从架构设计,性能测试等方面说明京东CM落地实践过程。
整体架构
CM与JDOS解耦,CM负责管理MySQL主从等集群方式的生命周期管理;京东JDOS负责单个MySQL容器实例生命周期管理。
京东Docker容器集群分多Region,多POD部署,且不同集群之间网络互通,有效支持每个MySQL实例可被业务系统直接调用,确保***的网络延迟性能。
MySQL集群实例
优先级、配额
数据库cluster根据业务重要性划分不同的优先级,京东的划分更加细致,这里我们简化分2种优先级:核心系统,非核心系统。
云数据库管理平台只需要在调用京东JDOS平台API时候,带上priority=0,即可表示创建的是核心系统依赖的数据库。京东JDOS平台会强制把属于该cluster的多MySQL实例调度到不同的机架,且不资源“超配”。
底层资源云化和核算成本需求,会针对按事业部配给一定的配额,所在的创建数据库集群实例成功后,自动从该部门扣除对应的资源值,反之销毁会归还配额到部门。
监控、告警
数据库cluster自身DB层面的告警由云数据库集群平台提供。涉及到底层计算、网络、存储等资源层面的告警,由底层京东Docker容器平台提供数据给云数据库集群。
JDOS架构
JDOS是京东统一数据中心计算,网络,存储管理平台。除支持CM外,也支持京东全部的业务系统运行环境。
JDOS系统基于京东扎实的Openstack,Docker等开源技术的持续研发能力,提供稳定,高性能的计算资源平台。每个组件都是独立服务部署,采用MQ互相交互信息,京东重构了主要的核心组件服务,使JDOS平台可以支持更大的集群规模,目前稳定在6K台物理计算节点。重新设计JDOS升级功能,做到平滑无感知,有效支撑长时间运行容器的稳定性。
JDOS控制节点
JDOS控制节点服务组件,借助Haproxy做PooL模式部署,有效避免单点和负载能力问题。
控制节点3台物理机,分别跨在不同的机架上,避免Tor交换机,机架电力,服务器等故障影响。
控制节点服务组件混合部署,进一步提升控制节点每个服务组件的高可用和负载能力。
比如计算服务API,镜像服务API,认证服务API,网络服务API,存储服务API进程混部同一台物理机。
JDOS计算节点
计算节点管理网络与虚拟化数据网络使用不同的网口进行隔离,全万兆网络环境,对数据库的网络环境支持非常好。特别京东在虚拟化网络技术方向的扎实积累,基本可以做到虚拟化网络损耗控制在2%以下。
调度
调度架构简单,负载可扩展。
主要思想是,先一系列filter掉不满足要求的计算节点,然后打分,***做排序,选择***并返回调度结果。
资源分区调度
按Region,POD,Zone,物理机等4个层面划分计算区域,调度算法灵活可配确保业务特点与计算硬件环境特点结合适配。如CM的机器全部是SSD的硬盘,所以JDOS会在每个数据中心提供CM SSD Zone的tag,把CM的创建请求优先调度到具有SSD硬盘的计算Zone。
亲和性和反亲和性调度
创建全新数据库集群实例如一主一层,JDOS调度器会把这2个MySQL容器实例分布到不同的机架。
业务多从库需求,要求从库是高性能读,JDOS调度器会根据performance_slave=True标记,尽可能把从库创建到网络繁忙度较小的机架,并与主在相同的物理POD,甚至同一个Tor交换机下面的不同物理机上。
业务增加备份性质的从库需求,JDOS调度器会根据DB_Cluster_ID=uuid, backup_slave=True标记,强制把从库创建避免已经有该DB_cluser_ID所在的宿主机,以及机架甚至POD。
可扩展性
底层JDOS资源池的扩容性,按使用率,有计划进行扩容底层物理计算资源。
CM每个库使用资源的平滑扩容,比如CPU,内存,网络,磁盘空间均支持平滑扩容功能。
采用直接重置修改cgroup的配置,即可达到平滑扩容的目的。
结合京东设计的cpu set与cpu share并存的资源隔离策略,提升资源使用率。
MySQL实例性能
性能测试环境部署图
测试环境硬件配置
多容器实例基准测试
测试模型
场景描述
基础数据为:8个容器,每个容器基础数据量为1000W(532M),单表加压,每个表10W行记录,同时对多个容器发起相同的请求,测试响应情况,并对比同等线程数下物理机的情况。
容器测试数据
物理机数据
稳定性测试
场景描述
单容器1000W基础数据,单表请求10W数据,8容器并发运行24小时。
性能表现
CPU表现
磁盘表现
网络表现
【本文来自51CTO专栏作者张开涛的微信公众号(开涛的博客),公众号id: kaitao-1234567】
【编辑推荐】
【责任编辑:武晓燕 TEL:(010)68476606】
点赞 0
mysql 生产实践_京东容器化MySQL生产实践相关推荐
- mysql docker还是rds_容器化RDS:计算存储分离还是本地存储?
随着交流机会的增多(集中在金融行业,规模都在各自领域数一数二),发现大家对 Docker + Kubernetes 的接受程度超乎想象, 并极有兴趣将这套架构应用到 RDS 领域.数据库服务的需求可以 ...
- 打开和关闭mysql服务器_启动和关闭MySQL服务器
欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 作为MySQL管理员,一个普通的目标就是确保服务器尽可能地处于运行状态,使得客户机能够随时访问它.但是,有时最好关闭服务器 ...
- npm mysql 事务_一文解读MySQL事务
经常提到数据库的事务,那你知道数据库还有事务隔离的说法吗,事务隔离还有隔离级别,那什么是事务隔离,隔离级别又是什么呢?本文就帮大家梳理一下. MySQL 事务 本文所说的 MySQL 事务都是指在 I ...
- docker mysql主从_使用docker 实现MySQL主从同步/读写分离
1. 利用 docker 实现 mysql 主从同步 / 读写分离 为了保证数据的完整和安全,mysql 设计了主从同步,一个挂掉还可以用另个.最近重构论坛,想来改成主从吧.担心失误,就先拿 dock ...
- 关闭mysql方法_启动和关闭MySQL的方法
启动和关闭MySQL的方法 (1)启动 MySQL安装完成后启动文件mysql在/etc/init.d目录下,在需要启动MySQL服务时运行下面命令即可. [root@test1 init.d]# / ...
- golang mysql 崩溃_使用GoLang与mysql连接失败
我试图使用Go语言连接MySql数据库并给我以下错误. sql: unknown driver "mysql" (forgotten import?) 我的守则 package m ...
- docker运行mysql性能_使用docker运行mysql
以前开发的时候都是用本地的sqlite开发,但是极少数情况下,sqlite支持的语法发布到服务器上链接mysql会报错. 为了避免这种现象,还是链接本地mysql开发还是更稳定的, 可是开发的项目多了 ...
- 自己制作mysql镜像_制作轻量级的mysql镜像
一.拉取一个mysql5.5镜像 docker pull mysql:5.5 二.通过镜像启动一个容器,并在容器中安装ps命令,安装前需要更新apt-get docker run ‐di -p 330 ...
- 零点起飞学mysql视频_零点起飞学MySQL
第1篇 MySQL基础 第1章 数据库的安装(教学视频:25分钟) 2 1.1 MySQL概述 2 1.1.1 MySQL特性以及历史 2 1.1.2 MySQL的获取 3 1.2 MySQL的安装 ...
最新文章
- 北京智源人工智能研究院一岁啦!
- 微信小程序上传图片时provisional headers are shown显示我的错误解决方案
- 操作系统:提升电脑开机速度的15个小技巧
- Mysql数据库-面试题
- 模型算法_生产建模型 算法控效率
- python ModuleNotFoundError: No module named ‘requests‘ 的 解决方案
- java中clone方法_Java Object clone()方法– Java中的克隆
- python贝叶斯分析方法实例_python 贝叶斯分析对应的代码
- 数字/模拟信号中带宽的含义
- 黑客专用文本编辑器Emacs中文手册
- clickhouse开窗函数之同比环比
- 华为meta30浏览器不兼容flex布局解决方案-加前缀
- 数据科学入门与细分数据领域盘点
- 给一些想要学习Java同学的一些建议
- 上号神器,英雄联盟手游扫码登录教程
- 细说二维码扫码登录的原理
- Vive controller vibration
- 【转】光照、材质、纹理的关系
- 【TensorRT】TensorRT踩过的坑
- 梦想CAD控件文字COM接口知识点