`
wb284551926
  • 浏览: 551408 次
文章分类
社区版块
存档分类
最新评论

MySQL单机多实例方案(转载)

阅读更多

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响应时间,有助于提升用户的体验。

 

原文地址:http://www.hellodb.net/2011/06/mysql_multi_instance.html

分享到:
评论

相关推荐

    mysql单机多实例布署

    mysql单机多实例布署可分为两种情况:(1)多配置文件,分别控制;(2)单配置文件,集中控制或单实例控制,配置步骤详解。

    生产环境MySQL 5.5.x单机多实例配置实践

    ### 生产环境MySQL 5.5.x单机多实例配置实践 #### 背景需求 在企业级应用中,为了提高资源利用率和方便管理,经常会在同一台服务器上部署多个MySQL实例。本文档旨在详细介绍如何在一个全新的服务器上通过源码编译...

    mysql8.0.11多实例安装

    ### MySQL 8.0.11 多实例安装详解 ...当然,实际操作过程中可能会遇到各种各样的问题,希望本文提供的解决方案能帮助大家解决问题,顺利完成MySQL多实例的部署。如果还有其他疑问,请随时留言交流。

    MySQL实现多实例方式运行揭秘

    在讨论MySQL多实例运行技术之前,先明确一下什么是MySQL多实例。MySQL多实例指的是在一台物理服务器上,同时运行多个MySQL服务进程,每个进程负责不同的数据库实例,并且各实例使用不同的端口号、数据文件和配置文件...

    mysql多实例部署

    ### MySQL多实例部署详解 #### 一、背景与概述 在现代企业的生产环境中,为了提高数据库服务的可用性、灵活性及资源利用率,通常会采用MySQL多实例部署的方式。这种方式不仅能够满足不同业务线的需求隔离,还能...

    mysql多实例详细配置

    ### MySQL多实例配置详解 在IT领域,尤其是数据库管理中,**MySQL多实例配置**是一项高级而实用的技术,它允许在同一台服务器上运行多个独立的MySQL数据库实例,从而提高资源利用效率并满足不同的业务需求。以下是...

    mysql多实例.docx

    ### MySQL多实例部署详解 #### 一、MySQL多实例配置步骤 在一台服务器上部署多个MySQL实例能够提高资源利用率,并且方便进行隔离管理和维护。以下将详细介绍如何在同一台虚拟机上配置MySQL数据库多实例。 ##### 1...

    mysql多实例

    MySQL多实例是指在同一台服务器上运行多个独立的MySQL服务,每个服务都拥有自己的配置、数据文件和日志,可以独立管理。这样的设置在资源充足且需要隔离不同业务场景或者提高数据库服务可用性的环境中非常常见。以下...

    mysql多实例部署shell脚本

    mysql多实例部署shell脚本

    提高mysql多实例服务的软件包

    这个软件包用于提高mysql多实例服务,可在一台服务器上运行多个mysql服务

    安装mysql单机版

    在安装MySQL单机版的过程中,无论是Windows系统还是Linux系统,都需要遵循一定的步骤。以下是对在不同操作系统下安装MySQL单机版的详细步骤的解释和知识点汇总。 ### Windows系统下的MySQL安装 1. **下载安装包**...

    mysql使用实例book-MySQL

    《MySQL使用实例book》是一本全面讲解MySQL数据库应用与开发的书籍,旨在帮助读者逐步掌握MySQL的实际操作技巧。通过对本书的学习,你可以深入了解MySQL在实际工作中的应用,提升数据库管理、查询优化以及数据存储的...

    MySQL多实例配置方案

    在一台服务器上同时运行多个MySQL服务进程,它们各自监听不同的端口并提供独立的服务,这就是MySQL多实例部署。这种配置方式能够在同一物理机上为不同的应用或不同的服务需求提供独立的数据库实例,从而提高资源利用...

    mysql存储过程实例

    MySQL 存储过程实例 MySQL 存储过程实例详细介绍了 MySQL 存储过程的开发步骤,本节将通过具体的实例讲解 PHP 是如何操纵 MySQL 存储过程的。 创建存储过程 存储过程的创建是 MySQL 存储过程的基础,MySQL 5.0 ...

    库飞侠 MYSQL 多实例 多数据库 批量升级

    现状:管理着几十个实例的MYSQL数据库,新版本升级时需要执行相同的数据库脚本,一个一个去手动升级耗时耗力,而且都是重复的手动操作,急需一款可以对多个数据库同时执行相同脚本的工具,且自己信得过的工具。...

    MySQL数据库基础实例教程(第2版)教学大纲.pdf

    《MySQL数据库基础实例教程(第2版)》是一门针对软件技术、移动互联等相关专业设计的专业必修课程,旨在培养学生对数据库应用系统的开发、管理和维护能力。课程通过项目模拟和职业体验式学习,使学生在理论与实践中...

    mysql分布式数据库mycat方案

    在 MySQL 分布式数据库 MyCAT 方案中,整个数据库系统被拆分成多个独立的节点,每个节点可以是一个独立的 MySQL 实例。这些节点之间可以相互通信和协作,共同完成数据库的读写操作。这种架构可以提高数据库的可扩展...

Global site tag (gtag.js) - Google Analytics