mysqld_multi
gerencia vários processos
mysqld
executando em diferentes sockets UNIX
e portas TCP/IP.
O programa irá pesquisar pelos grupos chamados
[mysqld#]
no my.cnf
(ou
no arquivo fornecido no parâmetro
--config-file=...)
, onde #
pode ser qualquer número positivo a partir de 1. Este número
é referenciado a seguir como número do grupo de opções ou
GNR. Números de grupos distinguem grupos de opções para um
outro e são usados como argumentos para
mysqld_multi
para especificar quais
servidores você deseja iniciar, parar ou obter status. Opções
listadas nestes grupos devem ser a mesma que você usaria para
iniciar o mysqld
. (see
Secção 2.4.3, “Inicializando e parando o MySQL automaticamente.”). No entanto, para o
mysqld_multi
, esteja certo que cada grupo
inclui opções de valores tais como a porta, socket, etc., para
ser usado para cada processo mysqld
individual.
Uso: mysqld_multi [OPÇÕES] {start|stop|report} [GNR,GNR,GNR...] ou mysqld_multi [OPÇÕES] {start|stop|report} [GNR-GNR,GNR,GNR-GNR,...]
O GNR acima significa o número do grupo. Você pode iniciar, parar ou relacionar qualquer GNR ou vários deles ao mesmo tempo. (Veja --example). A lista dos GNR podem ser separadas por vírgulas, ou pelo sinal sinal de menos (-), sendo que o ultimo significa que todos os GNRS entre GNR1-GNR2 serão afetados. Sem o argumento GNR todos os grupos encontrados serão iniciados, parados ou listados. Perceba que você não deve ter nenhum espaço em branco na lista GNR. Qualquer coisa depois de um espaço em branco é ignorado.
mysqld_multi
suporta as seguintes opções:
--config-file=...
Arquivo de configuração alternativo. NOTA: Isto não irá
afetar as próprias opções do programa (grupo
[mysqld_multi]
), mas somente grupos
[mysqld#]. Sem esta opção tudo será procurado a partir do
arquivo my.cnf.
--example
--help
--log=...
Arquivo Log. Deve ser informado o caminho completo e o nome do arquivo log. NOTA: se o arquivo existir, tudo será anexado.
--mysqladmin=...
Binário mysqladmin
a ser usado para o
desligamento do servidor.
--mysqld=...
Binário mysqld
a ser usado. Lembre-se
que você também pode fornecer
mysqld_safe
a esta opção. As opções
são passadas ao mysqld
. Apenas tenha
certeza que o mysqld
está localizado na
sua variável de ambiente PATH
ou corrija
o mysqld_safe
.
--no-log
Imprime na saída padrão em vez do arquivo log. Por padrão o arquivo log sempre fica ligado.
--password=...
--tcp-ip
Conecta ao(s) servidor(es) MySQL através de porta TCP/IP no lugar de socket UNIX. Isto afeta a ação de desligar e relatar. Se um arquivo socket estiver faltando, o servidor pode ainda estar executando, mas só pode ser acessado através da porta TCP/IP. Por padrão a conexão é feita através de socket UNIX.
--user=...
--version
Exibe o número da versão e sai.
Algumas notas sobre mysqld_multi
:
Tenha certeza que o usuário MySQL, que finalizar os
serviços mysqld
(e.g. utilizando o
mysqladmin
) tem a mesma senha e usuário
para todos os diretórios de dados acessados (para o banco
de dados 'mysql'). E tenha certeza que o usuário tem o
privilégio 'Shutdown_priv'! Se você possui diversos
diretórios de dados e vários bancos de dados 'mysql' com
diferentes senhas para o usuário 'root' do MySQL, você
pode desejar criar um usuário comum 'multi-admin' para cada
um que utilize a mesma senha (veja abaixo). Exemplo de como
fazer isto:
shell> mysql -u root -S /tmp/mysql.sock -psenha_root -e
"GRANT SHUTDOWN ON *.* TO multi_admin@localhost IDENTIFIED BY 'multipass'"
See Secção 4.3.6, “Como o Sistema de Privilégios Funciona”.
Você deve fazer isto para cada servidor
mysqld
executando em cada diretório de
dados, que você tem (Apenas altere o socket, -S=...)
pid-file
é muito importante, se você
estiver utilizando mysqld_safe
para
iniciar o mysqld
(ex.
--mysqld=mysqld_safe) Todos os mysqld
devem ter seus próprios pid-file
. A
vantagem de utilizar o mysqld_safe
no
lugar de executar diretamente o mysqld
é
que mysqld_safe
guarda todos os processos
e irá reiniciá-los, se um processo do
mysqld
falhar devido a um sinal kill -9,
ou similar. (Como um falha de segmentação, que nunca pode
acontecer com o MySQL.) Por favor note que pode ser
necessário executar o script mysqld_safe
de um lugar específico. Isto significa que você pode ter
que alterar o diretório atual para um diretório
específico antes de iniciar o
mysqld_multi
. Se você tiver problemas ao
iniciar, por favor veja o script
mysqld_safe
. Verifique especialmente as
linhas:
-------------------------------------------------------------------------- MY_PWD=`pwd` Check if we are starting this relative (for the binary release) if test -d /data/mysql -a -f ./share/mysql/english/errmsg.sys -a -x ./bin/mysqld --------------------------------------------------------------------------
See Secção 4.8.2, “mysqld-safe
, o wrapper do mysqld
”. O teste acima deve ser
bem sucedido, ou você pode encontrar problemas.
Esteja certo do perigoso de iniciar múltiplos
mysqlds
no mesmo diretório de dados.
Utilize diretórios de dados diferentes, a menos que você
realmente SAIBA o que está
fazendo!
O arquivo de socket e a porta TCP/IP devem ser diferentes
para cada mysqld
.
O primeiro e quinto grupo mysqld
foram
intencionalmente deixados de lado no exemplo. Você pode ter
lacunas no arquivo de configuração. Isto lhe permite mais
flexibilidade. A ordem na qual os mysqlds
são iniciados ou desligados depende da ordem em que eles
aparecem no arquivo de configuração.
Quando você desejar referenciar a um grupo específico utilizando GNR com este programa, basta utilizar o número no fim do nome do grupo ([mysqld# <==).
Você pode desejar utilizar a opção '--user' para o
mysqld
, mas para isto você precisa ser o
usuário root quando iniciar o script
mysqld_multi
. Não importa se a opção
existe no arquivo de configuração; você receberá apenas
um alerta se você não for o superusuário e o
mysqlds
for iniciado com a
SUA conta no Unix.
IMPORTANTE: Tenha certeza
que o pid-file
e o diretório de dados é
acessível para leitura e escrita (+execução para o
diretório) para ESTE
usuário UNIX que iniciará o processo
mysqld
.
NÃO utilize a conta de
root para isto, a menos que você
SAIBA o que está fazendo!
MAIS IMPORTANTE: Tenha
certeza que você entendeu os significados das opções que
são passadas para os mysqlds
e porque
VOCÊ PRECISARIA ter
processos mysqld
separados. Iniciando
múltiplos mysqlds
em um diretório de
dados NÃO IRÁ melhorar a
performance em um sistema baseado em threads.
See Secção 4.2, “Executando Múltiplos MySQL Servers na Mesma Máquina”.
Este é um exemplo do arquivo de configuração para o
funcionamento do mysqld_multi
.
# Este arquivo provavelmente deve estar em seu diretório home (~/.my.cnf) ou /etc/my.cnf # Version 2.1 by Jani Tolonen [mysqld_multi] mysqld = /usr/local/bin/mysqld_safe mysqladmin = /usr/local/bin/mysqladmin user = multi_admin password = multipass [mysqld2] socket = /tmp/mysql.sock2 port = 3307 pid-file = /usr/local/mysql/var2/hostname.pid2 datadir = /usr/local/mysql/var2 language = /usr/local/share/mysql/english user = john [mysqld3] socket = /tmp/mysql.sock3 port = 3308 pid-file = /usr/local/mysql/var3/hostname.pid3 datadir = /usr/local/mysql/var3 language = /usr/local/share/mysql/swedish user = monty [mysqld4] socket = /tmp/mysql.sock4 port = 3309 pid-file = /usr/local/mysql/var4/hostname.pid4 datadir = /usr/local/mysql/var4 language = /usr/local/share/mysql/estonia user = tonu [mysqld6] socket = /tmp/mysql.sock6 port = 3311 pid-file = /usr/local/mysql/var6/hostname.pid6 datadir = /usr/local/mysql/var6 language = /usr/local/share/mysql/japanese user = jani
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.