Como você costuma fazer backup do seu banco de dados?

8

Estou usando o mysql

Com que frequência você faz backup de seu banco de dados?

Como você normalmente faz backup de seu banco de dados?

Exportar todos os dados para o formato sql ou cvs e mantê-los em uma pasta ??

    
por pauska 23.06.2009 / 09:15

9 respostas

11

Se você quiser fazer backups do MySQL corretamente, sem qualquer tempo de inatividade, você deve replicar o banco de dados para um servidor sobressalente. Ele não precisa ser extremamente poderoso, ele só precisa lidar com a carga de gravação do seu banco de dados mestre. Você não deve usar este servidor em produção. Se a replicação nunca acompanhar, você precisa de um servidor mais poderoso. Você pode verificar comparando o arquivo de log e a posição da saída de

 > SHOW MASTER STATUS\G

no mestre e

 > SHOW SLAVE STATUS\G

no escravo. Eu acho que o MySQL5 mostrará o atraso de SHOW SLAVE STATUS .

Quando você está feliz que seu escravo está acompanhando, você pode fazer backups fazendo

  1. Pare a replicação com SLAVE STOP; no escravo
  2. Faça um mysqldump --opt no servidor escravo.
  3. Inicie a replicação novamente com SLAVE START; no escravo

Se você fizer isso, você terá um backup consistente dos seus bancos de dados. Esse método evita que diferentes bancos de dados ou até mesmo tabelas diferentes do mesmo banco de dados fiquem fora de sincronia e evita tempo de inatividade bloqueando tabelas para gravações enquanto você faz o backup.

Um bom benefício dessa configuração é que você tem uma cópia do banco de dados que pode usar para executar consultas longas e caras que não afetarão seu serviço ao vivo.

Algumas dicas aleatórias:

  • Não fique tentado a fazer um backup baseado em arquivo dos arquivos de dados mysql. É mais incômodo do que vale a pena e os dumps do MySQL são mais flexíveis.
  • Cuidado com as tabelas de bloqueio do mysqldump durante o despejo.
  • Cuidado com as inconsistências nos despejos, a menos que você bloqueie todas as tabelas durante o despejo
  • Use mysqldump --opt , pois normalmente é a maneira mais rápida de importar o SQL resultante
  • Descarte quantas vezes você puder. Nós despejamos diariamente porque temos 40 GB ou mais de dados.
  • Teste seus lixões em um servidor reserva ocasionalmente para garantir que eles funcionem.
por 23.06.2009 / 09:55
3

Eu uso um script que usa mysqldump para extrair os dados / esquemas para um arquivo para cada banco de dados. Os dados são copiados pelo backup normal de netbackup para fita. Obviamente, você pode adicionar mais sinos e assobios, mas isso faz um despejo básico do simpe.

#!/bin/sh
# Find out what databases are in mysql and back them up
# Delete old backups


STARTTIME=' date +%Y%m%d-%H%M '

#BACKUP_DIR="/usr/local/db_backups"
BACKUP_DIR="/var/local/db_backups"
LOGFILE="/var/log/db_backups.log"
USER="root"
PASSWD="<password>"
KEEP="7"

(
echo
echo " ---MySQL backups start ${STARTTIME} ---"
#delete any backup written more than ${KEEP} days ago
echo "Removing files over ${KEEP} days old from ${BACKUP_DIR}:"
/usr/bin/find  ${BACKUP_DIR} -mindepth 1 -mtime +${KEEP} -print -delete



echo
echo "Performing today's dumps"
#find each database running in this instance of mysl
for DB in ' echo "show databases;"|mysql -u${USER} -p${PASSWD} mysql |awk " NR>1 {print $1} " '
do
        #generate a backup file name based on the data base name
        BACKUP_FILE="${BACKUP_DIR}/${DB}-${STARTTIME}.sql"
        echo "Processing database ${DB} into file ${BACKUP_FILE}"
        # dump the database data/schema into the backup file
        mysqldump -u${USER} -p${PASSWD} --add-drop-table ${DB} > ${BACKUP_FILE}
        gzip ${BACKUP_FILE}
done

ENDTIME=' date +%Y%m%d-%H%M '
echo
echo " ---MySQL backups complete ${ENDTIME} ---"
echo
) >>  ${LOGFILE} 2>&1
    
por 23.06.2009 / 18:01
1

