mysqld_safe é a maneira recomendada de iniciar um servidor mysqld no Unix e no NetWare. mysqld_safe adiciona algumas caracteristicas de segurança como reiniciar o servidor quando ocorre um erro e registrar informação em tempo de execução em um log de erros. As descrições do registro de erros e comportamentos especificos do NetWare são tratados mais adiante nesta seção.

Nota: No MySQL 5.1.20 (só nele), o comportamento padrão de registro de erros com mysqld_safe é de escrever os erros no syslog em sistemas que suportam o programa logger. Isto difere do comportamento padrão de escrever um log de erros para outras versões.

No 5.1.20, escrever no syslog poderia falhar e não funcionar corretamente em algums casos; se assim for, use --skip-syslog para usar o log padrão ou --log-error=//file_name// para especificar um nome de arquivo explicitamente..

mysqld_safe tenta iniciar um executável chamado mysqld. para substituir o comportamento padrão e especificar explicitamente o nome do servidor que você quiser executar, indique a opção --mysqld ou --mysqld-version para o mysqld_safe. Você também pode usar --ledir para indicar o diretório onde mysqld_safe deveria procurar pelo servidor.

Varias das opções para o mysqld_safe são as mesmas do que as opções para o mysqld.

Opções desconhecidas pelo mysqld_safe são passadas para o mysqld se elas forem especificadas na linha de comando, mas serão ignoradas se forem especificadas no grupo [mysqld_safe] de um arquivo de opções.

mysqld_safe lê todas as opções das seções [mysqld], [server], e [mysqld_safe] nos arquivos de opções. Por exemplo, se você especificar uma seção [mysqld] desta forma,mysqld_safe irá achar e usar a opção --log-error:

[mysqld]
log-error=error.log

Para compatibilidade para trás, mysqld_safe também lê seções [safe_mysqld], embora você deveria renomear essas seções para [mysqld_safe] em instalações do MySQL 5.1.

Opções do mysqld_safe

mysqld_safe suporta as seguintes opções:

  • --help

none Mostra uma mensagem de ajuda e termina.

  • --autoclose
    • (Somente no NetWare) No NetWare, mysqld_safe fornece uma presença de tela. Quando você descarrega (desliga) o NLM do mysqld_safe, a tela não vai embora por padrão. Em vez disso, ele mostra um prompt para o usuário:
*<NLM foi finalizado; Presione qualquer tecla para fechar a tela>*

Se em vez disso você quer com que o NetWare feche a tela automaticamente use a opção --autoclose em mysqld_safe.

  • --basedir=path

none O caminho para o diretório de instalação do MySQL.

  • --core-file-size=size

none O tamanho do arquivo core que o mysqld deveria poder criar. O valor é passado para ulimit -c.

  • --datadir=path
    • O caminho para o diretório de dados.
  • --defaults-extra-file=path

none O nome de um arquivo de opções para ser lido em adição aos arquivos habituais. Esta deve ser a primeira opção na linha de comandos se for ser usada. Se o arquivo não existir ou então for inacessível, o servidor termina com um erro.

  • --defaults-file=file_name
    • O nome de um arquivo de opções para ser lido em adição aos arquivos habituais. Esta deve ser a primeira opção na linha de comandos se for ser usada.
  • --ledir=path
    • Se o mysqld_safe não pode encontrar o servidor, use esta opção para indicar o nome do caminho até o diretório onde se encontra o servidor.
  • --log-error=file_name
    • Escreve o log de erro no arquivo dado
  • --mysqld=prog_name
    • O nome do programa servidor (no diretório ledir) que você quiser iniciar. Esta opção é necessária se você usa a distribuição binária do MySQL mas tem o diretório de dados fora da distribuição binária. Se o mysqld_safe não pode encontrar o servidor, use a opção --ledir para indicar o nome do caminho até o diretório onde se encontra o servidor.
  • --mysqld-version=suffix
    • Esta opção é similar a opção --mysqld, só que você especifica só o sufixo para o nome do programa servidor. Se assume que o nome nbase é mysqld. Por exemplo, se você usar: --mysqld-version=debug, mysqld_safe inicia o programa mysqld-debug no diretório ledir. Se o argumento para --mysqld-version estiver vazio, mysqld_safe usa o mysqld no diretório ledir.
  • --nice=priority
    • Usa o programa nice para definir a prioridade de planejamento do servidor para o valor dado.
  • --no-defaults
    • Não lê nenhum arquivo de opções. Esta deve ser a primeira opção na linha de comandos se for ser usada.
  • --open-files-limit=count

none O número de arquivos que o mysqld deveria poder abrir. O valor é passado a ulimit -n. Lembre que você precisa iniciar mysqld_safe como root para que isto funcione adequadamente!.

  • --pid-file=file_name

none O nome do caminho do arquivo do ID de processo.

  • --port=port_num

none O número de porta que o servidor deveria usar na escuta de conexões TCP/IP. O número de porta deve ser 1024 ou maior, a menos que o servidor seja iniciado pelo usuário administrador do sistema.

  • --skip-kill-mysqld
    • Não tente terminar na inicialização processos mysqld perdidos. Esta opção apenas funciona no Linux.
  • --socket=path

none O socket Unix que o servidor deveria usar ao escutar conexões locais.

  • --syslog, --skip-syslog

