可以为每个实例使用一个MySQL Server二进制程序,也可以为不同实例使用同一个MySQL Server二进制程序。

不管哪一种选择,部分参数可能需要不同配置,以避免多个实例之间的冲突。

可能需要为每个实例分别配置的参数包括:

--datadir=dir_name

--port=port_num

注:如果机器上有多个网络地址,可以通过bind_address系统变量使得每个Server监听不同的地址。

--socket=file_name

--pid-file=file_name

如果使用了下面的日志选项,这些参数也是需要配置:

--general_log_file=file_name

--log-bin[=file_name]
--slow_query_log_file=file_name
--log-error[=file_name]

为了更好的性能,分散物理磁盘的负载,可以为每个Server配置下面的参数:

--tmpdir=dir_name

注:在Slave Server中,slave_load_tmpdir 系统变量默认取值与tmpdir相同,由于slave_load_tmpdir指定的临时目录用于将复制的LOAD DATA语句存储在该临时目录下。所有如果tmpdir指定的临时目录如果是基于内存或者重启机器后自动删除的位置,可以将slave_load_tmpdir指定到一个永久性存储位置。

补充:

如果如果有多个MySQL Installations安装到不同的位置,可以指定basedir 系统变量。这样会使得每个Instance自动使用不同的数据目录、日志文件、PID文件,因为这些参数默认是与basedir关联的。在这种情况下,仅需要指定socket、port即可。

设置多个数据目录

通过 datadir 系统变量指定数据目录位置。

有两种方法为新的Instance设置数据目录:

生成新的数据目录

拷贝现有的数据目录

生成新的数据目录的方法:

操作同数据库安装中的数据目录初始化一样。

拷贝现有的数据目录的方法:

通过这样的方法,会将现有的用户账号以及用户数据拷贝到新的Instance中。

步骤1、停掉现有的MySQL Instance。必须使用clean shutdown,这样Instance会将pending changes刷新到磁盘上。比如:

mysql> set global innodb_fast_shutdown=0;

mysql> shutdown;

步骤2:拷贝现有的数据目录到新的位置。有时候,仅拷贝datadir目录下文件是不够的,因为有些文件可能被定义到非默认位置。

步骤3:拷贝my.cnf配置文件

步骤4:修改my.cnf配置文件

步骤5:启动新的数据库实例

通过如下脚本可以快速搭建一个测试实例:

shell> MYSQL_UNIX_PORT=/tmp/mysqld-new.sock

shell> MYSQL_TCP_PORT=3307

shell> export MYSQL_UNIX_PORT MYSQL_TCP_PORT

shell> bin/mysqld --initialize --user=mysql

shell> mysqld_safe --datadir=/path/to/datadir &

MySQL 8 在一台机器上运行多个MySQL实例的更多相关文章

  1. 如何在同一台机器上安装多个MySQL的实例

    转自:'http://www.cnblogs.com/shangzekai/p/4375271.html 最近由于工作的需要,需要在同一台机器上搭建两个MySQL的实例,(注:已经存在了一个3306的 ...

  2. 如何在同一台机器上安装多个MySQL的实例 转

    https://www.cnblogs.com/shangzekai/p/4375271.html 最近由于工作的需要,需要在同一台机器上搭建两个MySQL的实例,(注:已经存在了一个3306的MyS ...

  3. 如何在同一台机器上安装多个MySQL的实例(转)

    最近由于工作的需要,需要在同一台机器上搭建两个MySQL的实例,(注:已经存在了一个3306的MySQL的实例). 先说下,什么是mysql的多实例,简单的来说就是一台机器上安装了多个mysql的服务 ...

  4. 一台机器上运行多个ActiveMq

    由于业务需要一台机器上运行多个ActiveMq,这里主要说一下有什么地方不重复: 1.brokerName名称不能重复 2.端口号不能重复uri = tcp://localhost:50509 3.k ...

  5. 如何在一台机器上安装两个MYSQL数据库

    1.正常安装第一个mysql(安装步骤省略) 2.在控制面板里停止第一个mysql服务 3.将C:\Program Files\MySQL目录下的所有目录和文件copy到另外一个路径,我这里是copy ...

  6. 一台机器,运行两个mysql版本 实例

    一.问题 1.学习mysql时,我先安装了一个mysql5.5.27: 2.然而学习php时,当我安装wampserver2.2时,wampserver2.2又在电脑上安装了mysql5.5.20: ...

  7. 一台机器同时运行多个appium实例

    测试需要同时在多个android设备上运行,就需要启动多个appium 第一台是运行微信: DesiredCapabilities capabilities = new DesiredCapabili ...

  8. 关于同一台机器上安装多个sql实例的连接方法

    由于客户需要在一台服务器上安装了两个sql服务器(一个sql2000,一个是sql2005,其实例名不同),默认的端口1433被先安装的sql2000使用,后来安装的的随机启用了一个3045端口.其中 ...

  9. Erlang中如何在同一台机器上运行多个erlang节点?

    首先打开shell,然后在打开cmd输入:erl -sname bilbo  这样就启动了一个gandal的erlang节点. 如图:

随机推荐

  1. 学习记录(安装spark)

    根据林子雨老师提供的教程安装spark,用的是网盘里下载的课程软件 将文件通过ftp传到ubantu中 根据教程修改配置文件,并成功安装spark 在修改配置文件的时候出现了疏忽,导致找不到该文件,最 ...

  2. 【2020-02-11】1346. Check If N and Its Double Exist

    更多LeetCode解题详解 Easy Given an array arr of integers, check if there exists two integers N and M such ...

  3. Python 语言规范(Google)

    Python语言规范 Lint tip 对你的代码运行pylint 定义: pylint是一个在Python源代码中查找bug的工具. 对于C和C++这样的不那么动态的(译者注: 原文是less dy ...

  4. Codeforces_733_C

    http://codeforces.com/problemset/problem/733/C 从后往前一个个b对应一组组a. #include<iostream> #include< ...

  5. Shiro自动登录

    Shiro RememberMe spring.xml <bean class="org.apache.shiro.web.mgt.DefaultWebSecurityManager& ...

  6. Element ui select 同时获取value和label的值

    html <el-form-item label="单位名称" prop="checkInUnitName"> <el-select v-mo ...

  7. Trie(字典树)的侃侃

    Trie是什么 ? 字典树 : 见名知意(在树上进行查询). 跟字典相关的必定与查询有密切的关系, 查询就需要一定的媒介作为支撑,树就为这种查询提供支撑. Trie做什么 ? 实现字符串快速检索的多叉 ...

  8. Java程序员必备英文单词

    列表中共有769个单词,这些单词是从JDK.Spring.SpringBoot.Mybatis的源码中解析得到,按照在源码中出现的频次依次排列,页面中的单词是出现频次大于1000的.单词的音标.翻译结 ...

  9. C语言实现matlab的interp2()函数

    项目要用到matlab中的Vq = interp2(X,Y,V,Xq,Yq)函数,即把一个已知经纬度和对应值的矩阵,插值变换到一个给定经纬度网格中,也就是对给定网格填值,需要用到插值,这里使用双线性内 ...

  10. bin utilities related

    objdump -S,如果有源程序的话,将源程序与汇编代码混合在一起. 使用该选项时,输入的目标文件需要有调试信息,即用gcc -g生成的目标文件才可以,因为,调试信息中采用源程序信息. objcop ...