文档章节

MySQL单机多实例方案

天天顺利
 天天顺利
发布于 2015/05/15 11:14
字数 1424
阅读 154
收藏 0
点赞 0
评论 0

MySQL单机多实例方案,是指在一台物理的PC服务器上运行多个MySQL数据库实例,为什么要这样做?这样做的好处是什么?
1.存储技术飞速发展,IO不再是瓶颈
普通PC服务器的CPU与IO资源不均衡,因为磁盘的IO能力非常有限,为了满足应用的需要,往往需要配置大量的服务器,这样就造成CPU资源的大量浪 费。但是,Flash存储技术的出现改变了这一切,单机的IO能力不再是瓶颈,可以在单机运行多个MySQL实例提升CPU利用率。
2.MySQL对多核CPU利用率低
MySQL对多核CPU的利用率不高,一直是个问题,5.1版本以前的MySQL,当CPU超过4个核时,性能无法线性扩展。虽然MySQL后续版本一直 在改进这个问题,包括Innodb plugin和Percona XtraDB都对多核CPU的利用率改进了很多,但是依然无法实现性能随着CPU core的增加而提升。我们现在常用的双路至强服务器,单颗CPU有4-8个core,在操作系统上可以看到16-32 CPU(每个core有两个线程),四路服务器可以达到64 core甚至更多,所以提升MySQL对于多核CPU的利用率是提升性能的重要手段。下图是Percona的一份测试数据:

3.NUMA对MySQL性能的影响
我们现在使用的PC服务器都是NUMA架构的,下图是Intel 5600 CPU的架构:

NUMA的内存分配策略有四种:
1.缺省(default):总是在本地节点分配(分配在当前进程运行的节点上);
2.绑定(bind):强制分配到指定节点上;
3.交叉(interleave):在所有节点或者指定的节点上交织分配;
4.优先(preferred):在指定节点上分配,失败则在其他节点上分配。
因为NUMA默认的内存分配策略是优先在进程所在CPU的本地内存中分配,会导致CPU节点之间内存分配不均衡,当某个CPU节点的内存不足时,会导致swap产生,而不是从远程节点分配内存。这就是所谓的swap insanity现象。
MySQL采用了线程模式,对于NUMA特性的支持并不好,如果单机只运行一个MySQL实例,我们可以选择关闭NUMA,关闭的方法有三种:1.硬件 层,在BIOS中设置关闭;2.OS内核,启动时设置numa=off;3.可以用numactl命令将内存分配策略修改为interleave(交 叉),有些硬件可以在BIOS中设置。
如果单机运行多个MySQL实例,我们可以将MySQL绑定在不同的CPU节点上,并且采用绑定的内存分配策略,强制在本节点内分配内存,这样既可以充分利用硬件的NUMA特性,又避免了单实例MySQL对多核CPU利用率不高的问题。

资源隔离方案
1.CPU,Memory
numactl –cpubind=0 –localalloc,此命令将MySQL绑定在不同的CPU节点上,cpubind是指NUMA概念中的CPU节点,可以用numactl –hardware查看,localalloc参数指定内存为本地分配策略。
2.IO
我们在机器中内置了fusionio卡(320G),配合flashcache技术,单机的IO不再成为瓶颈,所以IO我们采用了多实例共享的方式,并没有对IO做资源限制。多个MySQL实例使用相同的物理设备,不同的目录的来进行区分。
3.Network
因为单机运行多个实例,必须对网络进行优化,我们通过多个的IP的方式,将多个MySQL实例绑定在不同的网卡上,从而提高整体的网络能力。还有一种更高级的做法是,将不同网卡的中断与CPU绑定,这样可以大幅度提升网卡的效率。
4.为什么不采用虚拟机
虚拟机会耗费额外的资源,而且MySQL属于IO类型的应用,采用虚拟机会大幅度降低IO的性能,而且虚拟机的管理成本比较高。所以,我们的数据库都不采用虚拟机的方式。
5.性能
下图是Percona的测试数据,可以看到运行两个实例的提升非常明显。