none --syslog faz com que sejam enviadas mensagens de erro ao syslog em sistemas que suportem o programa logger. --skip-syslog suprime o uso do syslog; mensagens são gravadas em um arquivo de log de erros. Estas opções foram adicionadas no MySQL 5.1.20.

  • --syslog-tag=tag
    • Para o registro no syslog, mensagens de mysqld_safe e mysqld são gravadas com tags mysqld_safe e mysqld respectivamente. Para especificar um sufixo para o tag, use --syslog-tag=tag, o qual modifica os tags para serem mysqld_safe-tag e mysqld-tag. Esta opção foi adicionada no MySQL 5.1.21.
  • --timezone=timezone
    • Define a variável de entorno TZ (time zone) para o valor dado.

Consulte a documentação do seu sistema operacional para formatos de especificação corretos do time zone.

  • --user={user_name|user_id}
    • Executa o servidor mysqld como o usuário tendo o nome user_name ou a identidade numérica user_id. ("User" neste contexto se refere a uma conta do sistema, e não a um usuário do MySQL listado nas tabelas de permissões.)

Se você executar mysqld_safe com a opção --defaults-file ou a opção --defaults-extra-file para designar um arquivo, a opção deve ser a primeira a ser passada na linha de comando, se não o arquivo não será usado. Por exemplo, este comando não usará o arquivo designado:

mysql> mysqld_safe --port=port_num --defaults-file=file_name

Em vez disso, use o seguinte comando:

mysql> mysqld_safe --defaults-file=file_name --port=port_num

O script mysqld_safe, é escrito de tal forma que possa normalmente iniciar um servidor que foi instalado desde uma fonte ou uma distribuição binaria do MySQL, mesmo que esses tipos de distribuições instalam geralmente o servidor em locais levemente diferentes. (Veja a seção 2.1.5 "Esboços de Instalação".) mysqld_safe espera que uma das condições seguintes seja cumprida:

  • O servidor e os bancos podem ser encontrados em relação ao diretório de trabalho (o diretório desde onde o mysqld_safe é invocado). Para distribuições binárias, mysqld_safe procura sob seu diretório de trabalho pelos diretórios bin e data. Para distribuições fonte, ele procura por diretórios libexec e var. Esta condição deveria ser satisfeita se você executar mysqld_safe desde seu diretório de instalação do MySQL (por exemplo, /usr/local/mysql para uma distribuição binária).
  • Se o servidor e os bancos não podem ser encontrados em relação ao diretório de trabalho, mysqld_safe tenta localiçá-los por nomes de caminhos absolutos. Locais comuns são /usr/local/libexec e /usr/local/var. Os locais atuais são determinados pelos valores configurados na distribuição no momento que foi compilada.

Já que o mysqld_safe tenta encontrar o servidor e os bancos relativos ao seu proprio diretório de trabalho, você pode instalar uma distribuição binária do MySQL em qualquer lugar, sempre que você execute mysqld_safe desde o diretório de instalação do MySQL:

shell> cd mysql_installation_directory
shell> bin/mysqld_safe &

Se o mysqld_safe falhasse, mesmo sendo invocado desde o diretório de instalalação do MySQL, você pode especificar as opções --ledir e --datadir para indicar os diretórios nos quais se encontram tanto o servidor como os bancos de dados no sistema.

Quando você usa mysqld_safe para iniciar mysqld, mysqld_safe obtem mensagens de erro de si mesmo e do mysqld para ir até o mesmo destino.

A partir do MySQL 5.1.20 existem varias opções do mysqld_safe para controlar o destino dessas mensagens:

  • --syslog: Grava mensagens de erro no syslog em sistemas que suportam o programa logger.
  • --skip-syslog: Não grava mensagens de erro no syslog. As mensagens são gravadas no arquivo log de erros padrão (host_name.err no diretório de dados), ou em um arquivo designado se a opção --log-error for passada.
  • --log-error=file_name: Grava mensagens de erro no arquivo de erros designado.

Se nenhuma destas opções é dada, o padrão é --skip-syslog.

Nota: Somente no MySQL 5.1.20, o padrão é --syslog. Isto difere do comportamento no logging para outras versões do MySQL, nas quais o padrão é gravar as mensagens no arquivo log de erros padrão.

Se ambas as opções --syslog e --log-error forem dadas, um aviso é emitido e --log-error tem precedência.

Quando mysqld_safe escreve uma mensagem, os avisos vão ao destino de gravação (syslog ou o arquivo de registro de erros) e à saída padrão. Erros vão ao destino de gravação e à saída de erro.

Em versões anteriores ao MySQL 5.1.20, a gravação de erros é controlada somente com a opção --log-error. Se esta for passada, as mensagens irão ao arquivo de erro designado. Caso contrário, as mensagens vão até o arquivo de erro padrão.

Normalmente, você não deveria editar o script mysqld_safe. Em vez disso, configure mysqld_safe usando as opções da linha de comando ou as opções na seção [mysqld_safe] de um arquivo my.cnf. Em casos raros, poderia ser necessario editar mysqld_safe para fazer com que inicie o servidor adequadamente. No entanto se você fizer isto, sua versão modificada do mysqld_safe seria substituida se você atualizar o MySQL num futuro, então você deveria fazer uma copia da versão editada para poder reinstalar.

No NetWare, mysqld_safe é um módulo carregável do NetWare (NetWare Loadable Module ou NLM) que é portado do shell script original do Unix. Este inicia o servidor da seguinte forma:

  1. Executa um numero de verificações de sistema e opções.
  2. Executa uma verificação nas tabelas MyISAM.
  3. Fornece uma presença de tela para o servidor MySQL.
  4. Inicia mysqld, monitora ele, e reinicia ele se este terminar em erro.
  5. Envia mensagens de erro desde mysqld até o arquivo host_name.err no diretório de dados.
  6. Envia uma saída em tela do mysqld_safe ao arquivo host_name.safe no diretório de dados.

Comments

Comments loading...