Capítulo 8: Administração de Bancos de Dados
Nota: Este tutorial faz parte de uma série sobre tmux. Veja a Parte 7 aqui.
Introdução ao Cenário de Bancos de Dados
A administração de bancos de dados representa um dos casos de uso mais críticos e complexos em ambientes de infraestrutura moderna. Bancos de dados são frequentemente o coração de aplicações empresariais, armazenando dados valiosos e servindo como ponto central de integração entre diferentes sistemas. A natureza crítica destes sistemas requer monitoramento contínuo, backup regular e capacidade de resposta rápida a problemas de performance ou disponibilidade.
Nosso cenário prático utiliza dois servidores de banco de dados distintos: um servidor MySQL (ans-mysql) localizado em 192.168.50.17 e um servidor PostgreSQL (ans-pgsql) localizado em 192.168.10.21. Esta configuração heterogênea reflete ambientes reais onde diferentes aplicações podem requerer diferentes sistemas de gerenciamento de banco de dados baseado em suas necessidades específicas de performance, funcionalidade ou compatibilidade.
O MySQL, executando no servidor ans-mysql, representa uma das soluções de banco de dados mais populares do mundo, conhecida por sua facilidade de uso, performance sólida e ampla compatibilidade com aplicações web. O PostgreSQL, executando no servidor ans-pgsql, oferece funcionalidades mais avançadas, conformidade rigorosa com padrões SQL e capacidades extensas para aplicações que requerem funcionalidades de banco de dados mais sofisticadas.
A complexidade da administração de bancos de dados surge da necessidade de monitorar múltiplos aspectos simultaneamente: performance de queries, utilização de recursos do sistema, integridade de dados, status de replicação (quando aplicável) e logs de transações. O tmux proporciona a capacidade de organizar e visualizar todas estas informações de forma coerente, transformando o que seria uma tarefa fragmentada em múltiplas sessões SSH e ferramentas separadas em um workflow unificado e eficiente.
Configuração do Ambiente de Administração de Bancos
Estabelecimento da Sessão Base
A configuração eficaz de um ambiente tmux para administração de bancos de dados começa com o estabelecimento de uma sessão dedicada que servirá como centro de comando para todas as operações relacionadas aos sistemas de banco de dados. Esta sessão deve ser organizada de forma a facilitar comparação entre diferentes sistemas e permitir operações coordenadas quando necessário.
1
2
3
4
5
6
7
8
9
10
11
12
# Criar sessão dedicada para administração de bancos de dados
tmux new-session -d -s db-admin
# Renomear a primeira janela para MySQL
tmux rename-window -t db-admin:0 'mysql'
# Configurar conexão com o servidor MySQL
tmux send-keys -t db-admin:mysql 'ssh admin@192.168.50.17' C-m
# Verificar status inicial do MySQL
tmux send-keys 'sudo systemctl status mysql' C-m
tmux send-keys 'mysql -u root -p -e "SHOW DATABASES;"' C-m
A sessão db-admin serve como ambiente centralizado onde todas as operações de administração de bancos de dados são realizadas. A nomenclatura clara das janelas facilita identificação rápida do sistema sendo administrado, especialmente importante quando alternando rapidamente entre diferentes sistemas de banco de dados.
Configuração de Conectividade Multi-Database
O próximo passo envolve estabelecer conectividade com ambos os servidores de banco de dados, permitindo administração simultânea e comparação de métricas entre diferentes sistemas. Esta configuração é especialmente valiosa para operações que afetam múltiplos bancos ou para monitoramento comparativo de performance.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Criar janela para PostgreSQL
tmux new-window -t db-admin -n 'postgresql'
# Configurar conexão com o servidor PostgreSQL
tmux send-keys -t db-admin:postgresql 'ssh admin@192.168.10.21' C-m
# Verificar status inicial do PostgreSQL
tmux send-keys 'sudo systemctl status postgresql' C-m
tmux send-keys 'sudo -u postgres psql -c "\l"' C-m
# Criar janela para comparação lado a lado
tmux new-window -t db-admin -n 'comparison'
# Dividir janela para acomodar ambos os sistemas
tmux split-window -t db-admin:comparison -h
# Configurar pane esquerdo para MySQL
tmux select-pane -t db-admin:comparison.0
tmux send-keys 'ssh admin@192.168.50.17' C-m
# Configurar pane direito para PostgreSQL
tmux select-pane -t db-admin:comparison.1
tmux send-keys 'ssh admin@192.168.10.21' C-m
Esta configuração estabelece conectividade direta com ambos os servidores de banco de dados, proporcionando acesso imediato para administração, monitoramento e troubleshooting. A janela de comparação permite visualização lado a lado de métricas e operações, facilitando análise comparativa de performance e comportamento.
Implementação de Layouts Especializados
Para administração eficaz de bancos de dados, diferentes layouts de tmux são apropriados para diferentes tipos de tarefas. Um layout de monitoramento pode incluir métricas de performance em tempo real, enquanto um layout de backup pode focar em progresso de operações e logs relacionados.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# Criar janela para monitoramento de performance
tmux new-window -t db-admin -n 'performance'
# Configurar layout de quatro panes para monitoramento abrangente
tmux split-window -t db-admin:performance -h
tmux split-window -t db-admin:performance.0 -v
tmux split-window -t db-admin:performance.1 -v
# Configurar monitoramento de MySQL
tmux select-pane -t db-admin:performance.0
tmux send-keys 'ssh admin@192.168.50.17' C-m
tmux send-keys 'watch "mysqladmin -u root -p processlist"' C-m
tmux select-pane -t db-admin:performance.1
tmux send-keys 'ssh admin@192.168.50.17' C-m
tmux send-keys 'watch "mysqladmin -u root -p status"' C-m
# Configurar monitoramento de PostgreSQL
tmux select-pane -t db-admin:performance.2
tmux send-keys 'ssh admin@192.168.10.21' C-m
tmux send-keys 'watch "sudo -u postgres psql -c \"SELECT * FROM pg_stat_activity;\""' C-m
tmux select-pane -t db-admin:performance.3
tmux send-keys 'ssh admin@192.168.10.21' C-m
tmux send-keys 'watch "sudo -u postgres psql -c \"SELECT * FROM pg_stat_database;\""' C-m
Este layout de monitoramento proporciona visibilidade contínua dos aspectos mais críticos de ambos os sistemas de banco de dados: processos ativos, estatísticas de performance e atividade de conexões. O comando watch
garante que informações sejam atualizadas automaticamente, mantendo administradores informados sobre mudanças sem necessidade de intervenção manual constante.
Monitoramento de Performance e Recursos
Monitoramento de MySQL
O MySQL oferece uma variedade de ferramentas e comandos para monitoramento de performance que podem ser organizados eficientemente através do tmux. O monitoramento eficaz do MySQL requer visibilidade de múltiplos aspectos: queries em execução, utilização de cache, estatísticas de InnoDB e métricas de replicação quando aplicável.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Criar janela dedicada para monitoramento detalhado do MySQL
tmux new-window -t db-admin -n 'mysql-monitoring'
# Configurar layout para múltiplas perspectivas de monitoramento
tmux split-window -t db-admin:mysql-monitoring -h
tmux split-window -t db-admin:mysql-monitoring.0 -v
tmux split-window -t db-admin:mysql-monitoring.1 -v
# Monitorar processlist para queries ativas
tmux select-pane -t db-admin:mysql-monitoring.0
tmux send-keys 'ssh admin@192.168.50.17' C-m
tmux send-keys 'watch "mysql -u root -p -e \"SHOW FULL PROCESSLIST;\""' C-m
# Monitorar status geral do servidor
tmux select-pane -t db-admin:mysql-monitoring.1
tmux send-keys 'ssh admin@192.168.50.17' C-m
tmux send-keys 'watch "mysql -u root -p -e \"SHOW STATUS LIKE \'%Threads%\';\""' C-m
# Monitorar estatísticas de InnoDB
tmux select-pane -t db-admin:mysql-monitoring.2
tmux send-keys 'ssh admin@192.168.50.17' C-m
tmux send-keys 'watch "mysql -u root -p -e \"SHOW ENGINE INNODB STATUS\\G\" | head -50"' C-m
# Monitorar recursos do sistema
tmux select-pane -t db-admin:mysql-monitoring.3
tmux send-keys 'ssh admin@192.168.50.17' C-m
tmux send-keys 'watch "top -b -n1 | grep -E \"(mysql|CPU|Mem)\" | head -10"' C-m
Esta configuração proporciona monitoramento abrangente do MySQL, incluindo atividade de queries, estatísticas do servidor, informações específicas do InnoDB e utilização de recursos do sistema. A visualização simultânea permite identificação rápida de correlações entre diferentes métricas de performance.
Monitoramento de PostgreSQL
O PostgreSQL oferece um conjunto rico de views de sistema e ferramentas de monitoramento que proporcionam insights detalhados sobre performance e atividade do banco. O monitoramento eficaz do PostgreSQL requer atenção a aspectos como atividade de sessões, estatísticas de tabelas, performance de queries e utilização de recursos.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Criar janela dedicada para monitoramento detalhado do PostgreSQL
tmux new-window -t db-admin -n 'postgresql-monitoring'
# Configurar layout para múltiplas perspectivas de monitoramento
tmux split-window -t db-admin:postgresql-monitoring -h
tmux split-window -t db-admin:postgresql-monitoring.0 -v
tmux split-window -t db-admin:postgresql-monitoring.1 -v
# Monitorar atividade de sessões
tmux select-pane -t db-admin:postgresql-monitoring.0
tmux send-keys 'ssh admin@192.168.10.21' C-m
tmux send-keys 'watch "sudo -u postgres psql -c \"SELECT pid, usename, application_name, state, query FROM pg_stat_activity WHERE state = \'active\';\""' C-m
# Monitorar estatísticas de banco de dados
tmux select-pane -t db-admin:postgresql-monitoring.1
tmux send-keys 'ssh admin@192.168.10.21' C-m
tmux send-keys 'watch "sudo -u postgres psql -c \"SELECT datname, numbackends, xact_commit, xact_rollback FROM pg_stat_database;\""' C-m
# Monitorar estatísticas de tabelas
tmux select-pane -t db-admin:postgresql-monitoring.2
tmux send-keys 'ssh admin@192.168.10.21' C-m
tmux send-keys 'watch "sudo -u postgres psql -c \"SELECT schemaname, tablename, seq_scan, seq_tup_read, idx_scan FROM pg_stat_user_tables ORDER BY seq_scan DESC LIMIT 10;\""' C-m
# Monitorar recursos do sistema
tmux select-pane -t db-admin:postgresql-monitoring.3
tmux send-keys 'ssh admin@192.168.10.21' C-m
tmux send-keys 'watch "top -b -n1 | grep -E \"(postgres|CPU|Mem)\" | head -10"' C-m
Esta configuração proporciona visibilidade abrangente da atividade do PostgreSQL, incluindo sessões ativas, estatísticas de banco de dados e tabelas, e utilização de recursos do sistema. A organização permite identificação rápida de gargalos de performance e padrões de uso.
Monitoramento Comparativo
Uma das vantagens de utilizar tmux para administração de múltiplos sistemas de banco de dados é a capacidade de realizar monitoramento comparativo, onde métricas similares de diferentes sistemas podem ser visualizadas simultaneamente para identificar discrepâncias ou padrões.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# Criar janela para monitoramento comparativo
tmux new-window -t db-admin -n 'comparative'
# Layout para comparação lado a lado
tmux split-window -t db-admin:comparative -h
# Configurar monitoramento de conexões ativas - MySQL
tmux select-pane -t db-admin:comparative.0
tmux split-window -v
tmux select-pane -t db-admin:comparative.0
tmux send-keys 'ssh admin@192.168.50.17' C-m
tmux send-keys 'watch "mysql -u root -p -e \"SHOW STATUS LIKE \'Threads_connected\';\""' C-m
# Monitoramento de recursos - MySQL
tmux select-pane -t db-admin:comparative.1
tmux send-keys 'ssh admin@192.168.50.17' C-m
tmux send-keys 'watch "free -h && echo \"--- MySQL Process ---\" && ps aux | grep mysql | grep -v grep"' C-m
# Configurar monitoramento de conexões ativas - PostgreSQL
tmux select-pane -t db-admin:comparative.2
tmux split-window -v
tmux select-pane -t db-admin:comparative.2
tmux send-keys 'ssh admin@192.168.10.21' C-m
tmux send-keys 'watch "sudo -u postgres psql -c \"SELECT count(*) as active_connections FROM pg_stat_activity WHERE state = \'active\';\""' C-m
# Monitoramento de recursos - PostgreSQL
tmux select-pane -t db-admin:comparative.3
tmux send-keys 'ssh admin@192.168.10.21' C-m
tmux send-keys 'watch "free -h && echo \"--- PostgreSQL Process ---\" && ps aux | grep postgres | grep -v grep | head -5"' C-m
Esta configuração permite comparação direta de métricas similares entre MySQL e PostgreSQL, facilitando identificação de diferenças de carga, utilização de recursos ou padrões de atividade que podem informar decisões de otimização ou balanceamento de carga.
Operações de Backup e Restore
Configuração de Ambiente de Backup
As operações de backup são críticas para qualquer ambiente de banco de dados e requerem monitoramento cuidadoso para garantir sucesso e identificar problemas rapidamente. O tmux permite organização de operações de backup de forma que progresso possa ser monitorado em tempo real e múltiplos backups possam ser executados simultaneamente quando apropriado.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Criar janela dedicada para operações de backup
tmux new-window -t db-admin -n 'backup'
# Layout para backup de múltiplos sistemas
tmux split-window -t db-admin:backup -h
tmux split-window -t db-admin:backup.0 -v
tmux split-window -t db-admin:backup.1 -v
# Configurar pane para backup MySQL
tmux select-pane -t db-admin:backup.0
tmux send-keys 'ssh admin@192.168.50.17' C-m
tmux send-keys 'cd /backup/mysql' C-m
# Configurar pane para monitoramento MySQL
tmux select-pane -t db-admin:backup.1
tmux send-keys 'ssh admin@192.168.50.17' C-m
tmux send-keys 'watch "ls -lah /backup/mysql/ | tail -10"' C-m
# Configurar pane para backup PostgreSQL
tmux select-pane -t db-admin:backup.2
tmux send-keys 'ssh admin@192.168.10.21' C-m
tmux send-keys 'cd /backup/postgresql' C-m
# Configurar pane para monitoramento PostgreSQL
tmux select-pane -t db-admin:backup.3
tmux send-keys 'ssh admin@192.168.10.21' C-m
tmux send-keys 'watch "ls -lah /backup/postgresql/ | tail -10"' C-m
Esta configuração estabelece um ambiente dedicado para operações de backup onde comandos podem ser executados e progresso pode ser monitorado simultaneamente para ambos os sistemas de banco de dados.
Execução de Backups com Monitoramento
A execução de backups requer atenção cuidadosa ao progresso, utilização de recursos e possíveis erros. O tmux permite visualização simultânea de todos estes aspectos, proporcionando feedback imediato sobre o status das operações.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Exemplo de backup MySQL com monitoramento completo
# No pane de backup MySQL
tmux select-pane -t db-admin:backup.0
BACKUP_DATE=$(date +%Y%m%d_%H%M%S)
tmux send-keys "mysqldump -u root -p --all-databases --single-transaction --routines --triggers > mysql_backup_${BACKUP_DATE}.sql" C-m
# Configurar monitoramento de progresso
tmux select-pane -t db-admin:backup.1
tmux send-keys 'watch "ls -lah /backup/mysql/*.sql | tail -5 && echo \"--- Disk Usage ---\" && df -h /backup"' C-m
# Exemplo de backup PostgreSQL
tmux select-pane -t db-admin:backup.2
tmux send-keys "sudo -u postgres pg_dumpall > postgresql_backup_${BACKUP_DATE}.sql" C-m
# Monitoramento de progresso PostgreSQL
tmux select-pane -t db-admin:backup.3
tmux send-keys 'watch "ls -lah /backup/postgresql/*.sql | tail -5 && echo \"--- Disk Usage ---\" && df -h /backup"' C-m
Esta configuração permite execução simultânea de backups de ambos os sistemas com monitoramento em tempo real do progresso, tamanho dos arquivos e utilização de espaço em disco.
Operações de Restore e Verificação
As operações de restore são igualmente críticas e requerem monitoramento cuidadoso para garantir que dados sejam restaurados corretamente e que sistemas retornem ao estado operacional esperado.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Criar janela para operações de restore
tmux new-window -t db-admin -n 'restore'
# Layout para restore e verificação
tmux split-window -t db-admin:restore -h
tmux split-window -t db-admin:restore.0 -v
tmux split-window -t db-admin:restore.1 -v
# Configurar ambiente de restore MySQL
tmux select-pane -t db-admin:restore.0
tmux send-keys 'ssh admin@192.168.50.17' C-m
tmux send-keys 'cd /backup/mysql' C-m
# Monitoramento durante restore MySQL
tmux select-pane -t db-admin:restore.1
tmux send-keys 'ssh admin@192.168.50.17' C-m
tmux send-keys 'watch "mysql -u root -p -e \"SHOW PROCESSLIST;\""' C-m
# Configurar ambiente de restore PostgreSQL
tmux select-pane -t db-admin:restore.2
tmux send-keys 'ssh admin@192.168.10.21' C-m
tmux send-keys 'cd /backup/postgresql' C-m
# Monitoramento durante restore PostgreSQL
tmux select-pane -t db-admin:restore.3
tmux send-keys 'ssh admin@192.168.10.21' C-m
tmux send-keys 'watch "sudo -u postgres psql -c \"SELECT * FROM pg_stat_activity;\""' C-m
Troubleshooting e Diagnóstico
Identificação de Problemas de Performance
O troubleshooting de problemas de performance em bancos de dados requer análise sistemática de múltiplos aspectos: queries lentas, bloqueios, utilização de índices e recursos do sistema. O tmux facilita esta análise proporcionando visibilidade simultânea de diferentes métricas e logs.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Criar janela para troubleshooting de performance
tmux new-window -t db-admin -n 'troubleshooting'
# Layout para análise abrangente
tmux split-window -t db-admin:troubleshooting -h
tmux split-window -t db-admin:troubleshooting.0 -v
tmux split-window -t db-admin:troubleshooting.1 -v
# Análise de queries lentas - MySQL
tmux select-pane -t db-admin:troubleshooting.0
tmux send-keys 'ssh admin@192.168.50.17' C-m
tmux send-keys 'mysql -u root -p -e "SELECT * FROM information_schema.processlist WHERE time > 10;"' C-m
# Análise de bloqueios - MySQL
tmux select-pane -t db-admin:troubleshooting.1
tmux send-keys 'ssh admin@192.168.50.17' C-m
tmux send-keys 'watch "mysql -u root -p -e \"SHOW ENGINE INNODB STATUS\\G\" | grep -A 20 \"LATEST DETECTED DEADLOCK\""' C-m
# Análise de queries lentas - PostgreSQL
tmux select-pane -t db-admin:troubleshooting.2
tmux send-keys 'ssh admin@192.168.10.21' C-m
tmux send-keys 'sudo -u postgres psql -c "SELECT query, state, query_start FROM pg_stat_activity WHERE state = '\''active'\'' AND query_start < now() - interval '\''30 seconds'\'';"' C-m
# Análise de bloqueios - PostgreSQL
tmux select-pane -t db-admin:troubleshooting.3
tmux send-keys 'ssh admin@192.168.10.21' C-m
tmux send-keys 'watch "sudo -u postgres psql -c \"SELECT blocked_locks.pid AS blocked_pid, blocked_activity.usename AS blocked_user, blocking_locks.pid AS blocking_pid, blocking_activity.usename AS blocking_user FROM pg_catalog.pg_locks blocked_locks JOIN pg_catalog.pg_stat_activity blocked_activity ON blocked_activity.pid = blocked_locks.pid JOIN pg_catalog.pg_locks blocking_locks ON blocking_locks.locktype = blocked_locks.locktype;\""' C-m
Esta configuração proporciona análise sistemática de problemas de performance comuns em ambos os sistemas, permitindo identificação rápida de queries problemáticas e situações de bloqueio.
Análise de Logs
A análise de logs é fundamental para identificação de problemas e compreensão de padrões de comportamento em sistemas de banco de dados. O tmux permite monitoramento simultâneo de múltiplos logs e correlação entre eventos em diferentes sistemas.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Criar janela para análise de logs
tmux new-window -t db-admin -n 'logs'
# Layout para múltiplas fontes de logs
tmux split-window -t db-admin:logs -h
tmux split-window -t db-admin:logs.0 -v
tmux split-window -t db-admin:logs.1 -v
# Logs de erro MySQL
tmux select-pane -t db-admin:logs.0
tmux send-keys 'ssh admin@192.168.50.17' C-m
tmux send-keys 'sudo tail -f /var/log/mysql/error.log' C-m
# Logs de slow query MySQL
tmux select-pane -t db-admin:logs.1
tmux send-keys 'ssh admin@192.168.50.17' C-m
tmux send-keys 'sudo tail -f /var/log/mysql/mysql-slow.log' C-m
# Logs PostgreSQL
tmux select-pane -t db-admin:logs.2
tmux send-keys 'ssh admin@192.168.10.21' C-m
tmux send-keys 'sudo tail -f /var/log/postgresql/postgresql-*.log' C-m
# Logs do sistema
tmux select-pane -t db-admin:logs.3
tmux send-keys 'ssh admin@192.168.10.21' C-m
tmux send-keys 'sudo journalctl -u postgresql -f' C-m
Esta configuração permite monitoramento simultâneo de logs de erro, slow queries e eventos do sistema, facilitando correlação entre problemas em diferentes camadas da stack.
Automação e Scripts de Administração
Scripts para Operações Rotineiras
A administração de bancos de dados envolve muitas tarefas rotineiras que podem ser automatizadas para aumentar eficiência e reduzir erros. O tmux pode ser integrado com scripts que automatizam estas tarefas, proporcionando interfaces visuais para monitoramento de progresso.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/bin/bash
# Script: db-health-check.sh
# Executa verificações de saúde abrangentes dos bancos de dados
# Criar sessão dedicada para health check
tmux new-session -d -s db-health
# Verificações MySQL
tmux send-keys -t db-health 'ssh admin@192.168.50.17' C-m
tmux send-keys 'mysql -u root -p -e "SELECT @@version; SHOW STATUS LIKE '\''Uptime'\''; SHOW STATUS LIKE '\''Threads_connected'\'';"' C-m
# Criar nova janela para PostgreSQL
tmux new-window -t db-health -n 'postgresql-check'
tmux send-keys 'ssh admin@192.168.10.21' C-m
tmux send-keys 'sudo -u postgres psql -c "SELECT version(); SELECT now() - pg_postmaster_start_time() as uptime;"' C-m
# Criar janela para verificação de espaço
tmux new-window -t db-health -n 'space-check'
tmux split-window -h
tmux select-pane -t 0
tmux send-keys 'ssh admin@192.168.50.17' C-m
tmux send-keys 'df -h && echo "--- MySQL Data Directory ---" && du -sh /var/lib/mysql/*' C-m
tmux select-pane -t 1
tmux send-keys 'ssh admin@192.168.10.21' C-m
tmux send-keys 'df -h && echo "--- PostgreSQL Data Directory ---" && du -sh /var/lib/postgresql/*' C-m
# Anexar à sessão
tmux attach-session -t db-health
Script de Backup Automatizado
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/bin/bash
# Script: automated-backup.sh
# Executa backup automatizado de ambos os bancos com monitoramento
USER="admin"
MYSQL_HOST="192.168.50.17"
POSTGRESQL_HOST="192.168.10.21"
BACKUP_DATE=$(date +%Y%m%d_%H%M%S)
# Criar sessão para backup automatizado
tmux new-session -d -s auto-backup
# Configurar backup MySQL
tmux send-keys -t auto-backup "ssh ${USER}@${MYSQL_HOST}" C-m
tmux send-keys "cd /backup/mysql" C-m
tmux send-keys "echo 'Starting MySQL backup at $(date)'" C-m
tmux send-keys "mysqldump -u root -p --all-databases --single-transaction > mysql_backup_${BACKUP_DATE}.sql" C-m
# Criar janela para backup PostgreSQL
tmux new-window -t auto-backup -n 'postgresql-backup'
tmux send-keys "ssh ${USER}@${POSTGRESQL_HOST}" C-m
tmux send-keys "cd /backup/postgresql" C-m
tmux send-keys "echo 'Starting PostgreSQL backup at $(date)'" C-m
tmux send-keys "sudo -u postgres pg_dumpall > postgresql_backup_${BACKUP_DATE}.sql" C-m
# Criar janela para monitoramento
tmux new-window -t auto-backup -n 'monitoring'
tmux split-window -h
# Monitorar progresso MySQL
tmux select-pane -t 0
tmux send-keys "ssh ${USER}@${MYSQL_HOST}" C-m
tmux send-keys 'watch "ls -lah /backup/mysql/*.sql | tail -5 && df -h /backup"' C-m
# Monitorar progresso PostgreSQL
tmux select-pane -t 1
tmux send-keys "ssh ${USER}@${POSTGRESQL_HOST}" C-m
tmux send-keys 'watch "ls -lah /backup/postgresql/*.sql | tail -5 && df -h /backup"' C-m
# Anexar à sessão
tmux attach-session -t auto-backup
Integração com Ferramentas de Monitoramento
A integração do tmux com ferramentas de monitoramento externas como Nagios, Zabbix ou sistemas de logging centralizados pode proporcionar visibilidade ainda maior sobre o estado dos bancos de dados.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/bin/bash
# Script: db-monitoring-integration.sh
# Integra monitoramento tmux com ferramentas externas
# Criar sessão integrada de monitoramento
tmux new-session -d -s db-monitoring
# Janela para métricas nativas dos bancos
tmux rename-window -t db-monitoring:0 'native-metrics'
tmux split-window -h
# MySQL metrics
tmux select-pane -t 0
tmux send-keys 'ssh admin@192.168.50.17' C-m
tmux send-keys 'watch "mysqladmin -u root -p status"' C-m
# PostgreSQL metrics
tmux select-pane -t 1
tmux send-keys 'ssh admin@192.168.10.21' C-m
tmux send-keys 'watch "sudo -u postgres psql -c \"SELECT * FROM pg_stat_database;\""' C-m
# Janela para logs centralizados (ELK stack)
tmux new-window -t db-monitoring -n 'centralized-logs'
tmux send-keys 'ssh admin@192.168.10.113' C-m # ans-elk server
tmux send-keys 'curl -X GET "localhost:9200/_cat/indices?v" | grep -E "(mysql|postgres)"' C-m
# Janela para alertas
tmux new-window -t db-monitoring -n 'alerts'
tmux send-keys 'ssh admin@192.168.10.113' C-m
tmux send-keys 'tail -f /var/log/elasticsearch/elasticsearch.log | grep -E "(mysql|postgres)"' C-m
tmux attach-session -t db-monitoring
A administração eficaz de bancos de dados através do tmux demonstra como a ferramenta pode ser adaptada para diferentes tipos de sistemas mantendo princípios consistentes de organização e monitoramento. A capacidade de comparar métricas entre diferentes sistemas de banco de dados lado a lado é especialmente valiosa em ambientes heterogêneos. O próximo capítulo explorará como aplicar estes conceitos à administração de infraestrutura web, incluindo load balancers e servidores web em configuração de alta disponibilidade.