我刚刚在 Windows 2012 VM 上安装了 MySQL 5.7。我试图创建并运行多个实例,但令人沮丧的是,这么简单的事情却无法正常工作。
我在C:\Program Files\MySQL\MySQL 服务器 5.7这是默认位置,然后我复制了该文件夹并制作了另一份副本以创建另一个实例(我想这是它的工作原理?)
下图显示了两个 MySQL 实例。
两个服务器的 INI 设置如下:
服务器1
服务器 ID = 1
log-bin =“mysql-bin”
binlog-ignore-db = 测试
binlog-ignore-db = information_schema
复制忽略数据库 = 测试
复制忽略数据库 = information_schema 中继
日志 =“mysql-relay-log”
自动增量增量 = 2
自动增量偏移 = 1
服务器2
服务器 ID = 2
log-bin =“mysql-bin”
binlog-ignore-db = 测试
binlog-ignore-db = information_schema
复制忽略数据库 = 测试
复制忽略数据库 = information_schema 中继
日志 =“mysql-relay-log”
自动增量增量 = 2
自动增量偏移 = 2
我通过打开命令提示符并输入以下内容来运行两个服务器:
“C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld”
“C:\Program Files\MySQL\MySQL Server 5.7 - 2\bin\mysqld”
该命令似乎成功运行,因为没有显示错误,但是当我查看任务管理器以查看是否有任何 mysql 进程正在运行时,却没有看到任何错误。
我究竟做错了什么?
答案1
我犯的错误是复制了整个 MySQL 安装文件夹。您不需要复制此文件夹。
- 只需为您想要运行的每个实例(上面给出的示例)在任意位置创建一个新的 ini 文件,例如 C:\MyInstances\my1.ini。
- 然后在 C:\MyInstances\data1 中为 data1 创建一个新文件夹,并复制mysql和信息架构数据库。您将从安装 MySQL 的数据文件夹中获取这些数据库。在 Windows 2012(可能还有其他服务器操作系统)上,通常是目录:\ProgramData\MySQL
- 然后在您的 ini 文件中定义以下内容。
datadir=C:/MyInstances/data1
- 然后运行以下命令,将 MySQL 安装为服务。创建服务后,只需运行该服务即可。
MySqlpath\bin\mysqld --install mysqld1 --defaults-file=PATH_TO_YOUR_INI_FILE
当然,在每个 ini 文件中,您必须定义一个不同的端口号,正如@Anthony Fornito 所提到的。
答案2
我相信您正尝试在同一个端口上运行它们。
将端口号改为不同的才能使其工作
答案3
- 创建一个单独的数据文件夹并授予网络服务完全控制权。
- 将 my.ini 文件复制到新的数据文件夹。
在数据目录中创建一个名为 mysql-init.txt 的新文件,并添加一行以确保设置了 root 用户的密码。
ALTER USER 'root'@'localhost' IDENTIFIED BY '[Enter Password]';
编辑 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"
从命令行导航到 ~\MySQL Server XY\bin\ 并运行
mysqld --install MySQL57-2 --defaults-file=E:\mysql2\data\my.ini --init-file=E:\mysql2\data\mysql-init.txt
启动服务
NET START MySQL57-2
检查以确保服务已成功启动。如果没有,您可以在数据文件夹中找到错误日志,否则您应该可以继续。
答案4
我的步骤Windows 10
:
- 复制
C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
到C:\ProgramData\MySQL\MySQL Server 8.0\my1.ini
- 打开
my1.ini
并修改:- 端口=3307(在客户端和服务器部分下)
- datadir = C:/ ProgramData / MySQL / MySQL服务器8.0 / Data1
- 报告端口=3307
- 复制
C:\ProgramData\MySQL\MySQL Server 8.0\Data
到C:\ProgramData\MySQL\MySQL Server 8.0\Data1
- 按提示运行
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.
- Win+R
输入services.msc
,找到服务名称MySQL80-1
,右键单击,然后单击Start
。
如果一切顺利,您将看到Status
的变化Running
。
如果进展不顺利,请打开xxx.err
中的文件C:\ProgramData\MySQL\MySQL Server 8.0\Data1
检查原因。
如果你不想服务不再:
- 停下来
cmd
在提示符下使用您的服务名称在sc delete MySQL80-1
哪里将其删除。MySQL80-1