:: DEVELOPER ZONE
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
© 1995-2005 MySQL AB. All rights reserved.
