Precisa de ajuda para um script de inicialização do Unix

2

Eu sou muito fraco em scripts shell unix. Existe uma maneira de criar script de shell Unix que irá iniciar apenas no tempo de inicialização do servidor , e irá executar os seguintes comandos na ordem:

# cd /mysql
# ./bin/safe_mysqld --user=root &
# ./support-files/mysql.server start

A história mais longa ... Em um servidor HP-UX, eu instalei o Mysql. No entanto, o cliente queria que o servidor fosse instalado em /mysql em vez de /usr/local/mysql/ , que é o local padrão. Durante a semana passada eu tenho lutado para configurar o daemon mysql para iniciar automaticamente no tempo de inicialização do servidor.

Eu não sei qual é o problema, mas até agora a única maneira de iniciar o servidor é usando os comandos acima.

ATUALIZAÇÃO: 07.02.12 15:23

Esta é uma saída curta da inicialização do servidor quando inicia os processos:

Start MySQL Server .................................................. OK
...

No entanto, depois de inserir ps -ef , posso dizer facilmente que não foi iniciado:

# ps -ef | grep -i mysql
    root  3074  3056  0 15:26:53 pts/0     0:00 grep -i mysql
#

E é assim que deve ser quando começar o processo:

# cd mysql
# ./bin/safe_mysqld --user=root &
[1]     3123
# Starting mysqld daemon with databases from /mysql/data
#
# ./support-files/mysql.server start
Starting MySQL
 SUCCESS!
#
# ps -ef | grep -i mysql
    root  3139  3123  0 15:27:19 pts/0     0:00 /mysql/bin/mysqld --basedir=/mysql --datadir=/mysql/data --u
    root  3123  3056  0 15:27:19 pts/0     0:00 /bin/sh ./bin/safe_mysqld --user=root
    root  3171  3056  0 15:27:59 pts/0     0:00 grep -i mysql
#

Agora, acho mais claro por que desejo criar um script de inicialização do shell e na verdade FORÇAR o início do processo com esses comandos.

    
por Spirit 07.02.2012 / 12:25

2 respostas

3

O binário precisa saber a localização do arquivo my.cnf na inicialização (um padrão será compilado). Você não disse qual prefixo de caminho você usou ao construir o mysql. Por sua vez, o arquivo my.cnf define os locais dos arquivos de dados.

Seria uma boa idéia usar um script de init SysV apropriado para gerenciar o servidor. Além de resolver o problema de iniciar o servidor na inicialização, você também terá um desligamento limpo quando o sistema for interrompido, você poderá configurar um comportamento sensato para diferentes níveis de execução e parar / iniciar o servidor mysql sozinho de forma gerenciada. E se você configurá-lo corretamente, ele funcionará bem com o SAM.

um exemplo aqui (observe que a localização de my.cnf é passada como um argumento para safe_mysqld) . Isso deve estar em /sbin/init.d com links apropriados (simbólicos) em /sbin/rcX.d (onde X é o nível de execução relevante). O processo é descrito aqui .

    
por 07.02.2012 / 14:01
0

Eu acho que a coisa mais limpa, se esta é uma opção para você, é recompilar o MySQL.

No diretório de origem (extrair do tarball):

./configure --prefix=/mysql
make && sudo make install
    
por 07.02.2012 / 14:34