Acabei de instalar o MySQL 5.7 na VM do Windows 2012. Estou tentando criar e executar várias instâncias, mas estou muito frustrado porque uma coisa tão simples não está funcionando.
Eu instalei o MySQL em C:\Arquivos de Programas\MySQL\MySQL Server 5.7 que é o local padrão e depois copiei a pasta e fiz outra cópia dela para criar outra instância (acho que é assim que funciona?)
Ambas as instâncias do MySQL são mostradas na imagem abaixo.
As configurações INI para ambos os servidores são fornecidas abaixo:
Servidor1
server-id=1
log-bin="mysql-bin"
binlog-ignore-db=teste
binlog-ignore-db=information_schema
repeat-ignore-db=teste
repeat-ignore-db=information_schema
relay-log="mysql-relay -log"
auto-increment-increment = 2
auto-increment-offset = 1
Server2
server-id=2
log-bin="mysql-bin"
binlog-ignore-db=teste
binlog-ignore-db=information_schema
repeat-ignore-db=teste repeat
-ignore-db=information_schema
relay-log="mysql- relay-log"
auto-increment-increment = 2
auto-increment-offset = 2
Estou executando os dois servidores abrindo o prompt de comando e digitando o seguinte:
"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld"
"C:\Program Files\MySQL\MySQL Server 5.7 - 2\bin\mysqld"
O comando parece ser executado com sucesso, pois nenhum erro é mostrado, mas quando olho para o gerenciador de tarefas para ver se algum processo mysql está sendo executado, não vejo nenhum.
O que estou fazendo errado?
O erro que eu estava cometendo era copiar toda a pasta de instalação do MySQL. Você não precisa copiar esta pasta.
Obviamente, em cada arquivo ini, você deve definir um número de porta diferente, conforme mencionado por @Anthony Fornito.
Acredito que você estava tentando executá-los na mesma porta.
Mudou os números das portas para serem diferentes foi o que fez funcionar
Crie um novo arquivo no diretório de dados chamado mysql-init.txt e adicione uma única linha para garantir que a senha do usuário root esteja definida.
ALTER USER 'root'@'localhost' IDENTIFIED BY '[Enter Password]';
Edite o arquivo my.ini alterando a porta, o soquete, o datadir e o nome da base da memória compartilhada. Todos os quais precisam ser diferentes de outras instâncias do MySQL.
meu.ini:
Na linha de comando, navegue até ~\MySQL Server XY\bin\ e execute
mysqld --install MySQL57-2 --defaults-file=E:\mysql2\data\my.ini --init-file=E:\mysql2\data\mysql-init.txt
Iniciar o serviço
NET START MySQL57-2
Verifique se o serviço foi iniciado com sucesso. Caso contrário, você pode encontrar um log de erros na pasta de dados, caso contrário, você deve estar pronto.
Meus passos em
Windows 10
:C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
paraC:\ProgramData\MySQL\MySQL Server 8.0\my1.ini
my1.ini
e modifique:C:\ProgramData\MySQL\MySQL Server 8.0\Data
paraC:\ProgramData\MySQL\MySQL Server 8.0\Data1
cmd
prompt: (com privilégios de administrador, se necessário)C:\Program Files\MySQL\MySQL Server 8.0\bin>mysqld --install MySQL80-1 --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my1.ini"
Se tudo correu bem, você verá:
Service successfully installed.
Digite
services.msc
, encontre o nome do serviçoMySQL80-1
, clique com o botão direito nele e clique emStart
.Se tudo correu bem, você verá a
Status
mudança paraRunning
.Se não deu certo, abra
xxx.err
o arquivo encontrado emC:\ProgramData\MySQL\MySQL Server 8.0\Data1
para verificar o motivo.Caso não queira mais o serviço :
cmd
prompt usandosc delete MySQL80-1
whereMySQL80-1
is your service name.