AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 823555
Accepted
Frank Martin
Frank Martin
Asked: 2017-01-01 12:34:00 +0800 CST2017-01-01 12:34:00 +0800 CST 2017-01-01 12:34:00 +0800 CST

如何在 Windows 2012 上安装和启动多个 MySQL 实例

  • 772

我刚刚在 Windows 2012 VM 上安装了 MySQL 5.7。我正在尝试创建和运行多个实例,但非常沮丧的是这样一个简单的事情不起作用。

我在默认位置C:\Program Files\MySQL\MySQL Server 5.7中安装了 MySQL,然后我复制了该文件夹并制作了另一个副本以创建另一个实例(我想这就是它的工作原理?)

两个 MySQL 实例如下图所示。

服务器1 服务器1

服务器2
服务器2

两台服务器的 INI 设置如下:

服务器1

server-id=1
log-bin="mysql-bin"
binlog-ignore-db=test
binlog-ignore-db=information_schema
replicate-ignore-db=test
replicate-ignore-db=information_schema
relay-log="mysql-relay -log"
自动增量增量 = 2
自动增量偏移量 = 1

server2
server-id=2
log-bin="mysql-bin"
binlog-ignore-db=test
binlog-ignore-db=information_schema
replicate-ignore-db=test
replicate-ignore-db=information_schema
relay-log="mysql-中继日志“
自动增量增量 = 2
自动增量偏移量 = 2

我通过打开命令提示符并键入以下内容来运行两台服务器:
“C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld”
“C:\Program Files\MySQL\MySQL Server 5.7 - 2\bin\mysqld”

该命令似乎成功运行,因为没有显示任何错误,但是当我查看任务管理器以查看是否有任何 mysql 进程正在运行时,我看不到任何错误。

我究竟做错了什么?

windows mysql multiple-instances
  • 4 4 个回答
  • 10157 Views

4 个回答

  • Voted
  1. Best Answer
    Frank Martin
    2017-01-06T07:22:02+08:002017-01-06T07:22:02+08:00

    我做的错误是复制整个 MySQL 安装文件夹。您不需要复制此文件夹。

    • 只需在任何位置为您要运行的每个实例(上面给出的示例)创建一个新的 ini 文件,例如 C:\MyInstances\my1.ini。
    • 然后在 C:\MyInstances\data1 中为例如 data1 创建一个新文件夹,并在其中复制mysql和information_schema数据库。您将从安装 MySQL 的数据文件夹中获取这些数据库。在 Windows 2012(可能还有其他服务器操作系统)上,它通常是C:\ProgramData\MySQL
    • 然后在您的 ini 文件中定义以下内容。

    datadir=C:/MyInstances/data1

    1. 然后运行以下命令,将 MySQL 作为服务安装。创建服务后,只需运行该服务。

    MySqlpath\bin\mysqld --install mysqld1 --defaults-file=PATH_TO_YOUR_INI_FILE

    当然,在每个 ini 文件中,您必须定义 @Anthony Fornito 提到的不同端口号。

    • 12
  2. Anthony Fornito
    2017-01-05T07:30:17+08:002017-01-05T07:30:17+08:00

    我相信你试图在同一个端口上运行它们。

    将端口号更改为不同是它起作用的原因

    • 11
  3. MasterProgrammer200
    2017-07-28T12:16:29+08:002017-07-28T12:16:29+08:00
    1. 创建一个单独的数据文件夹并将 FULL CONTROL 授予 NETWORK SERVICE。
    2. 将 my.ini 文件复制到新的数据文件夹。
    3. 在数据目录中创建一个名为 mysql-init.txt 的新文件,并添加一行以确保设置了 root 用户的密码。

      • ALTER USER 'root'@'localhost' IDENTIFIED BY '[Enter Password]';
    4. 通过更改端口、套接字、datadir 和共享内存基本名称来编辑 my.ini 文件。所有这些都需要与 MySQL 的其他实例不同。

    我的.ini:

    [client]
    port=3333
    socket=MYSQL2_INST.SOCK
    shared-memory-base-name=MYSQL2_INST
    
    [mysqld]
    shared-memory-base-name=MYSQL2_INST
    socket=MYSQL2_INST.SOCK
    port=3333
    basedir="C:/Program Files/MySQL/MySQL Server 5.7"
    datadir="E:/MySQL2/Data"
    
    1. 从命令行导航到 ~\MySQL Server XY\bin\ 并运行

      • mysqld --install MySQL57-2 --defaults-file=E:\mysql2\data\my.ini --init-file=E:\mysql2\data\mysql-init.txt
    2. 启动服务

      • NET START MySQL57-2
    3. 检查以确保服务已成功启动。如果没有,那么您可以在数据文件夹中找到错误日志,否则您应该很高兴。

    • 11
  4. jumping_monkey
    2020-07-19T01:11:10+08:002020-07-19T01:11:10+08:00

    我的步骤Windows 10:

    1. 复制C:\ProgramData\MySQL\MySQL Server 8.0\my.ini到C:\ProgramData\MySQL\MySQL Server 8.0\my1.ini
    2. 打开my1.ini并修改:
      • 端口=3307(在客户端和服务器部分)
      • datadir=C:/ProgramData/MySQL/MySQL 服务器 8.0/Data1
      • 报告端口=3307
    3. 复制C:\ProgramData\MySQL\MySQL Server 8.0\Data到C:\ProgramData\MySQL\MySQL Server 8.0\Data1
    4. 在cmd提示符下运行:(必要时使用管理员权限)
      C:\Program Files\MySQL\MySQL Server 8.0\bin>mysqld --install MySQL80-1 --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my1.ini"

    如果一切顺利,您将看到:
    Service successfully installed.

    1. Win+R
      键入services.msc,找到服务名称MySQL80-1,右键单击它并单击Start。

    如果一切顺利,您将看到Status更改为Running.
    如果不顺利,请打开xxx.err找到的文件C:\ProgramData\MySQL\MySQL Server 8.0\Data1以检查原因。


    如果您不再需要该服务:

    • 停下来
    • 使用where is your service name根据cmd提示删除它。sc delete MySQL80-1MySQL80-1
    • 1

相关问题

  • 知道任何适用于 Windows 的快速可编写脚本的 ftp 客户端吗?[关闭]

  • 如果 Windows 服务崩溃,如何自动重新启动它?

  • 无法安排任务(访问被拒绝)

  • 物理机重启时自动重启虚拟机(VMWare)

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve