Qual é o 'modo Debian' de instalar múltiplas instâncias do MySQL em um único servidor?

9

Você conhece algum 'modo Debian' de configurar múltiplas instâncias do MySQL em um único servidor? O servidor receberia dados replicados de vários bancos de dados remotos.

Eu poderia usar scripts como mysqlsandbox mas eu prefiro manter os pacotes Debian e gostaria de poder atualizar a configuração sem muitas complicações o futuro. Outra solução é o mysqlmanager - ele funciona com o MySQL 5.1, mas ele está obsoleto e não é mais liberado com o 5.5.

Então, qual é a 'melhor prática' de rodar múltiplas instâncias do MySQL em um único servidor Debian?

    
por pQd 10.03.2012 / 00:29

2 respostas

10

Acredito que seja tão simples quanto executar o mysqld_multi e configurar o my.cnf corretamente. mysqld_multi é uma parte da distribuição do mysql - não é um babado empacotado.

Existe um patch para tornar /usr/share/mysql/mysqld_multi.server apropriado para uso em /etc/init.d e outro patch para fazer mysqld_multi usar arquivos em /etc/mysql/conf.d .

Você pode inicializar os diretórios de dados do MySQL para novas instâncias com o comando mysql_install_db desta forma:

mysql_install_db --datadir=/var/lib/mysql2

Não se esqueça de alterar a senha de root da instância recém-criada:

mysqladmin --port 3307 --user=root password 'new-password'
    
por 10.03.2012 / 00:34
2

No Debian 8, você pode usar o mecanismo Systemd: não precisa mais de mysqld_multi .

NOTA: eu uso a versão do MariaDB! Não tenho certeza se funciona com o pacote 'clássico' do MySQL.

De /lib/systemd/system/[email protected] :

Multi instance version of mariadb. For if you run mutiple verions at once. Also used for mariadb@bootstrap to bootstrap Galera.

create config file /etc/mysql/conf.d/my{instancename}.cnf

start as systemctl start mariadb@{instancename}.server

Portanto, crie um arquivo /etc/mysql/conf.d/myserver2.cnf e especifique nele novos arquivos pid / socket / datadir e porta de rede:

[mysqld]
user        = mysql
pid-file    = /var/run/mysqld/mysqld-server2.pid
socket      = /var/run/mysqld/mysqld-server2.sock
port        = 3307
basedir     = /usr
datadir     = /var/lib/mysql-server2
tmpdir      = /tmp

EDIT: tenha em atenção que a primeira instância do MySQL não lê este ficheiro de configuração, com !includedir /etc/mysql/conf.d/* na parte inferior de /etc/mysql/my.cnf . Se for o caso, substitua o !includedir por um !include de cada arquivo de configuração diferente de myserver2.cnf:

#!includedir /etc/mysql/conf.d/*
!include /etc/mysql/conf.d/conf1.cnf
!include /etc/mysql/conf.d/confX.cnf

O documento oficial do MySQL indica que você deve nomear [mysqld] como [mysqld@server2] ( link ) mas isso não funciona com o MariaDB. Então, apenas deixe [mysqld] .

Antes de iniciar o novo daemon, não esqueça de criar o datadir e os arquivos necessários:

mkdir /var/lib/mysql-server2
chown mysql:mysql /var/lib/mysql-server2
mysql_install_db --datadir=/var/lib/mysql-server2

Também recarregue a configuração do daemon do systemd:

systemctl daemon-reload

E se você quiser iniciar este daemon na inicialização:

systemctl enable mariadb@server2

Para começar:

service mariadb@server2 start
    
por 26.12.2016 / 18:01

Tags