Menu fechado

Instalando MySQL 5.5 Parte 2 – Multiplas instancias com mysqld_multi

Dando continuidade ao nosso post anterior, hoje vamos subir varias instâncias do MySQL em um mesmo servidor, pratica muito comum hoje em dia, ao invés de criar uma única instância com 100% dos recursos do servidor, se divide a carga de QPS (querys por segundo) entre várias instâncias.
O mysqld_multi irá procurar por grupos [mysqldN] dentro do nosso arquivo de configurações my.cnf, onde N é um numero inteiro que será utilizado posteriormente para referenciarmos qual servidor vamos dar START STOP ou visualizar o REPORT

  1. Já temos a seguinte estrutura em nosso servidor:
    |_3306/
      |_data/
      |_logs/
  2. Vamos criar a estrutura da instância 3307 e ajustar os direitos dela:
    mkdir 3307
    mkdir 3307/data
    mkdir 3307/logs
    chown -R mysql:mysql /mysql/3307
  3. Criaremos agora a estrutura padrão do banco pelo script contido na pasta mysql
    cd /mysql/mysql/scripts/
    ./mysql_install_db --user=mysql --basedir=/mysql/mysql --datadir=/mysql/3307/data/
  4. Lembrando que devemos estar atentos para receber os 2 OK’s abaixo:
    Installing MySQL system tables...
    OK
    Filling help tables...
    OK
  5. Feito isso, vamos ao nosso arquivo de configuração, o my.cnf, hoje ele está assim:
    [mysqld]
    datadir=/mysql/3306/data
    socket=/mysql/3306/mysql.sock
    user=mysql
    [mysqld_safe]
    log-error=/mysql/3306/logs/mysqld.log
    pid-file=/mysql/3306/mysqld.pid

    Agora vamos adicionar um novo grupo, chamado de [mysqld_multi] nele vamos colocar 3 itens:
    mysqld – caminho para o nosso binário mysql, sugiro aqui, colocar o caminho para o mysqld_safe
    mysqladmin – caminho para o binário mysqladmin, ele é utlizado para parar as instâncias
    E também vamos adicionar os grupos [mysqldN] que são semelhantes ao antigo [mysqld] onde ficarão os dados específicos de cada instância, no nosso caso, vamos subir o [mysqld1] e [mysqld2] ficando assim então o nosso my.cnf:

    [mysqld_multi]
    mysqld = /mysql/mysql/bin/mysqld_safe
    mysqladmin = /mysql/mysql/bin/mysqladmin
    [mysqld1]
    port = 3306
    datadir = /mysql/3306/data
    socket = /mysql/3306/mysql.sock
    log-error = /mysql/3306/logs/mysqld.log
    pid-file = /mysql/3306/mysqld.pid
    [mysqld2]
    port = 3307
    datadir = /mysql/3307/data
    socket = /mysql/3307/mysql.sock
    log-error = /mysql/3307/logs/mysqld.log
    pid-file = /mysql/3307/mysqld.pid
  6. Agora então, vamos a parte que interessa, subir as nossas instâncias, temos apenas que entrar na pasta onde estão os binários, chamar o mysqld_multi passar o arquivo de configuração e a opção desejada, neste caso o START :
    cd /mysql/mysql
    mysqld_multi --defaults-file=/mysql/my_rep.cnf start
    Pronto, se tudo deu certo devemos receber a mensagem abaixo:
    110511 07:57:10 mysqld_safe Logging to '/mysql/3306/logs/mysqld.log'.
    110511 07:57:10 mysqld_safe Starting mysqld daemon with databases from /mysql/3306/data
    110511 07:57:10 mysqld_safe Logging to '/mysql/3307/logs/mysqld.log'.
    110511 07:57:10 mysqld_safe Starting mysqld daemon with databases from /mysql/3307/data

    Lembrando que o mysqld_multi tem mais duas opções, uma delas é o report, que vamos digitar mysqld_multi --defaults-file=/mysql/my_rep.cnf report e ele vai nos dizer quais os grupos estão rodando:
    MySQL server from group: mysqld1 is running
    MySQL server from group: mysqld2 is running

    E a outra é a opção STOP, lembrando que ela utiliza o mysqladmin teremos que passar após o arquivo de configuração o nome de usuário e senha que tenha acesso para shutdown com as opções --user e --password neste caso, estou com o usuário root sem senha, então o comando ficará assim:
    mysqld_multi --defaults-file=/mysql/my_rep.cnf --user=root stop
    Teremos que receber a mensagem dizendo que o PID FILE foi encerado:
    110511 08:02:17 mysqld_safe mysqld from pid file /mysql/3306/mysqld.pid ended
    110511 08:02:17 mysqld_safe mysqld from pid file /mysql/3307/mysqld.pid ended
  7. lembrando que podemos especificar qual grupo estamos querendo fazer o manager, por exemplo, caso eu queira subir somente a instância especificada em [mysqld2] o comando ficaria assim:
    mysqld_multi --defaults-file=/mysql/my_rep.cnf start 2É isso aí pessoal, mais informações podem ser adquiridas na Documentação do MySQL , qualquer dúvida ou sugestão, comentem!!!
Gostou ? Ajude e Compartilhe!