mysql单机多实例方案_MySQL单机多实例配置

测试环境:

操作系统 CentOS 6.4 x86

MySQL 5.5.38

1、什么是MySQL多实例?

MySQL多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307,3308),运行多个MySQL服务进程,通过不同的socket监听不同的服务端口来提供各自的、互不干涉的服务。各个实例之间是相互独立的,监听在不同的socket文件和端口上,每个实例的datadir, port, socket, pid都是不同的。

2、MySQL多实例的优缺点

优点:有效利用服务器资源,当单个服务器资源有剩余时,可以充分利用剩余的资源提供更多的服务。

节约服务器资金。当资金紧张,但是又需要提供多个数据库服务时,这时多实例就可以派上用场

方便后期架构扩展。当项目启动初期,服务器压力不是太大,可以在一个服务器上部署多个mysql实例,方便后续架构扩展。

缺点:资源互相抢占问题,当某个服务实例服务并发很高时或者开启慢查询时,会消耗更多的内存、CPU、磁盘IO资源,导致服务器上的其他实例提供服务的质量下降。

3、应用场景采用了数据伪分布式架构的原因,而项目启动初期又不一定有那多的用户量,为此先一组物理数据库服务器,但部署多个实例,方便后续迁移;

为规避mysql对SMP架构不支持的缺陷,使用多实例绑定处理器的办法,把不同的数据库分配到不同的实例上提供数据服务;

一台物理数据库服务器支撑多个数据库的数据服务,为提高mysql复制的从机的恢复效率,采用多实例部署;

已经为双主复制的mysql数据库服务器架构,想部分重要业务的数据多一份异地机房的热备份,而mysql复制暂不支持多主的复制模式,且不给用户提供服务,为有效控制成本,会考虑异地机房部署一台性能超好的物理服务器,甚至外加磁盘柜的方式,为此也会部署多实例;

传统游戏行业的MMO/MMORPG,以及Web Game,每一个服都对应一个数据库,而可能要做很多数据查询和数据订正的工作,为减少维护而出错的概率,也可能采用多实例部署的方式,按区的概念分配数据库;

4、测试环境约定

1、将所有的安装文件、配置文件、数据目录全部放存/mydata/data目录中,便于今后实现快速迁移、整体备份和快速复制;

2、在一台服务器上配置2个MySQL实例,分别绑定在3306、3307端口。

3、实例均采用my-medium.cnf 配置文件;我们可以根据实际需求定制各个实例的my.cnf配置。

多实例可以有两种方案:基于mysqld_multi: 多个实例共用同一个my.cnf配置文件中,利用[mysqld1]、[mysqld2]、[mysqld*]标签实现不同实例的差异化配置;

基于多配置文件:每一个实例单独一个my.cnf配置文件

第一种方案:每一个实例单独一个my.cnf配置文件

datadir:    /mydata/data/3306

/mydata/data/3307

my.cnf:     /mydata/data/3306/my.cnf

/mydata/data/3307/my.cnf

5、安装MySQL(通用二进制方式)

1、创建mysql用户和组[root@localhost ~]# groupadd -r mysql

[root@localhost ~]# useradd -r -g mysql -s /sbin/nologin mysql

2、目录规划

我们为每个实例单独创建一个目录:3306, 3307[root@localhost ~]# mkdir -pv /mydata/data/330{6,7}

mkdir: created directory `/mydata/data/3306'

mkdir: created directory `/mydata/data/3307'

[root@localhost ~]# tree /mydata/data/

/mydata/data/

|-- 3306

`-- 3307

3、解压[root@localhost ~]# tar xf mysql-5.5.38-linux2.6-i686.tar.gz -C /usr/local/src

[root@localhost ~]# cd /usr/local/

[root@localhost local]# ln -sv src/mysql-5.5.38-linux2.6-i686/ mysql

create symbolic link `mysql' to `src/mysql-5.5.38-linux2.6-i686/'

4、提供配置文件,并编辑[root@localhost local]# cd mysql

[root@localhost mysql]# cp support-files/my-medium.cnf /mydata/data/3306/my.cnf

[root@localhost mysql]# cp support-files/my-medium.cnf /mydata/data/3307/my.cnf

# 这里是实验环境,所以简单配置。请各位看官根据实际需求调整

###3306

# The following options will be passed to all MySQL clients

[client]

#password       = your_password

port            = 3306

socket          = /tmp/mysql_3306.sock

# Here follows entries for some specific programs

# The MySQL server

[mysqld]

port            = 3306

socket          = /tmp/mysql_3306.sock

pid-file        = /mydata/data/3306/mysql.pid

user            = mysql

basedir         = /usr/local/mysql

datadir         = /mydata/data/3306

###########################################################

###3307

# The following options will be passed to all MySQL clients

[client]

#password       = your_password

port            = 3307

socket          = /tmp/mysql_3307.sock

# Here follows entries for some specific programs

# The MySQL server

[mysqld]

port            = 3307

socket          = /tmp/mysql_3307.sock

pid-file        = /mydata/data/3307/mysql.pid

user            = mysql

basedir         = /usr/local/mysql

datadir         = /mydata/data/3307

5、修改数据目录的属主、属组[root@localhost mysql]# chown -R mysql:mysql /mydata/data/3306

[root@localhost mysql]# chown -R mysql:mysql /mydata/data/3307

6、把mysql/bin目录添加到PATH[root@localhost mysql]# vi /etc/profile.d/mysql.sh

# 添加

export PATH=$PATH:/usr/local/mysql/bin

[root@localhost mysql]# . /etc/profile.d/mysql.sh

7、初始化# 初始化 实例1

[root@localhost mysql]# scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/mydata/data/3306 --user=mysql

# 初始化 实例2

[root@localhost mysql]# scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/mydata/data/3307 --user=mysql

8、启动/关闭 实例

这里有一个问题,每个实例如何读取各自的my.cnf配置文件呢? 我们需要手动指定/usr/local/mysql/bin/mysqld_safe

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值