【MySQL高阶】9.在一台机器上运行多个MySQL实例
文章目录
- 5.在一台机器上运行多个MySQL实例
- 5.1 使用MySQL Installer安装MySQL实例
- 5.2 配置不同的版本选项文件
- 5.2.1 指定基本目录
- 5.2.2 设置数据目录
- 5.2.3 设置端口号
- 5.2.4 设置日志目录
- 5.2.5 其他设置
- 5.3 在多服务器环境中使用客户端程序
- 5.4 介绍一下你知道的MySQL服务器配置文件的选项
5.在一台机器上运行多个MySQL实例
- 有时候我们希望在一台机器上运行多个
MySQL实例,比如在开发环境测试新的MySQL版本,同时又要保证原有的版本不受影响;MySQL允许在一台机器上安装不同版本的发行版,比如同时运行5.7和8.0版本,只是要做一些相应的配置。- 为了降低配置难度,本节将在
Windows系统中使用安装器演示配置多个MySQL实例的方法。
5.1 使用MySQL Installer安装MySQL实例
我这里演示,随便下一个了:
mysql-9.7.0-winx64.msi
先看一下没安装新版本前:
下载后先关闭本机的MySQL服务:
- 右键我的电脑,选择管理
- 停止该服务
- 双击安装包,点击安装:
一路next,到这里选择自定义
然后光标放到MySQL Server上,点击下面的Browse,注意路径不要放到原来的MySQL其他版本文件夹里面。
一路next,然后install,然后finish。
接着点击next,直到出现这个页面:
继续next,注意下面的端口号和后面那个不能使用默认的,要换一下,不然以后会冲突:
继续next,输入密码后next,
继续next,这个页面的两个可以勾选可以不勾选
继续next,选择Execute,进入安装,然后next,点击finish。
进入计算机管理,刷新一下,可以看到新出现了MySQL97,一定要保证是手动的。
再次启动MySQL80,可以看到两个MySQL服务同时开启。
注意:
- 日志等其他自定义的路径按版本号区分
- 千万不要让两个不同的服务同时修改同一个目录下的同一个文件
下载不同版本的
MySQL Installer,并完成安装,按照安装器的提示完成安装即可,安装过程中需要注意以下几点:
- 为不同的版本指定不同的安装目录,安装完成后如下所示:
5.2 配置不同的版本选项文件
不同的
MySQL版本启动时,会在默认的数据目录下读取相应版本的my.ini文件,比如9.7版本启动时会读取C:\ProgramData\MySQL\MySQL Server 9.7\my.ini文件,8.0版本启动时会读取C:\ProgramData\MySQL\MySQL Server 8.0\my.ini文件,为了让不同版本的实例在启动时避免冲突,比如端口冲突,需要对不同版本的实例进行一些差异配置。
查看端口:
可以看到3306和3308都启动了。
C:\Users\YuDukai>netstat -an 活动连接 协议 本地地址 外部地址 状态 ...... TCP [::]:445 [::]:0 LISTENING TCP [::]:1030 [::]:0 LISTENING TCP [::]:3306 [::]:0 LISTENING TCP [::]:3308 [::]:0 LISTENING TCP [::]:7680 [::]:0 LISTENING ......5.2.1 指定基本目录
- 使用选项
--basedir=dir_name为每个实例指定基本目录,通常指定为安装目录,不同的实例会自动使用不同的数据目录、日志文件和PID文件,这些文件的默认值都是相对于基本目录的,当然也可以自定义这些文件:
# C:\ProgramData\MySQL\MySQL Server 9.7\my.ini # 路径中的空格要用双引号引起来 [mysqld] # mysqld节点 basedir="C:/Program Files/MySQL/MySQL Server 9.7" #5.7版本的自定义的基本目录 # C:\ProgramData\MySQL\MySQL Server 8.0\my.ini [mysqld] # mysqld节点 basedir="C:/Program Files/MySQL/MySQL Server 8.0" #8.0版本的自定义的基本目录5.2.2 设置数据目录
- 使用安装器安装成功后不同的版本的数据目录已经自动生成,如果要自定义数据目录,那么也需要按不同的版本分别设置别其他不同的目录
- 在
MySQL服务正常停止的状态下,复制C:\ProgramData\MySQL\MySQL Server x.x\Data目录到目标位置即可
- 在对应版本的
my.ini文件中指定自定义数据目录,通过指定--datadir=dir_name实现
# C:\ProgramData\MySQL\MySQL Server 9.7\my.ini [mysqld] # mysqld节点 datadir=D:/database/MySQL/data9.7 #9.7版本的自定义的数据目录 # C:\ProgramData\MySQL\MySQL Server 8.0\my.ini [mysqld] # mysqld节点 datadir=D:/database/MySQL/data8.0 #8.0版本的自定义的数据目录注意:
永远不要让两台服务器对同一个数据库执行数据更新
5.2.3 设置端口号
通过选项
--port设置TCP/IP连接的端口号。如果主机有多个网络地址,通过设置bind_address系统变量指定不同侦听地址
# C:\ProgramData\MySQL\MySQL Server 9.7\my.ini [mysqld] # mysqld节点 port=3308 # 监听的端口 # C:\ProgramData\MySQL\MySQL Server 8.0\my.ini [mysqld] # mysqld节点 port=3306 # 监听的端口5.2.4 设置日志目录
默认情况下如果开启一般查询日志,慢查询日志,错误日志,二进制日志,会在默认的数据目录下生成日志文件,也可以自定义目录:
Windows下要么用\\,要么用/。
# C:\ProgramData\MySQL\MySQL Server 9.7\my.ini [mysqld] # mysqld节点 # 日志输入目标 log-output=FILE # 一般查询日志 general-log=1 general_log_file=D:/log/MySQL/9.7/general.log # 慢查询日志 slow-query-log=1 slow_query_log_file=D:/log/MySQL/9.7/slow_query.log long_query_time=10 # 错误日志 log-error=D:/log/MySQL/9.7/error_log.err #二进制日志基本名 log-bin=D:/log/MySQL/9.7/bin_log ################################################################### # C:\ProgramData\MySQL\MySQL Server 8.0\my.ini [mysqld] # mysqld节点 # 日志输入目标 log-output=FILE # 一般查询日志 general-log=1 general_log_file=D:/log/MySQL/8.0/general.log # 慢查询日志 slow-query-log=1 slow_query_log_file=D:/log/MySQL/8.0/slow_query.log long_query_time=10 # 错误日志 log-error=D:/log/MySQL/8.0/error_log.err #二进制日志基本名 log-bin=D:/log/MySQL/8.0/bin_log5.2.5 其他设置
还有一些其他设置可以通过选项文件指定,比如服务器Id,临时文件目录等等:
# C:\ProgramData\MySQL\MySQL Server 5.7\my.ini [mysqld] # mysqld节点 server-id=57 # 服务器Id,随意指定一个值,不重复即可 tmpdir=D:/temp/mysql5.7 #临时文件目录 # C:\ProgramData\MySQL\MySQL Server 8.0\my.ini [mysqld] # mysqld节点 server-id=1 # 服务器Id,随意指定一个值,不重复即可 tmpdir=D:/temp/mysql8.0 # 临时文件目录5.3 在多服务器环境中使用客户端程序
使用
mysql客户端程序,根据不同版本的MySQL实例配置的IP和端口号,指定相应的选项,连接不同的MySQL服务器。指定端口通过
--port=port_number选项实现。如果绑定了不同的网卡通过
--host=host_name选项实现,如果不指定--host选项,则使用默认值loclhost。
最后,玩完之后,记得把多的
MySQL关掉。
5.4 介绍一下你知道的MySQL服务器配置文件的选项
这个问题主要考察选项的使用,回答这个问题可以先总体描述选项文件的使用场景,再介绍几个常见的选项即可
- 选项文件主要作用是设置
MySQL服务常用的系统变量初始值,以便服务器启动时自动读取;- 选项文件中可以用 [程序名] 的形式分别为不同的程序指定具体选项的值,也可以用
[client]、[server]的形式分别指定客户端程序和服务器程序公共配置。- 常见的选项有,客户端和服务器使用的字符集,客户端默认的用户名和密码,服务器的排序规则,服务器的端口号,自定义数据目录的路径,日志文件的路径,服务器允许的最大连接数,还有一些关于存储引擎的选项也可以用于性能调优,比如关于
INNODB的选项,等等。
