Backup de Base de Dados
Publicado por Thiago Henrique de Lima (última atualização em 29/11/2011)
[ Hits: 5.008 ]
Homepage: thiagohenrique.com.br
Ao criarem suas rotinas de backup de bases de dados, é comum que administradores de sistemas gerem arquivos de backup da base inteira.
Quando a base de dados é pequena, isto não costuma ser um problema, já que teremos um arquivo pequeno de onde é fácil extrair dados específicos. Porém, quando a base de dados cresce e necessitamos extrair dados específicos de uma tabela deste aquivo, por exemplo, isto se torna um problema.
Para resolver este tipo de problema, recentemente procurei na internet um script de backup que fizesse backup de PostGreSQL por tabelas, e não do banco como um todo… e não achei!
Ao executá-lo, ele irá criar um diretório cujo nome será a data de execução no formato YYYYMMDD dentro do diretório de destino dos backups. Dentro deste diretório, ele irá criar outro diretório para cada base de dados existente no servidor, sendo que o nome destes diretórios serão o nome das bases as quais corresponderem. Dentro deste diretório, ele irá gerar um arquivo chamado schema.sql.gz, cujo conteúdo será a estrutura do banco, e também irá gerar outros arquivo “.sql.gz” que conterão o backup dos dados de cada tabela do banco. Estes últimos serão nomeados com o nome da tabela do qual armazenam o backup.
#!/bin/bash # Autor: Thiago Henrique # Email: contato(at)thiagohenrique.com.br # Data de criação: 24/08/2011 # # Para que o script funcione corretamente, é necessário que o usuário que o executar possua o arquivo ~/.pgpass. # Para configurar este arquivo, siga este tutorial: http://wiki.postgresql.org/wiki/Pgpass # BACKUP_DIR="/backup/`date +%Y%m%d`" HOST="127.0.0.1"; USER="postgres"; LIST_DATABASES="SELECT datname from pg_database" LIST_TABLES="SELECT tablename FROM pg_tables WHERE schemaname='public'" PERMISSAO_BACKUP='644'; function backup() { DATABASES=`psql -h ${HOST} -U ${USER} -q -t --command="${LIST_DATABASES}"`; for I in ${DATABASES} do export PGDATABASE="${I}"; DIR="${BACKUP_DIR}/${PGDATABASE}"; /bin/mkdir -p -m ${PERMISSAO_BACKUP} ${DIR}; /usr/bin/pg_dump -h ${HOST} -U ${USER} --schema-only > ${DIR}/schema.sql; /bin/gzip -f ${DIR}/schema.sql; TABLES=`/usr/bin/psql -h ${HOST} -U ${USER} -q -t --command="${LIST_TABLES}"`; for I in ${TABLES} do /usr/bin/pg_dump -h ${HOST} -U ${USER} -t ${I} --data-only > ${DIR}/${I}.sql; /bin/gzip -f ${DIR}/${I}.sql; done done }
Trocar senha de root NO BRACO remotamente
Atualizando o kde para kde3.5.7
Pequeno sistema de backup (Rsync + SAMBA + Tar + FTP)
Alterando resolução de monitor externo
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (15)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)
Pendrive não formata de jeito nenhum (4)