Geralmente, os bancos de dados são submetidos a backup uma vez por dia, se precisarem ser interrompidos, e, em seguida, os backups são transferidos para uma área de armazenamento para consolidação e, em seguida, vão para a fita.

Backups de banco de dados são feitos com as ferramentas nativas fornecidas com o mecanismo de banco de dados tempo.

Backups não devem ser mantidos nos servidores com os dados em caso de falha de hardware.

É razoavelmente recomendado ter réplicas atualizadas de seus servidores de banco de dados quando possível, melhor ter um macanismo de failover para bancos de dados de produção.

Para software você pode, por exemplo, dar uma olhada em bacula ou zmanda

    
por 23.06.2009 / 09:21
1

Nossa configuração padrão é um cluster de alta disponibilidade com dois bancos de dados, um replicando para o outro, que é somente leitura.

Fazemos um backup completo uma vez por dia e temos uma política por cliente de eliminar backups antigos, geralmente mantemos 4 últimos backups diários (para sobreviver no fim de semana), 4 últimos domingos e 4 últimos primeiros domingos em um mês. Depois que um ou dois despejos por ano vão para o arquivo para serem guardados para sempre.

Também mantemos os logs de replicação por quanto tempo pudermos poupar o espaço em disco. Eles também são bastante úteis como ferramenta de depuração, pois registram exatamente quem alterou o que e quando.

Teoricamente, tudo o que você precisa é de um backup completo e todos os logs de replicação para poder fazer uma restauração pontual, mas os backups completos mais frequentes aceleram a restauração.

Um truque com o backup é usar tabelas innodb e - paramater de transação única para mysql dump, dessa forma o backup não bloqueará o banco de dados enquanto ele é executado.

    
por 23.06.2009 / 10:07
1

Estou usando o Xtrabackup da Percona. é uma solução de backup não bloqueável para InnoDB / XtraDB

    
por 23.06.2009 / 10:28
1

O propósito de fazer o backup é poder restaurar.

Eu não defendo um despejo de CSV como uma solução de backup; tudo o que vai lhe dar são os dados brutos. Há muito mais do que isso, particularmente com um banco de dados. Descrições de tabelas, visualizações, procs armazenados, o nome dele. Se você também não tiver esses recursos, não conseguirá recuperá-los com sucesso. Há também o aplicativo RDBMS e a configuração a serem considerados. Você pode ter um grande número de patches, o que também precisará colocar em seu ambiente de recuperação para chegar ao mesmo nível. Você pode estar executando alguma configuração especial ditada pelos requisitos de seus aplicativos. Você pode até ter um conjunto específico de configurações de sistema operacional necessárias para que seu banco de dados seja executado de maneira ideal. Todos eles também precisarão ser recuperados e, a menos que você tenha uma solução de backup capaz de executá-los, haverá mais atrasos no seu tempo de recuperação, sem mencionar a garantia de que você conseguirá recuperá-lo da mesma forma como foi.

Para backups de banco de dados (e backups em geral) eu sempre prefiro usar um software de backup "real" que possa lidar com todos eles.

    
por 23.06.2009 / 15:08
0

Mais recentemente, gerenciei servidores MySQL no EC2. Nós configuramos os snapshots do EBS em um cron job de 15 minutos, 3-5 snapshots foram mantidos.

Quando fizemos servidores MySQL 'tradicionais', fizemos o backup diariamente via MySQl-ZRM. Os backups são essencialmente mysqldumps, que são enviados para fita, SAN, etc, dependendo das necessidades do cliente.

Ambos os métodos podem ser feitos sem parar o banco de dados.

    
por 23.06.2009 / 09:33
0

Para o MySQL eu uso o automysqlbackup ( link ), uma vez que meu software de backup (Backup Exec) não suporta snapshots no Linux sistemas.

Funciona bem, mas vou monitorar este tópico para sugestões:)

    
por 23.06.2009 / 09:37
0

Fazemos backups duas vezes por dia e também executamos backups de log a cada 10 a 15 minutos.

A vantagem desse método é que você pode restaurar a partir de um backup duas vezes por dia e, em seguida, aplicar os arquivos de log até os últimos 15 minutos, o mais tardar. Dessa forma, você está minimizando a quantidade de dados que pode perder.

Com que frequência você faz backup de seus dados? Quantos dados você está acostumado a perder? Se você puder perder um dia de dados, faça backup uma vez por dia. Dados nunca mudam? Então você só precisa de uma cópia!

    
por 23.06.2009 / 09:49