高可用方案
因为单机运行了多个MySQL实例,所以不能采用主机层面的HA策略,比如heartbeat。因为当一个MySQL实例出现问题时,无法将整个机器切 换。所以必须改为MySQL实例级别的HA策略,我们采用了自己开发的MySQL访问层来解决HA的问题,当某个实例出问题时,只切换一个实例,对于应用 来说,这一层是透明的。
MySQL单机多实例方案的优点
1.节省成本,虽然采用Flash存储的成本比较高,但是如果可以缩减机器的数量,考虑到节省电力和机房使用的成本,还是比单机单实例的方案更便宜。
2.提升利用率,利用NUMA特性,将MySQL实例绑定在不同的CPU节点,不仅提高了CPU利用率,同时解决了MySQL对多核CPU的利用率问题。
3.提升用户体验,采用Flash存储技术,大幅度降低IO响应时间,有助于提升用户的体验。
–EOF–
关于NUMA可以参考这篇文章:NUMA与Intel新一代Xeon处理器

本文转载自:http://www.hellodb.net/tag/numa

共有 人打赏支持
天天顺利
粉丝 41
博文 161
码字总数 72774
作品 0
海淀
技术主管
Linux NUMA:非统一内存访问架构

1 关于NUMA NUMA,即Non-Uniform Memory Access Architecture,非统一内存访问架构。NUMA模式是一种分布式存储器访问方式,处理器可以同时访问不同的存储器地址,大幅度提高并行性。NUMA模式下...

guzhoujiexing ⋅ 2014/04/17 ⋅ 0

阿里云数据库 MySQL 5.7 单机版发布,看看适合你吗?

众所周知,阿里云数据库RDS(包括MySQL或SQL Server)不便宜,总听到有人说:不如买一台ECS服务器自建MySQL!价格便宜多了! 1.jpg 首先,我不是这么认为的:原因有: RDS是高可用的,包括一...

小宙 ⋅ 2017/12/07 ⋅ 0

mysql单机多实例

在数据库服务器上,可以架构多个Mysql服务器,进行单机多实例的读写分离; 可以通过mysqldmulti来进行多实例的管理,mysqldmulti是用perl写的脚本,原理是通过mysqladmin来进行多个数据库的操...

ifeixiang ⋅ 2015/01/20 ⋅ 0

Ubuntu 16.04下搭建基于携程Apollo(阿波罗)配置中心单机模式

官网:https://github.com/ctripcorp/apollo Wiki:https://github.com/ctripcorp/apollo/wiki(一切的集成方式和使用方法都在这里) Issues:https://github.com/ctripcorp/apollo/issues(......

easonjim ⋅ 2017/10/10 ⋅ 0

容器化RDS|计算存储分离架构下的 IO 优化

计算存储分离架构 架构示意图如下: 存储层由分布式文件系统组成,以 Provisoner 的方式集成到 Kubernetes. 在我们看来, 计算存储分离的最大优势在于: 将有状态的数据下沉到存储层,这使得 ...

技术小能手 ⋅ 01/11 ⋅ 0

PetaData · 架构体系 · PetaData第二代低成本存储体系

背景 2015年7月,PetaData分布式数据库开放了低成本存储体系,随后便服务了天象等多个大数据业务,这些业务存量数据在数百T,日新增10T,新增数据大多是秒级监控数据,既要数据实时可见,又要...

阿里云RDS-数据库内核组 ⋅ 2016/09/03 ⋅ 0

从MySQL到HBase:数据存储方案转型的演进

作者介绍 杨宏志,知乎首页架构负责人,主要负责首页工程化建设、工程架构优化、性能提升等工作。知乎专栏:https://zhuanlan.zhihu.com/c_195355141 MySQL与HBase说到最核心的点,是一种数据...

DBAplus社群 ⋅ 06/19 ⋅ 0

分布式数据层 - TDDL5

淘宝于2008年开始去IOE运动,在关系型数据库存储方面采用了开源的mysql数据库,并根据分布式数据库理论设计了tddl.,其核心是动态表达式分库分表规则引擎,能够将数据分散到不同的数据库里面,...

justwe9891 ⋅ 2017/11/23 ⋅ 0

