-- EDITAR -- Conclua a configuração na resposta abaixo. -- EDITAR --
Quando sigo um artigo (link abaixo) sobre como configurar um MariaDB ou Mysql extra no Linux, e funciona. No entanto, não gosto dos nomes "mysql1" e "mysql2" para nomes de instância. Mas quando altero apenas esse aspecto do código, o servidor não instala quando executo o comando start.
Eu escrevi ambas as configurações aqui abaixo para facilitar a comparação: A que funciona onde 2 instâncias estão sendo feitas, e a que no final das contas não funciona. Eu adoraria muito descobrir como fazer a que não funciona, funcionar. Sua ajuda é muito apreciada!
- 1) Datadir (configuração que funciona):
sudo mkdir -p -v /var/lib/mysql{1..2}
sudo chown mysql:mysql -v /var/lib/mysql{1..2}
- 1) Datadir (configuração que não funciona):
sudo mkdir -p -v /var/lib/mysqlTest
sudo chown mysql:mysql -v /var/lib/mysqlTest
- 2) Diretório de soquetes (configuração que funciona):
sudo mkdir -p -v /usr/local/mysql/mdb{1..2}
sudo chown -v -R mysql:mysql /usr/local/mysql/mdb{1..2}
- 2) Diretório de soquete (configuração que não funciona):
sudo mkdir -p -v /usr/local/mysql/mdbTest
sudo chown -v -R mysql:mysql /usr/local/mysql/mdbTest
- 3) Diretório de log (configuração que funciona):
sudo mkdir -p -v /var/log/mysql{1..2}
sudo chown -v -R mysql:mysql /var/log/mysql{1..2}
- 3) Diretório de log (configuração que não funciona):
sudo mkdir -p -v /var/log/mysqlTest
sudo chown -v -R mysql:mysql /var/log/mysqlTest
- 4) Eu crio o seguinte arquivo
"mysqld_multi_cls.cnf"
Localizado em: /etc/mysql/
- 5) conteúdo (configuração que funciona):
# Configuration Settings for mysqld_multi , as well as separate instances.
#
[mysqld_multi]
mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
[mysqld1]
socket = /tmp/mysql.sock1
port = 3307
pid-file = /usr/local/mysql/mdb1/ansible-host1.pid1
datadir = /var/lib/mysql1
log-error = /var/log/mysql1/error.log
log_bin = /var/lib/mysql1/mdb1-mysql-bin.log
server-id = 1
expire_logs_days = 72
sync_binlog = 1
innodb_flush_log_at_trx_commit = 1
innodb_flush_method = O_DIRECT
binlog_format = mixed
gtid_strict_mode = 1
[mysqld2]
socket = /tmp/mysql.sock2
port = 3308
pid-file = /usr/local/mysql/mdb2/ansible-host1.pid2
datadir = /var/lib/mysql2
log-error = /var/log/mysql2/error.log
log-bin = /var/lib/mysql2/mdb2-mysql-bin.log
server-id = 2
expire_logs_days = 64
sync_binlog = 1
innodb_flush_log_at_trx_commit = 1
innodb_flush_method = O_DIRECT
binlog_format = mixed
gtid_strict_mode = 1
- 5) conteúdo (configuração que, no final das contas, não funciona):
# Configuration Settings for mysqld_multi , as well as separate instances.
#
[mysqld_multi]
mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
[mysqlTest]
socket = /tmp/mysql.sock3
port = 3309
pid-file = /usr/local/mysql/mdbTest/ansible-host1.pid3
datadir = /var/lib/mysqlTest
log-error = /var/log/mysqlTest/error.log
log_bin = /var/lib/mysqlTest/mdbTest-mysql-bin.log
server-id = 3
expire_logs_days = 72
sync_binlog = 1
innodb_flush_log_at_trx_commit = 1
innodb_flush_method = O_DIRECT
binlog_format = mixed
gtid_strict_mode = 1
-6) E agora iniciamos o servidor:
sudo mysqld_multi --defaults-file=/etc/mysql/mysqld_multi_cls.cnf --log=/etc/mysql/multi_ins.log start
- Se feito da primeira vez, o banco de dados agora está sendo instalado e todos ficam felizes.
- Mas se feito no 2º solar, onde eu apenas alterei o nome e criei uma única instância (extra), nada acontece.
O que estou perdendo?
Abraços e muito obrigado!
Aqui está o artigo no Linkedin por Michael Amadi: https://www.linkedin.com/pulse/running-multiple-instances-mariadb-single-server-different-amadi
Tudo bem, vamos responder a essa pergunta do bad boy.
Você não pode mudar o nome das instâncias extras mysql ou mariadb. Ele será mysql# ou mariadb#. O motivo é que mariadb e mysql percorrem por ele pelo seu GNR, o número ($i). Mas podemos dar às instâncias do servidor um nome diferente no phpMyAdmin com a opção "verbose".
Neste exemplo, faremos 3 instâncias. Poderíamos dar à nossa 1ª instância o #1. Mas isso pode criar algumas dificuldades mais tarde com o phpmyadmin. Então, identificamos nossa primeira instância como #2 E aqui está como fazemos isso. : Primeiro, precisamos criar algumas pastas para as novas instâncias mariadb ou mysql.
1: crie diretórios:
2: defina as permissões:
3: Vamos criar um arquivo de configuração mysqld_multi_cls.cnf para mariadb/mysql. Podemos fazer isso ao mesmo tempo em que abrimos o arquivo.
4: Adicione o seguinte código:
5: No terminal, inicie as novas instâncias do servidor. A primeira vez vai demorar um pouco, pois o mariadbd-multi vai instalá-las:
6: Depois de verificar se eles funcionam:
Ou você pode usar:
7: Essas instâncias não serão iniciadas quando seu computador inicializar. Não consegui encontrar uma maneira limpa e agradável de fazer isso por meio do próprio mariadbd/mysql. Mas podemos dar ao Linux um script para executar após a inicialização para iniciar as instâncias. E podemos fazer isso com o arquivo /etc/rc.local. Você pode não ver esse arquivo no seu explorer, mas podemos abri-lo pelo terminal:
Antes/Acima de "exit 0" adicione o seguinte:
Pressione "CTRL S" para salvar e "CTRL X" para fechar.
Configurar a nova instância Queremos fazer o servidor salvar. Isso significa que precisamos excluir a conta root, pois é isso que os "hackers" vão tentar primeiro. Renomeá-la para "admin" também não é o que você chama de "segurança de alta classe". Mas você pode pular esta parte se quiser.
1: No Terminal:
2: vamos verificar o número da porta apenas para ter certeza de que abrimos a instância correta:
3: Criar um usuário com autoridade total não é algo seguro, é claro. Mas vamos criar um de qualquer maneira :D
4: Conceder "todos os privilégios" dará a ele o privilégio de criar, excluir, escrever, ler e tudo mais. O "With Grand Option" permite que esse novo usuário crie/dê a outros usuários certos privilégios.
5: Transfira as novas configurações para o sistema e feche.
6: Agora entramos na instância mariadb novamente, mas dessa vez com nosso novo superusuário. E digitamos a Super-Duper-Complicated-Password quando solicitado.
7: Vamos dar uma olhada nessa conta e criar um banco de dados:
8: Funcionou? Se sim, vamos continuar e excluir o usuário root.
9: Uma coisa boa é ter uma conta separada que pode fechar um servidor. Vamos criar essa conta.
Repita isso mais algumas vezes para suas outras instâncias.
Configurar o servidor principal: 1: Poderíamos fazer exatamente o mesmo para o servidor principal. Criar uma nova conta e excluir root. Mas vamos fazer isso de forma diferente para o bem disso. Vamos renomeá-lo e alterar a senha.
2: Agora fazemos login novamente com o novo nome de conta e criamos o multi_admin como antes:
3: E configuramos algum registro para este servidor principal:
reiniciar Agora pode ser um bom momento para uma reinicialização feliz do seu sistema. E quando você voltar, veja se o servidor está rodando.
E lembre-se do multi_admin. É assim que você pode fechar uma de suas instâncias.
Com o comando report anterior você pode verificar se funcionou.
Agora adicione as instâncias mariadb ou mysql ao phpMyAdmin:
Claro que você sabe como acessar o phpMyAdmin no seu navegador, mas aqui está o endereço só para garantir:
1: Precisamos alterar o arquivo "config.inc.php". (Eu gosto do editor Geany para isso)
Você vê o seguinte?:
2: Passado o seguinte acima disso.
Vamos fazer uma reinicialização limpa e feliz.
Agora você pode fazer login com suas contas Mysql/MariaDB no phpMyAdmin. Apenas lembre-se de preencher as credenciais corretas para o servidor selecionado no menu suspenso.
Tenha um ótimo dia!