如何实现一台机器上运行多个MySQL实例?

在一台机器上一个MySQL服务器运行多个MySQL实例有什么好处?这里我先入为主给大家介绍这样做至少存在两个好处(看完这篇文章后理解会更透彻):

(1)减轻服务器链接负担

(2)为不同的用户提供不同的mysqld服务器的访问权限以方便这些用户进行自我管理。

 

下面我介绍具体的实现过程:

一、准备工作

    台式机一台、Windows系统、MySQL服务器(我安装的版本是MySQL 5.7.24)

二、MySQL安装

    MySQL的安装方法网上有很多,但个人建议查看MySQL官方手册关于安装的介绍,虽然这种方法很花时间,需要阅读英文,但是官方资料介绍的详细并且安装不容易出错,MySQL 5.7手册地址为https://dev.mysql.com/doc/refman/5.7/en/

三、MySQL安装测试(非重点)

    MySQL安装后需要进行测试以检查安装是否正确。一遍情况下在C:\ProgramData\MySQL\MySQL Server 5.7路径下有一个Data文件,如果没有该文件则在MySQL安装位置(一般在C:\Program Files\MySQL\MySQL Server 5.7)进入bin文件执行>bin>mysqld --initialize回车后就会在C:\ProgramData\MySQL\MySQL Server 5.7下生成一个Data文件。

  链接测试(本地链接),bin>mysql -u user -p

回车后,输入密码,若登录成功会显示welcome信息

四、MySQL实例搭建(重点)

MySQL实例1搭建:

    一个完整的MySQL安装其实就确定了一个MySQL实例,这个实例的具体信息:

(1)MySQL安装位置:C:\Program Files\MySQL\MySQL Server 5.7

  (2)Data路径及my.ini文件路径:C:\ProgramData\MySQL\MySQL Server 5.7

(3)默认端口3306:在my.ini文件中[mysqld]信息下有port=3306,这是默认的端口。

    启动该实例的方法是进入C:\Program Files\MySQL\MySQL Server 5.7下的bin文件,打开命名提示窗口,键入mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.7\my.ini",回车后如果出现光标闪烁说明服务器(实例)启动成功了,如下图所示,关于客户端链接实例文章后面介绍。

MySQL实例2搭建:

    创建另一个MySQL实例,一般涉及的配置有:新建Data路径、新建port端口号、socket命名、shared-memory-base-name命名、--pid-file命名。实际上创建一个新的MySQL实例只需要新建Data路径、新建port端口号就可以完成(具体信息见MySQL手册Running Multiple MySQL Instances on One Machine部分)。操作步骤如下:

第一步:在E盘下新建一个文件夹,我命名为MySQL Instances

第二步:将实例1中的Data文件夹和my.ini文件复制到MySQL Instances文件夹里

第三步:配置文件参数设置,打开MySQL Instances文件夹里的my.ini文件,对[mysqld]下的Data路径和端口号进行修改

datadir="E:\MySQLInstances\Data",port=3307(除了3306的其他端口都可以)

第四步:在命令行中使用--defaults-file选项来读取上面自定义的配置文件以启服务器,具体的操作是进入C:\Program Files\MySQL\MySQL Server 5.7下的bin文件(同实例1的启动方式一样,因为这里我只用了一个MySQL版本),重新打开一个命名提示窗口,

键入mysqld --defaults-file="E:\MySQL Instances\my.ini",回车后如果出现光标闪烁说明服务器(实例)启动成功了,如下图所示,如果出现Uploads文件找不到,则只需要在MySQL Instances文件夹里新建一个空的Uploads文件夹就好了。

五、MySQL实例链接

    如果一切进展顺利,上面的两个MySQL实例都已经成功启动了,接下来我们看看客户端是如何链接他们的。由于我身边另有一台也安装了MySQL的Linux系统 的电脑,这里我就用它来作为远程链接MySQL实例的客户端(当然,本地通过MySQL client或在bin目录下通过mysql链接也可以)。

远程链接MySQL实例1:

    打开命令窗口键入mysql --host=192.168.1.105 --port=3306 -uroot -p

输入密码(Linux系统下密码是看不见的)后回车就会弹出如下图所示的提示,说明一切顺利,远程用户可以操作位于C:\ProgramData\MySQL\MySQL Server 5.7\Data里的数据库了。这里host是服务器段的IP地址,port就是之前启动的实例的端口号,root是用户名 -p是该用户对应的密码,详细介绍见下文补充说明。

如何实现一台机器上运行多个MySQL实例?_第1张图片

远程链接MySQL实例2:

    打开一个新命令窗口键入mysql --host=192.168.1.105 --port=3307 -uroot -p

输入密码后回车就会弹出如下图所示的提示,说明一切顺利,远程用户可以操作位于E:\MySQL Instances\Data里的数据库了

如何实现一台机器上运行多个MySQL实例?_第2张图片

六、总结及补充说明

 总结

    通过上面的介绍可知,两个MySQL实例的核心是端口号和Data路径的设置,客户端访问实例时需要指定该实例对应的端口号,这样就可以减少因多个客户端链接同一个服务器(实例)可能带来的阻塞现象。

    此外,每一个实例都指定了对应的Data路径,我们知道存放数据的数据库database就是位于Data路径里,像我一样,把实例2的Data路径放在E盘里可以减轻C盘存储负担。

    每一个实例对应一个Data路径,显然服务器管理员可以给链接到这些实例的用户设置权限(位于Data下的mysql数据库进行设置)并针对不同的用户创建不同的数据库。其实MySQL多实例 的优点远不止这些。

补充说明

 (1)虽然本章只介绍了一台机器、一个MySQL版本下创建两个MySQL实例的过程,但如果您认真思考就会发现像一台机器下安装多个MySQL版本并创建多个MySQL服务器或实例的方法都是如出一辙的。

(2)在启动服务器(实例)时,很可能出现各种问题,希望你别紧张,也别随便就百度,依据我个人的经验,在这个环节出现error一般有两种原因:第一种情况是因为你输入的路径字符串格式不对,比如把“\"写成了"/";第二种情况是在配置my.ini文件时出现错误,比如Data路径没有设置正确等等。总之,请认真看看error提示。

(3)本人主要介绍创建多个实例的过程,所以远程链接MySQL实例的用户名都是默认的root且密码都一样,实际上,MySQL服务器管理员可以创建多个用户名并为其设置相应的密码,这样就可以方便用户链接。此外,两个实例中Data路径下的文件都是一样的(包括数据库和日志文件,实际上,为了充分利用多MySQL实例的优势,Data路径下的文件可以按照我们的需求进行任意修改,满足实际需求。Data路径下的文件及作用本人将陆续呈现,当然您也可以咨询我

          这篇文章是本人开通公众号发布的第一篇文章,不管是文字描述还是技术介绍都存在不足之处,希望大家批评指正!当然有问题的伙伴可以留言或通过微信公众号“Python生态智联”联系我

 

你可能感兴趣的:(MySQL)