Como instalar e iniciar várias instâncias do MySQL no Windows 2012

12

Acabei de instalar o MySQL 5.7 na Windows 2012 VM. Estou tentando criar e executar várias instâncias, mas muito frustrado por uma coisa tão simples não estar funcionando.

Instalei o MySQL em C: \ Arquivos de Programas \ MySQL \ MySQL Server 5.7, que é o local padrão, copiei a pasta e fiz outra cópia para criar outra instância (suponho que seja assim que funciona?)

Ambas as instâncias do MySQL são mostradas na imagem abaixo.

Servidor1 Servidor1

Servidor2
Servidor2

As configurações de INI para os dois servidores são fornecidas abaixo:

Servidor1

server-id = 1
log-bin = "mysql-bin"
binlog-ignore-db = teste
binlog-ignore-db = information_schema
replicate-ignore-db = teste
replicate-ignore-db = information_schema
relay-log = "mysql-relay -log "
incremento automático de incremento = 2
deslocamento automático de incremento = 1

Server2
id do servidor = 2
log-bin = "mysql-bin"
binlog-ignore-db = teste
binlog-ignore-db = information_schema
replicate-ignore-db = teste
replicate-ignore-db = information_schema
relay-log = "mysql- relay-log "
incremento
automático de incremento = 2 deslocamento automático de incremento = 2

Estou executando os dois servidores, abrindo o prompt de comando e digitando o seguinte:
"C: \ Arquivos de programas \ MySQL \ MySQL Server 5.7 \ bin \ mysqld"
"C: \ Arquivos de programas \ 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á em execução, não vejo nenhum.

O que estou fazendo de errado?

Frank Martin
fonte
Edite sua pergunta para incluir logs de erro etc.
EEAA 31/12
Problema resolvido.
Frank Martin
Deseja que eu abra a pergunta para poder postar uma resposta?
EEAA
Sim, para que eu possa postar resposta.
Frank Martin

Respostas:

11

Eu acredito que você estava tentando executá-los na mesma porta.

Mudou o número de portas para ser diferente foi o que fez funcionar

Anthony Fornito
fonte
11

O erro que eu estava cometendo foi copiar toda a pasta de instalação do MySQL. Você não precisa copiar esta pasta.

  • Basta criar um novo arquivo ini para cada instância que você deseja executar (exemplos fornecidos acima) em qualquer local, por exemplo, C: \ MyInstances \ my1.ini.
  • Em seguida, crie uma nova pasta para, por exemplo, dados1 em C: \ MyInstances \ data1 e copie os bancos de dados mysql e information_schema nela. Você obterá esses bancos de dados da pasta de dados em que o MySQL está instalado. No Windows 2012 (e provavelmente em outro sistema operacional de servidor), normalmente é C: \ ProgramData \ MySQL
  • Em seguida, defina o seguinte no seu arquivo ini.

datadir = C: / MyInstances / data1

  1. Em seguida, execute o seguinte comando que instalará o MySQL como serviço. Após a criação dos serviços, basta executar o serviço.

MySqlpath \ bin \ mysqld - instala o mysqld1 --defaults-file = PATH_TO_YOUR_INI_FILE

Obviamente, em cada arquivo ini, é necessário definir um número de porta diferente, conforme mencionado por @Anthony Fornito.

Frank Martin
fonte
11
  1. Crie uma pasta de dados separada e dê CONTROLE COMPLETO ao SERVIÇO DE REDE.
  2. Copie o arquivo my.ini para a nova pasta de dados.
  3. 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]';
  4. 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.

my.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. 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
  2. Iniciar o serviço

    • NET START MySQL57-2
  3. Verifique se o serviço foi iniciado com sucesso. Caso contrário, você poderá encontrar um log de erros na pasta de dados. Caso contrário, você deve estar pronto.

MasterProgrammer200
fonte
seguiu, mas não conseguiu iniciar o novo serviço, obtendo, PS C: \ MySQLInstances \ data> net start mysqld O serviço mysqld está sendo iniciado. O serviço mysqld não pôde ser iniciado. O serviço não relatou um erro. Mais ajuda está disponível, digitando NET HELPMSG 3534.
Rajat