linux一台服务器多个mysql_在一台Linux服务器上安装多个MySQL实例(一)--使用mysqld_multi方式-搜云库...

40ae247fdaa478366c8114b6eea1435c.png

(一)MySQL多实例概述

实例是进程与内存的一个概述,所谓MySQL多实例,就是在服务器上启动多个相同的MySQL进程,运行在不同的端口(如3306,3307,3308),通过不同的端口对外提供服务。

由于MySQL在一个实例下面可以创建多个数据库,所以通常在一台服务器上只要安装一个MySQL实例即可满足使用。但在实际使用中,因为服务器硬件资源充足,或者业务需要(比如在一台服务器上创建开发数据库和测试数据库),往往会在一台服务器上创建多个实例。

(二)MySQL部署多实例的方法

MySQL多实例部署主要有以下两种方式:

使用官方自带的mysqld_multi来配置管理,特点是使用同一份MySQL配置文件,这种方式属于集中式管理,管理起来较为方便;

使用单独的MySQL配置文件来单独配置实例,这种方式逻辑简单,数据库之间没有关联。

本文将对第一种方式进行环境搭建学习。

(三)实验环境

操作系统 :CentOS Linux release 7.4.1708 (Core)

数据库版本:5.7.24-log

预计划安装4个MySQL实例,规划信息为:

实例1

实例2

实例3

实例4

basedir=/usr/local/mysql

datadir=/mysql/3306/data

port=3306

socket=/tmp/mysql_3306.sock

basedir=/usr/local/mysql

datadir=/mysql/3307/data

port=3307

socket=/tmp/mysql_3307.sock

basedir=/usr/local/mysql

datadir=/mysql/3308/data

port=3308

socket=/tmp/mysql_3308.sock

basedir=/usr/local/mysql

datadir=/mysql/3309/data

port=3309

socket=/tmp/mysql_3309.sock

(四)实验过程

(4、1)在安装MySQL之前,需要卸载服务器自带的MySQL包和MySQL数据库分支mariadb的包

(4、2)依赖包安装

MySQL对libaio 库有依赖性。如果未在本地安装该库,则数据目录初始化和随后的服务器启动步骤将失败 、

# install library

对于MySQL 5.7.19和更高版本:通用Linux版本中增加了对非统一内存访问(NUMA)的支持,该版本现在对libnuma库具有依赖性 。

# install library

(4、3)创建用户和用户组

(4、4)解压安装包

最终解压结果如下:

(4、5)创建数据文件存放路径

(4、6)创建MySQL参数配置文件

(4、7)初始化数据库

注意,初始化实例的最后一行记录了root的初始密码

(4、8)设置环境变量

添加了环境变量,操作系统才能够自己找到mysql、mysqld_multi等命令的位置

(4、9)使用mysqld_multi管理多实例

使用mysqld_multi关闭实例较为麻烦,需要配置密码,因此如何关闭各个实例,见后面章节:(六)关闭多实例数据库 。

(五)访问多实例数据库

(5、1)登录MySQL数据库

在安装完成并启动数据库后,需要去访问各个MySQL实例,这里非常有意思,经常会发现无法连接到数据库上,我们不妨看一下几种连接方式:

连接方式一:使用服务器IP地址,无法连接。这里还是比较好理解的,MySQL创建完成后,数据库账号root@localhost只允许本地连接,参数“-h”后面用服务器IP被认为了远程连接,因此无法登陆

连接方式二:使用localhost访问数据库,无法连接。我觉得有些匪夷所思,可以看到,MySQL实例使用的socket文件不对

连接方式三:使用127.0.0.1访问数据库,可以连接。有些难以理解,理论上127.0.0.1和localhost是对应的,127.0.0.1可以访问数据库,但是localhost却无法访问

连接方式四:使用socket文件连接,可以正常访问

初次登陆MySQL数据库,需要修改root密码,否则无法正常使用

(六)关闭多实例数据库

(6、1)直接使用mysqld_multi来关闭实例

使用mysqld_multi关闭多实例数据库目前来看比较麻烦,需要在my.cnf文件的[mysqld_multi]模块里面配置用户密码,并且各个数据库的用户密码都需要相同,否则无法关闭。

f7d4d824f4ae226beef3f3583ccac362.png

我们可以看一下使用mysqld_multi来关闭数据库实例的日志:

# 当执行:mysqld_multi stopt时,mysqld_multi会调用mysqladmin去关闭数据库,使用的是[mysqld_multi]里面配置的账号密码,此时3306的密码是正确的,

既然知道了mysqld_multi是调用mysqladmin来关闭数据库的,那最好的办法还是直接使用mysqladmin来关闭各个数据库了,下面演示使用mysqladmin来关闭数据库实例。

(6、2)使用mysqladmin来关闭实例

最终关闭了3306和3307数据库。

【结束】

相关文档集合:

1.在一台Linux服务器上安装多个MySQL实例(一)–使用mysqld_multi方式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值