Eu finalmente encontrei o problema, parece que o upstart não usa os parâmetros definidos em /etc/security/limits.conf, então quando eu inicio o mysql através do comando service (e assim, sob o upstart), ele sobrescreve os definidos limita e usa o padrão 1024.
A solução é modificar o arquivo mysql.conf que define o serviço upstart, ele está localizado em /etc/init/mysql.conf e adiciona as seguintes linhas antes do bloco de pré-inicialização:
# NB: Upstart scripts do not respect
# /etc/security/limits.conf, so the open-file limits
# settings need to be applied here.
limit nofile 32000 32000
limit nproc 32000 32000
O primeiro valor define o limite flexível, o outro, o limite rígido, uma vez incluídas essas linhas, o serviço funciona como esperado, aplicando os valores definidos no arquivo my.conf.
Essa limitação deve se aplicar a todos os serviços iniciantes definidos em / etc / init, portanto, se algum serviço tiver o mesmo problema com o limite de arquivos abertos, essa solução também deverá funcionar.