可以为每个实例使用一个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. [Java] The imoprt XXX cannot be resolved

    不知道为什么突然报错,但是可以成功编译. 通过import一个未使用的包来消除error,猜测是插件的问题,具体原因未知. import 未使用的包后,error消失.

  2. maven项目pom.xml加载本地jar,自定义jar

    将jar放到resource目录下面: pom添加配置 <!-- 加载IK自定义 依赖--> <dependency> <groupId>com.ik.up< ...

  3. Web 开发工具类(2): HttpClientUtils

    HttpClientUtils 整合了一些 web开发中常用的httpClient操作: package com.evan.common.utils; import java.io.IOExcepti ...

  4. XDOJ

    1000.a+b. #include<bits/stdc++.h> using namespace std; int a,b; int main() { ios::sync_with_st ...

  5. Go语言实现:【剑指offer】用两个栈实现队列

    该题目来源于牛客网<剑指offer>专题. 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. Go语言实现: var list1 = list.New( ...

  6. lua学习之复习汇总篇

    第六日笔记 1. 基础概念 程序块 定义 在 lua 中任何一个源代码文件或在交互模式中输入的一行代码 程序块可以是任意大小的 程序块可以是一连串语句或一条命令 也可由函数定义构成,一般将函数定义写在 ...

  7. java中深拷贝浅拷贝简析

    Java中对象的创建 clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象.所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象.那 ...

  8. 提升命令行效率的Bash快捷键

    转自:http://linuxtoy.org/archives/bash-shortcuts.html 生活在 Bash shell 中,熟记以下快捷键,将极大的提高你的命令行操作效率. 大部分对其他 ...

  9. c#设计模式读书博客

    第一次在博客园撸博客,也是为了鞭策自己去学习进步,过年之后买了一本<C#设计模式>这是我一直很想去学习的一本书.然后用博客记录我的学习历程,并且分享给需要的人.这本书记录的设计模式有23种 ...

  10. C#开源组件DocX处理Word文档基本操作(二)

    上一篇 C#开源组件DocX处理Word文档基本操作(一) 介绍了DocX的段落.表格及图片的处理,本篇介绍页眉页脚的处理. 示例代码所用DocX版本为:1.3.0.0.关于版本的区别,请参见上篇,而 ...