mysqld_multi
, programa para gerenciar múltiplos servidores MariaDB
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 "Inicializando e parando o MariaDB 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
Fornece um exemplo de um arquivo de configuração.
--help
Exibe esta ajuda e sai.
--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 fornecermysqld_safe
a esta opção. As opções são passadas aomysqld
. Apenas tenha certeza que omysqld
está localizado na sua variável de ambientePATH
ou corrija omysqld_safe
.--no-log
Imprime na saída padrão em vez do arquivo log. Por padrão o arquivo log sempre fica ligado.
--password=...
Senha do usuário para o
mysqladmin
.--tcp-ip
Conecta ao(s) servidor(es) MariaDB 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=...
Usuário MariaDB para o
mysqladmin
.--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 omysqladmin
) 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 MariaDB, 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 "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 utilizandomysqld_safe
para iniciar omysqld
(ex. --mysqld=mysqld_safe) Todos osmysqld
devem ter seus própriospid-file
. A vantagem de utilizar omysqld_safe
no lugar de executar diretamente omysqld
é quemysqld_safe
guarda todos os processos e irá reiniciá-los, se um processo domysqld
falhar devido a um sinal kill -9, ou similar. (Como um falha de segmentação, que nunca pode acontecer com o MariaDB.) Por favor note que pode ser necessário executar o scriptmysqld_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 omysqld_multi
. Se você tiver problemas ao iniciar, por favor veja o scriptmysqld_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 "
mysqld-safe
, o wrapper domysqld
". 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 osmysqlds
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 scriptmysqld_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 omysqlds
for iniciado com a SUA conta no Unix. IMPORTANTE: Tenha certeza que opid-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 processomysqld
. 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 processosmysqld
separados. Iniciando múltiplosmysqlds
em um diretório de dados NÃO IRÁ melhorar a performance em um sistema baseado em threads.
See "Executando Múltiplos MariaDB 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
See "Arquivo de Opções my.cnf
".