手游业务MySQL数据库虚拟化漫谈 | By 肖力

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 手游业务MySQL数据库虚拟化漫谈 | By 肖力

作者简介

肖力, 资深运维专家,拥有15年运维经验,就职于金山西山居,担任系统运维经理,曾就职于盛大游戏,在运维圈有极大的影响力。国内最顶尖的KVM专家之一,从2009年开始研究KVM技术,是国内较早在生产环境大规模实践KVM的人之一,积累了非常丰富的经验。

热衷于技术传播,一直在无私地为运维领域的发展做贡献,维护有微信订阅号“KVM虚拟化实践”,分享了大量KVM和运维领域的干货内容,同时还运营着多个运维相关的微信群。此外,他还是华章“运维前线”系列图书的总策划,无偿地在组织大量愿意无私分享经验的运维工程师们来参与写作。

作者

  • 肖力(原著)

编辑

  • 叶金荣(文章整理)

内容简介

资深运维专家肖力谈手游业务MySQL虚拟化方案

手游业务MySQL服务特点

  1. 目前手游业务大多是采用Redis和MySQL相结合的方案;
  2. Redis则用于游戏业务中当前状态数据的存储,而MySQL一般用于数据持久化存储以及事务控制、数据一致性保证;
  3. 手游业务中的MySQL数据库一般负载不高。

正因为MySQL负载不高,才需要想办法提高资源利用率,这里可以有两个思路:

  • 单机多实例;
  • 虚拟化技术。

这两种方法各有优缺点,我们接下来各自分析对比下。

1、单机多实例

在同一个OS下启动多个mysqld进程,监听多个端口。

优点:

  • 计算资源利用率相对较高,因为没有虚拟化层的损耗;
  • 适合中小企业,因为无需额外维护KVM等虚拟化组件。

缺点:

  • 隔离性相对较差,不同业务的MySQL实例间可能会因为业务瞬间突增而相互影响;
  • 定制化相对麻烦,不同实例要使用不同的MySQL版本,操作配置比较麻烦;
  • 不同实例无法都使用默认的3306端口,除非事先绑定多个IP,相对较复杂。

2、虚拟化技术

在每个虚拟机只运行一个数据库实例。

优点:

  • 方便推动数据库部署标准化、模版化,为后续推进快速部署打好基础;
  • 通过虚拟化技术,实现数据库服务快速批量部署,公有云RDS一般也是这么做的;
  • 具备良好的隔离性,一个实例中的OS或数据库故障不影响其他实例下的服务。

缺点:

  • 多了虚拟化层,增加一部分计算资源消耗;
  • 每个虚拟化实例使用单独的IP,网络管理上更复杂;
  • 手游业务数据库虚拟化方案可以考虑KVM结合Docker的方案。

数据库使用KVM虚拟化方案需要关注下面的几个要点:

  1. 服务稳定性,业务的稳定是一切基础,再好的方案也不能影响业务的稳定,否则都是耍流氓;
  2. 避免性能瓶颈,数据库服务主要的瓶颈在于磁盘I/O,好在手游业务的压力一般不太大。不过上线前也要做足测试,对潜在的性能需求要有预估。遇到高负载时可直接使用SSD或者PCIe SSD设备,在KVM虚拟化中也可将SSD直接以裸盘方式挂载到KVM实例上。
  3. 服务可靠性,可从下面两个方面提升服务可靠性:

1)数据库层面,可采用主从复制、定期物理&逻辑备份(全备+差异备份)、备份恢复等机制;

2)虚拟化层面,可采用共享存储、虚拟机快照等。共享存储优先选择企业级存储设备,要注意虚拟机快照并不能保证数据库的完整性。

数据库使用Docker技术

数据库服务基于Docker技术,有效平衡了单机多实例以及KVM虚拟化两种方案,其资源损耗小,又具备虚拟化灵活部署和隔离性等优点

但当前Docker技术仍有诸多限制:

  • 其使用AUFS文件系统,更容易造成磁盘I/O性能瓶颈(可配置SSD盘缓解I/O压力);
  • Docker的实例不支持热迁移(可和KVM结合,利用KVM实现热迁移);
  • Docker的网络模块上也有瓶颈。

上述这些因素决定了目前在Docker里跑MySQL还有待进一步完善,我们也相信随着Docker技术的不断改进,这些限制或者瓶颈会越来越少,更适大规模运行MySQL等服务。

            </div>
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
存储 运维 固态存储
手游业务MySQL数据库虚拟化漫谈 | By 肖力
手游业务MySQL数据库虚拟化漫谈 | By 肖力
|
3天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
48 15
|
4天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
8天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
16天前
|
关系型数据库 MySQL 数据库
GBase 数据库如何像MYSQL一样存放多行数据
GBase 数据库如何像MYSQL一样存放多行数据
|
28天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
35 1
|
1月前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
39 4
|
2月前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
69 3
Mysql(4)—数据库索引
|
1月前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
199 1
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
109 2

推荐镜像

更多