Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como executar várias instâncias do MySQL na mesma máquina


Às vezes, você pode precisar executar várias instâncias do MySQL em um único servidor. Por exemplo, você pode precisar testar diferentes instâncias do MySQL para preparação, teste e produção. Neste artigo, veremos como executar várias instâncias do MySQL na mesma máquina, mas em portas diferentes, com arquivos de log e parâmetros de configuração diferentes.



Como executar várias instâncias do MySQL na mesma máquina


Aqui estão as etapas para executar várias instâncias do MySQL na mesma máquina.



1. Abra o arquivo de configuração do MySQL


Normalmente, você encontrará o arquivo de configuração do MySQL em /etc/mysql/my.cnf . Abra o terminal e execute o seguinte comando para abrir o arquivo de configuração do MySQL.
$ sudo vi /etc/mysql/my.cnf



2. Configurar várias instâncias do MySQL


Você encontrará a configuração padrão do MySQL algo semelhante ao que é mostrado abaixo.
[mysqld] 
user = mysql 
pid-file = /var/run/mysqld/mysqld.pid 
socket = /var/run/mysqld/mysqld.sock 
port = 3306 
datadir = /data/mysql/mysql

Copie e cole o bloco de código acima abaixo dele no mesmo arquivo. Substituir [mysqld] com [mysqld1] e altere o valor da porta para 3307. Isso tornará a nova instância mysqld1 executado em uma porta diferente 3307 com um nome de processo diferente mysqld1. Da mesma forma, altere os nomes dos arquivos das variáveis ​​pid-file, socket e datadir conforme mostrado abaixo.

Certifique-se de copiar a pasta datadir para cada instância abaixo. Certifique-se também de que o usuário mysql usuário tem permissões de acesso a ele. Cada instância precisa de seu próprio diretório de dados.
[mysqld1] 
user = mysql 
pid-file = /var/run/mysqld/mysqld1.pid 
socket = /var/run/mysqld/mysqld1.sock 
port = 3307 
datadir = /data/mysql/mysql1

Agora mysqld1 será executado como uma instância separada do mysqld

Da mesma forma, você pode criar mais instâncias conforme mostrado abaixo
[mysqld2] 
user = mysql 
pid-file = /var/run/mysqld/mysqld2.pid 
socket = /var/run/mysqld/mysqld2.sock 
port = 3308 
datadir = /data/mysql/mysql2 
.... 
[mysqldN] 
user = mysql 
pid-file = /var/run/mysqld/mysqldN.pid 
socket = /var/run/mysqld/mysqldN.sock 
port = N 
datadir = /data/mysql/mysqlN

Certifique-se de fornecer um arquivo pid , arquivo de soquete e diretório de dados diferentes para cada instância e certifique-se de que o usuário mysql tem permissões de diretório necessárias porque o mysql o usuário deve ser capaz de criar os arquivos e diretórios necessários.



3. Gerencie várias instâncias


Você pode iniciar cada instância separadamente usando mysqld comando abaixo. Substitua mysqlN com sua escolha de instância (por exemplo, mysql1, mysql2, etc)
mysqld --initialize --user=mysql --datadir=/home/mysql/mysqlN

Se, por algum motivo, a configuração acima não funcionar para você, copie o arquivo my.cnf para /etc/my.cnf local e tente novamente. Às vezes, o mysql não registra várias instâncias configuradas em /etc/mysql/my.cnf
$ sudo cp /etc/mysql/my.cnf /etc/my.cnf

Se você deseja fazer login em qualquer instância específica (por exemplo, mysqld1) a partir da linha de comando, você precisa especificar o local do arquivo de soquete com a opção -S. Caso contrário, você será conectado à instância padrão do MySQL.
mysql -u root -p -S /var/run/mysqld/mysqld1.sock

Espero que este artigo o ajude a configurar e gerenciar várias instâncias do MySQL no mesmo servidor.

Precisa de uma ferramenta de relatório para MySQL? O Ubiq facilita a visualização de dados em minutos e o monitoramento em painéis em tempo real. Experimente hoje!