Isso é definitivamente possível. O link é uma boa referência.
Alternativa # 1:
Minha sugestão baseada na referência do MySQL é que você faça 10 cópias do seu my.cnf e adicione-as ao seu /etc/rc.local
. Nesse caso, você deve preferencialmente usar uma ferramenta como monit para monitorar o status e o tempo de atividade das instâncias. A segunda alternativa é modificar o script de inicialização existente.
O script a seguir não foi testado, mas dá uma ideia do que precisa ser feito. Ele faz um loop em 10 servidores MySQL e copia uma configuração separada, cria um diretório separado de usuários e dados e incrementa o número da porta de 3306 a 3317. Certifique-se de passar pelo rc.local para alterar o endereço IP para os IPs desejados, antes de executar o rc.local ou reiniciar o servidor.
Além disso, certifique-se de definir configurações sãs em termos de utilização de desempenho para lidar com todos esses servidores de uma só vez. Pode haver conflitos com as ACLs, como o SELinux ou o AppArmor. Se você tiver problemas com essa solução e não conseguir descobrir, deixe um comentário.
mv /etc/rc.local /etc/rc.local.bak
printf '%s\n' '#!/bin/bash' > /etc/rc.local
chmod 0755 /etc/rc.local
cd /etc/mysql
port=3306
for i in {1..10}
do
cp my.cnf my-${port}.cnf
sed -i 's/socket.*/socket\=\/var\/run\/mysqld\/mysqld-${port}.sock/' my-${port}.cnf
echo "mysqld_safe --defaults-file=/usr/local/mysql/my-${port}.cnf --bind-address=127.0.0.${i} --port=$port --datadir=/var/lib/mysql-${port} " >> /etc/rc.local
useradd -d /nonexistent -s /bin/false -c "MySQL server listening on ${port}"
mkdir -m 0700 /var/lib/mysql-${port}
mysql_install_db --user=mysql --basedir=/var/lib/mysql-${port} --datadir=/var/lib/mysql-${port}/data
port=$(expr $port + 1)
done
echo 'exit 0' >> /etc/rc.local
mv my.cnf my.cnf.bak
update-rc.d -f mysql remove
Alternativa # 2: Use mysqld_multi conforme descrito no link .
Alternativa # 3:
Uma solução muito fácil e limpa seria instalar o docker e executar 10 containers separados com o MySQL, com diferentes números de porta e ip. Você pode configurar essas substituições no seu Dockerfile
.
Espero que isso ajude!