美团在Redis上踩过的一些坑-2.bgrewriteaof问题

转载请注明出处哈:http://carlosfu.iteye.com/blog/2254154 一、背景 1. AOF: Redis的AOF机制有点类似于Mysql binlog,是Redis的提供的一种持久化方式(另一种是RDB),它会将所有的写命令按...

付磊-起扬 ⋅ 2015/11/05 ⋅ 0

MariaDB单机双实例主从复制

MariaDB其实和mysql一样,非有啥不一样那就是名字不一样~.~! 开始~上篇实验是MariaDB的单机多实例安装 复制通常用来创建主节点的副本,通过添加冗余节点来保证高可用性,当然复制也可以用于...

雁南飞丶 ⋅ 2014/12/31 ⋅ 2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

645. Set Mismatch - LeetCode

Question 645. Set Mismatch Solution 思路: 遍历每个数字,然后将其应该出现的位置上的数字变为其相反数,这样如果我们再变为其相反数之前已经成负数了,说明该数字是重复数,将其将入结果r...

yysue ⋅ 30分钟前 ⋅ 0

Confluence 6 从生产环境中恢复一个测试实例

请参考 Restoring a Test Instance from Production 页面中的内容获得更多完整的说明。 很多 Confluence 的管理员将会使用生产实例运行完整数据和服务的 Confluence 服务器,同时还会设置一个...

honeymose ⋅ 34分钟前 ⋅ 0

Python这么强?红包杀手、消息撤回也可以无视,手机App辅助!

论述 标题也许有点不好理解,其实就是一款利用Python实现的可以监控微信APP内的红包与消息撤回的助手。不得不说,这确实是一款大家钟意的神器。 消息撤回是一件很让人恶心的事,毕竟人都是有...

Python燕大侠 ⋅ 46分钟前 ⋅ 0

压缩打包介绍、gzip压缩工具、bzip2压缩工具、xz压缩工具

压缩打包介绍 压缩的好处不仅能节省磁盘空间而且在传输的时候节省传输时间和网络带宽 windows系统下文件带有 .rar .zip .7z 后缀的就是压缩文件 linux系统下则是 .zip, .gz, .bz2, .xz, ...

黄昏残影 ⋅ 50分钟前 ⋅ 0

观察者模式

1.利用java原生类进行操作 package observer;import java.util.Observable;import java.util.Observer;/** * @author shadow * @Date 2016年8月12日下午7:29:31 * @Fun 观察目标 **/......

Cobbage ⋅ 53分钟前 ⋅ 0

Ubuntu打印服务器配置

参考:https://blog.csdn.net/gsls200808/article/details/50950586 https://blog.csdn.net/jiay2/article/details/80252369 https://wiki.gentoo.org/wiki/HPLIP 由于媳妇儿要大量打印资料,......

大熊猫 ⋅ 59分钟前 ⋅ 0

面试的角度诠释Java工程师(二)

原文出处: locality 续言: 相信每一位简书的作者,都会有我这样的思考:怎么写好一篇文章?或者怎么写好一篇技术类的文章?我就先说说我的感悟吧,写文章其实和写程序是一样的。为什么我会...

颖伙虫 ⋅ 今天 ⋅ 0

github中SSH的Key

https://help.github.com/articles/connecting-to-github-with-ssh/ https://help.github.com/articles/testing-your-ssh-connection/ https://help.github.com/articles/adding-a-new-ssh-k......

whoisliang ⋅ 今天 ⋅ 0

only_full_group_by

我的mysql是在CentOS7.1下面的5.7.17 在 /etc/my.cnf 文件里加上如下: sql_mode='NO_ENGINE_SUBSTITUTION' 然后,重启Mysql服务 systemctl restart mysqld...

SunHacker ⋅ 今天 ⋅ 0

实际项目(SpringBoot项目)中集成Druid

参考网页 https://blog.csdn.net/liuchuanhong1/article/details/55050131 https://blog.csdn.net/CoffeeAndIce/article/details/78707819 https://www.pocketdigi.com/20170530/1577.html 为......

karma123 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部