[+/-]
Em alguns casos você pode precisar de executar múltiplos
servidores mysqld
executando na mesma máquina.
Você pode desejar testar uma nova versão do MySQL enquanto a
deixa a sua instalação da versão de produção existente sem
perturbação. Ou você pode desejar dar acesso a diferentes
usuários em diferentes servidores mysqld
gerenciados por eles mesmos. (Por exemplo, você pode seu um
provedor de serviços de internet que quer fornecer instalações
independentes do MySQL para clientes diferentes).
Para executar múltiplos servidores em uma única máquina, cada
servidor deve ter valores únicos para diversos parâmetros
operacionais. Isto deve ser configurado na linha de comando ou em
arquivos de opções. Veja Secção 4.1.1, “Opções de Linha de Comando do mysqld
” e
Secção 4.1.2, “Arquivo de Opções my.cnf
”.
Pelo menos as seguintes opções devem ser diferente para cada servidor:
--port=port_num
--socket=path
--shared-memory-base-name
(apenas Windows;
novo no MySQL 4.1)
--pid-file=path
(apenas Unix)
--port
controla o número da porta para conexões
TCP/IP. --socket
controla o caminho do arquivo de
socket no Unix e o nome do named pipe no Windows. (É necessário
nomes de pipes distintos no Windows apenas para aqueles servidores
que suportam conexão named pipes.)
--shared-memory-base-name
designa o nome da
memória compartilhada por um servidor Windows para permitir que o
cliente se conecte via memória compartilhada.
--pid-file
indice o nome do arquivo no qual o
Unix gravar a ID do seu processo.
Se você usar as seguintes opções, elas deve ser diferentes para cada servidor:
--log=path
--log-bin=path
--log-update=path
--log-error=path
--log-isam=path
--bdb-logdir=path
Se você quiser mais desempenho, você também pode especificar as seguinte opções diferentemente para cada servidor para distribuir a carga entre vários discos físicos:
--tmpdir=path
--bdb-tmpdir=path
Normalmente, cada servidor também deve usar um diretório de
dados diferentes, que é especificado usando a opção
--datadir=path
.
AVISO: Normalmente você nunca deve ter dois servidores que atualizam dados no mesmo banco de dados! Isto pode levar a supresas inesperadas se seu o seu sistema operacionalnão suporta lock de sistema a prova de falhas, isto pode provocar surpresas indesejáveis! Se (apesar deste aviso) você executar diversos servidores usando o mesmo diretório de dados e eles tiverem com o log habilitado, você usar as opções apropriadas para especificar os nomes dos arquivos de log que são únicos em cada servidor. Senão, o servidores podem tentar gravar no mesmo arquivo de log.
Este aviso contra o compartilhamento de arquivos de dados entre servidores também se aplica em um ambeinte NFS. Permitir vários servidores MySQL acessarem um diretório de dados comum sobre NFS, é normalmente uma MÁ IDÉIA!
O primeiro problema é que o NFS
se
tornará um gargalo, tornando o sistema lento. Ele não se
destina para este tipo de uso.
Outro risco com NFS é que você terá que conseguir um modo
de se certificar que dois ou mais servidores não estão
interferindo uns com os outros. Normalmente o lock de arquivo
é tratado pelo daemon lockd
, mas no
momento não existe nenhuma plataforma que fara o locck 100%
de segurança, em todas as situações.
Facilite a sua vida: esqueça sobre compartilhar um diretório de dados entre servidores sobre NFS. A solução melhor é ter um computador com um sistema operacional que manipule threads de forma eficiente threads e tenha diversas CPUs nele.
Se você tiver múltiplas instalações do MySQL em diferentes
locais, normalemente você pode especificar o diretório de
instalação base de cada servidor com a opção
--basedir=caminho
para fazer que cada servidor
use diferentes diretórios de dados, arquivos de log e arquivos
PID. (O padrão para todos estes valores são determinados em
relação ao diretório base.) Neste caso, as únicas outras
opções que você precisa especificar são as opções
--socket
e --port
. Por exempo,
suponha que você instalou a versão binária do MySQL (arquivos
.tar
) em diferentes locais, assim você pode
iniciar o servidor usando o comando
./bin/mysqld_safe
sob o diretório base
correspondente de cada instalação.
mysqld_safe
determinará a opção
--basedir
apropriada para passar para
mysqld
, e você precisa especificar apenas as
opções --socket
e --port
para
o mysqld_safe
.
Como discutido nas seções a seguir, é possível iniciar
servidores adicionais configurando variáveis de ambiente ou
especificando as opções de linha de comando apropriada. No
entanto, se você precisa executar múltiplos servidores em uma
base mais permanente, será mais coonveniente usar os arquivos de
opções para especificar, para cada servidor, aquelas opções
que devem ser únicas para ele. See
Secção 4.1.2, “Arquivo de Opções my.cnf
”.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.