O que você está vendo aqui é o comportamento esperado do sistema. A dependência Requires= fará com que mysql.service seja iniciado sempre que tomcat.service for iniciado, mas uma vez iniciado, as duas unidades serão independentes e uma não será interrompida quando a outra for.
Se você realmente quer que mysql.service seja interrompido quando tomcat.service é, você pode usar o PartOf= directive que liga as unidades ao parar e reiniciar.
Para o exemplo que você descreveu (com mysql.service parar sempre que tomcat.service for interrompido), o que você precisa é adicionar PartOf=tomcat.service à definição de mysql.service . Normalmente, a melhor maneira de fazer isso é usar um arquivo de substituição, o que você pode fazer com systemctl edit mysql.service , que abrirá um editor de texto com um arquivo vazio, e você poderá adicionar este snippet a ele:
[Unit]
PartOf=tomcat.service
Isso será salvo em um arquivo /etc/systemd/system/mysql.service.d/override.conf que se torna parte de mysql.service , você pode verificar isso com systemctl cat mysql.service .
Após essas alterações e um systemctl daemon-reload , isso deve funcionar conforme o esperado ...
Em relação ao pedido, tudo deve funcionar como esperado com o único After=mysql.service que você tem em tomcat.service , pois as dependências são respeitadas na ordem inversa ao interromper os serviços. (O que significa, neste caso, tomcat.service será parado primeiro, seguido por mysql.service .)
Parar as unidades dessa maneira pode nem sempre ser uma boa ideia ... Talvez uma abordagem um pouco melhor seja criar um .target unit para agrupar todos os serviços que você deseja controlar juntos. Talvez algo como webservices.target .
Você criaria essa unidade com conteúdo como:
[Unit]
Description=Web Services
Requires=tomcat.service mysql.service
After=tomcat.target mysql.service
[Install]
WantedBy=multi-user.target
Em seguida, os dois tomcat.service e mysql.service definiram um PartOf=webservices.target , usando o mecanismo de substituição descrito acima.
Ative a unidade de destino com systemctl enable webservices.target e, em seguida, inicie e pare os dois serviços junto com systemctl start webservices.target ou systemctl stop webservices.target .