MySQL单机多实例方案
来源:互联网 发布:德国博士申请 知乎 编辑:程序博客网 时间:2024/04/30 14:40
源地址:http://www.hellodb.net/2011/06/mysql_multi_instance.html
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):在所有节点或者指定的节点上交织分配; 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和SSD,单机的IO不再成为瓶颈,所以IO我们采用了多实例共享的方式,并没有做资源限制。 3.Network 因为单机运行多个实例,必须对网络进行优化,我们通过多个的IP的方式,将多个MySQL实例绑定在不同的网卡上,从而提高整体的网络能力。还有一种更高级的做法是,将不同网卡的中断与CPU绑定,这样可以大幅度提升网卡的效率。 4.为什么不采用虚拟机 虚拟机会耗费额外的资源,而且MySQL属于IO类型的应用,采用虚拟机会大幅度降低IO的性能,而且虚拟机的管理成本比较高。 5.性能 下图是Percona的测试数据,可以看到运行两个实例的提升非常明显。 高可用方案 因为单机运行了多个MySQL实例,所以不能采用主机层面的HA策略,比如heartbeat。因为当一个MySQL实例出现问题时,无法将整个机器切换。所以必须改为MySQL实例级别的HA策略,我们采用了自己开发的MySQL访问层来解决HA的问题,当某个实例出问题时,只切换一个实例,对于应用来说,这一层是透明的。 MySQL单机多实例方案的优点 1.节省成本,虽然采用SSD的成本比较高,但是如果可以缩减机器的数量,考虑到节省电力和机房使用的成本,还是比单机单实例的方案更便宜。 2.提升利用率,利用NUMA特性,将MySQL实例绑定在不同的CPU节点,不仅提高了CPU利用率,同时解决了MySQL对多核CPU的利用率问题。 3.提升用户体验,采用SSD后,降低IO响应时间,有助于提升用户的体验。 –EOF– 关于NUMA可以参考这篇文章:NUMA与Intel新一代Xeon处理器
- MySQL单机多实例方案
- MySQL单机多实例方案
- MySQL单机多实例方案
- MySQL单机多实例方案
- MySQL单机多实例方案
- MySQL单机多实例方案
- 剖解MySQL单机多实例方案性能
- MySQL单机多实例方案部署
- 关于mysql的单机多实例方案
- mysql单机多实例
- MySQL单机多实例配置
- 单机配置MYSQL多实例
- 单机MySQL多实例安装
- mysql单机多实例配置笔记
- Mysql 数据库单机多实例部署手记
- MySQL 安装及其单机多实例部署
- Mysql单机多实例搭建说明
- 单机多实例MYSQL主从复制
- weka简介和回归-----转自chinakdd
- [新闻] 微软主机安全检查服务(X-Ray)“体检”报告大揭秘!
- [ZOJ 1463] Brackets Sequence
- 一位反JavaScript主义者的觉醒
- Improved Alpha-Tested Magnification for Vector Textures and Special Effects
- MySQL单机多实例方案
- (谦虚的天下)Android学习系列--索引贴
- 【DVD Benchmark】Part 2 - Audio
- ASP.Net 调用输出参数的存储过程
- 我发明的类图表示方法
- DDR3和DDR2和DDR的工作原理及技术区别
- Bash shell中的位置参数$#,$*,$@,$0,$1,$2...及特殊参数$?,$-等的含义
- 新浪被黑,完全和技术无关,101%的安全意识问题。
- 为什么通过JSP得不到grid想要的数据