Eu não sei se este é o caminho certo, mas é assim que eu fiz. Por favor, deixe um comentário se houver algo errado aqui.
Meu /lib/systemd/system/[email protected] é assim:
[Unit]
Description=Multi Instance MySQL Community Server
After=network.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
PermissionsStartOnly=true
ExecStart=/usr/sbin/mysqld --defaults-file=/etc/mysql/mysql.conf.d/my_%I.cnf
TimeoutSec=600
Restart=on-failure
RuntimeDirectory=mysqld
RuntimeDirectoryMode=755
Eu criei um arquivo de configuração separado para cada instância em /etc/mysql/mysql.conf.d com os nomes my_replica01.cnf etc. Eu apenas copiei o arquivo de configuração principal do MySQL e mudei os caminhos e o número da porta. Então eu criei a pasta de dados para cada instância assim:
mkdir /var/lib/mysql-replica01
mkdir /var/lib/mysql-replica02
chown -R mysql:mysql /var/lib/mysql-replica*
etc.
Então inicializei a instância com:
mysqld --user=mysql --initialize --datadir=/var/lib/mysql-replica01
Depois tive que recarregar o systemd depois que adicionei o mysql @ .service -file
systemctl daemon-reload
Depois, ative as instâncias com:
systemctl enable mysql@replica01
systemctl enable mysql@replica02
Agora, as instâncias são iniciadas automaticamente quando o servidor é inicializado. Para iniciá-los manualmente, basta executar:
systemctl start mysql@replica01
EDITAR:
Só para adicionar, tive que me conectar à instância usando o soquete assim:
mysql -S /var/lib/mysql-replica01/mysql.sock -p
Em seguida, altere a senha, etc., para a conta raiz. Por alguma razão, o arquivo .mysql_secret não foi criado como diz em toda documentação que encontrei.