Executando e acompanhando tarefas demoradas na linha de comando do MySQL
Primeiro, precisamos do comando sql que será executado.
Execute o comando no seu programa preferido (Workbench, direto na linha de comando, etc) e finalize o programa.
Execute o comando abaixo para ver o status do comando (oi?)
mysql -v -h ipdobanco -u login -psenha nomedabase -e "show processlist;"
O retorno será de pelo menos 2 linhas, uma detalhando o próprio comando SHOW PROCESSLIST, e outra com o comando que foi executado antes:
--------------
show processlist
--------------
+----------+--------+-----------------------+--------+---------+------+----------+------------------------------------------+-----------+---------------+
| Id | User | Host | db | Command | Time | State | Info | Rows_sent | Rows_examined |
+----------+--------+-----------------------+--------+---------+------+----------+------------------------------------------+-----------+---------------+
| 19241044 | login | 127.0.0.1:39922 | nomedabase | Query | 529 | updating | delete from tabela | 0 | 416450 |
| 19258640 |login |127.0.0.1:54285 |nomedabase | Query | 0 | init | show processlist | 0 | 0 |
+----------+--------+-----------------------+--------+---------+------+----------+------------------------------------------+-----------+---------------+
Agora, precisamos executar esse comando de tempos em tempos, para verificarmos quando finalizou.
while sleep 60; do COMANDO; done
O exemplo acima fica assim:
while sleep 60; do mysql -v -h ipdobanco -u login -psenha nomedabase -e "show processlist;"; done
O 60 significa que o comando será executado a cada 60 segundos. Basta alterar pra executar numa frequência diferente.