Cliente MySql e elaboração de relatórios em vários hosts

Iniciado por Cão, 24 de Fevereiro de 2017, 08:58

tópico anterior - próximo tópico

Cão

 Olá,

No meu estágio, venho tendo a tarefa de limpar várias tabela, em várias bases de vários hosts(27... um pra cada estado brasileiro).
Gostaria então de um guia simples para conexão do meu cliente mysql à essas diversas bases, via terminal.

Digo via terminal, pela facilidade de elaborar scripts e macros que resumam esse trabalho, e caso alguém conheça uma ferramenta gráfica com
essas funções, seria legal também.

Grato desde já,

Felix

Basicamente, o comando para conexão a bancos mysql pelo terminal é:


mysql -h HOST -u USUARIO -p SENHA -D BANCODEDADOS

Cão


Cão

No fim eu consegui montar o script dessa forma:


#!/bin/bash

select="SELECT *
                FROM tbl;"  # SELECT feito para o backup

update="UPDATE tbl
                  SET col = val
                  WHERE col1 = val1;" # update

while read linha; do    # Este laço lê um arquivo csv com os nomes dos hosts, portas, usuarios e senhas nas 1ª, 2ª,3ª e 4ª colunas respectivamente
  host=$( echo "$linha" | cut -f1 -d' ' )
  porta=$( echo "$porta" | cut -f2 -d' ' ) # Aqui os dados para acesso às bases estão sendo armazenadas em variáveis
  usuario=$( echo "$linha" | cut -f3 -d' ' )
  senha=$( echo "$senha" | cut -f4 -d' ' )

mysql -h$host -P$porta -u$usuario -p$senha -e"SHOW DATABASES;" > bases_do_host.txt   # Para cada host, serão feitos relatórios e updates em cada banco de dados presente, este comando cria um arquivo com cada banco armazenado em uma linha

  while read base; do # Loop feito em cada BD
    mysql -h$host -P$porta -u$usuario -p$senha -e"$select" >> Backup.txt  # Geração de um arquivo de backup, antes que sejam feitos updates
    mysql -h$host -P$porta -u$usuario -p$senha -e"$update"  # update
  done <bases_do_host.txt

done <lista_hosts-portas-usuarios-e-senhas.txt