AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 50664
Accepted
Valien
Valien
Asked: 2013-09-28 08:02:04 +0800 CST2013-09-28 08:02:04 +0800 CST 2013-09-28 08:02:04 +0800 CST

Práticas recomendadas para fazer backup de um banco de dados MySQL

  • 772

Eu descobri recentemente que nossos servidores web de produção que executam o MySQL não estão sendo copiados regularmente (ou de forma alguma). Estou acostumado a fazer backup de bancos de dados SQL Server, mas não tenho muita experiência com bancos de dados MySQL. Alguma prática recomendada para usar 'mysqldump' ou qualquer outra ferramenta de backup de banco de dados?

Provavelmente vou fazer o cron job do cronograma para que seja feito todas as noites e depois fazer backup dos arquivos com meu sistema de backup.

Obrigado.

mysql mysqldump
  • 3 3 respostas
  • 36370 Views

3 respostas

  • Voted
  1. Best Answer
    Peter Venderberghe
    2013-10-05T03:18:57+08:002013-10-05T03:18:57+08:00

    Práticas recomendadas para fazer backup do servidor MySQL:

    Replicação do MySQL

    Configurar replicação no MySQL. Você terá que configurar o servidor Master e Slave. Todas as leituras e gravações no banco de dados podem ir para o seu servidor escravo. A vantagem de ter Replication é que você pode fazer um backup do seu servidor slave sem interromper o servidor Master. Seu aplicativo continuará funcionando no Master sem qualquer tempo de inatividade.

    Usando o despejo do MySQL

    Se o seu conjunto de dados for pequeno (eu percebo que "pequeno" é um termo relativo... para qualificá-lo, digamos <10 GB), então mysqldump provavelmente funcionará muito bem. É fácil, está online e é muito flexível. Apenas algumas coisas que o mysqldump pode fazer: fazer backup de tudo ou apenas de alguns bancos de dados ou tabelas fazer backup apenas do DDL otimizar o dump para uma restauração mais rápida tornar o arquivo sql resultante mais compatível com outros RDBMSes e muito mais.

    No entanto, as opções mais importantes estão relacionadas à consistência do seu backup. Minhas opções favoritas são: --single-transaction : esta opção fornece um backup consistente, se (e somente se) as tabelas estiverem usando o mecanismo de armazenamento InnoDB. Se você tiver tabelas MyISAM não somente leitura, não use esta opção ao fazer backup delas. --master-data=2 : esta opção garantirá que seu dump seja consistente (fazendo um lock-all-tables, a menos que você tenha adicionado a opção --single-transaction). A opção --master-data também registra a posição do log binário no arquivo de despejo resultante (=2 faz com que esta linha seja um comentário no arquivo de despejo)

    Nota final sobre mysqldump: tenha em mente que o tempo de restauração pode ser significativamente maior que o tempo de backup. Vai depender de vários fatores, por exemplo, quantos índices você tem.

    Instantâneo do LVM

    Para aqueles que possuem conjuntos de dados maiores, um backup físico é o caminho a seguir. Embora você possa fazer um backup a frio (ou seja, encerrar o serviço MySQL, copiar o diretório de dados, reiniciar o serviço), muitas pessoas não querem tempo de inatividade. Minha solução favorita é instantâneos. Isso pode ser quente (para InnoDB) ou exigir um breve bloqueio (para MyISAM). Não se esqueça de incluir todos os seus dados (incluindo os ib_logfiles). Lenz fornece um bom utilitário para ajudar com isso: http://www.lenzg.net/mylvmbackup/

    Usando o MySQL Enterprise Backup

    Vantagens de usar o MySQL Enterprise Backup:

    • Backups "quentes" de tabelas InnoDB ocorrem totalmente online, sem bloquear o Backup apenas de tabelas ou espaços de tabela específicos
    • Faça backup apenas dos dados que foram alterados desde um backup anterior
    • Backup compactado - Economiza até 90% de armazenamento e muito mais.

    Referência: http://www.mysql.com/products/enterprise/backup/features.html http://www.mysql.com/products/enterprise/backup.html

    • 30
  2. Rich Schumacher
    2013-09-28T11:27:28+08:002013-09-28T11:27:28+08:00

    Eu recomendaria configurar uma réplica dedicada para usar como backup. Isso permitirá que você execute qualquer tarefa de backup sem afetar o primário. Como isso adiciona complexidade à sua arquitetura, convém monitorar o atraso de replicação para garantir que tudo esteja funcionando.

    Quanto ao processo real, você tem algumas opções sem ferramentas de terceiros. Os instantâneos podem ser feitos usando o mysqldumpcomando (supondo que você esteja usando o InnoDB): mysqldump --all-databases --single-transaction > all_databases.sql. Dependendo do tamanho dos dados, pode ser preferível desligar o MySQL e fazer backup dos arquivos de dados diretamente. Quando a réplica for reiniciada, ela reproduzirá todos os eventos que o primário recebeu durante o período em que esteve inativo. Se você estiver usando o MySQL Enterprise, o mysqlbackuputilitário faz isso.

    Backups incrementais podem ser feitos habilitando o log binário na réplica. Obviamente, isso registra apenas eventos que alteram dados, portanto, você precisará combinar isso com os instantâneos acima.

    • 8
  3. Ivan
    2022-07-12T07:21:33+08:002022-07-12T07:21:33+08:00

    Práticas universais que são aplicadas a todos os DBMS, incluindo MySQL

    • Regra 3-2-1. A Agência de Segurança Cibernética e de Infraestrutura recomenda que você:
       Keep 3 copies of any important file: 1 primary and 2 backups 
       Keep the files on 2 different media types to protect against different types of hazards
       Store 1 copy offsite (e.g., outside your home or business facility)
    
    • GFS (Grandfather-Father-Son) é uma estratégia de backup e armazenamento baseada em ciclos em que os backups são feitos diariamente, semanalmente e mensalmente (ou em uma programação semelhante). Essa política de retenção de backup permite encontrar um equilíbrio saudável entre a capacidade de recuperação de dados e os custos gastos na infraestrutura de backup.

    • Compressão. Os backups são bem compactados. Considere usar 7zip . Este utilitário permite ajustar os recursos consumidos (número de threads, número de processadores ou algoritmo de compactação).

    • Criptografia. Se o seu backup estiver criptografado, se seu armazenamento estiver comprometido, um hacker não terá acesso aos seus dados.

    • Automação. Os backups devem ser automatizados e os scripts de automação devem enviar notificações se os backups forem bem-sucedidos ou falharem.

    • Teste. É muito importante reproduzir periodicamente casos de emergência em um ambiente de teste e testar a recuperação de backups.

    • Terceirização de backup. É possível realizar um backup perfeito por conta própria, mas pode levar muitas horas tanto para escrever scripts quanto para manter esses scripts. Você não precisa fazer tudo sozinho. Existem muitos serviços pagos que cuidam dos backups.

    Boas práticas específicas para MySQL

    Escolha um método como os backups serão criados

    mysqldumpcria um backup lógico.sql em formato. Este é um utilitário padrão que é instalado junto com o MySQL Server. Essa ferramenta é boa para bancos de dados pequenos. Ele suporta Windows e Linux.

    mysqlbackup cria um backup de banco de dados físico . Este utilitário está incluído no pacote MySQL Enterprise Edition. Através da mysqlbackupferramenta, os backups são executados mais rapidamente do que via mysqldump. Esses backups só podem ser restaurados para a mesma versão do MySQL Server que o banco de dados original. É adequado para aqueles que já adquiriram o MySQL Enterprise Edition. Ele suporta Windows e Linux.

    O XtraBackup cria um backup físico . Os backups criados via XtraBackup são muito parecidos com os criados via mysqlbackup. Desenvolvido pela Percona e distribuído gratuitamente. Uma comparação de utilitários pode ser vista aqui . O Percona XtraBackup é bom para grandes bancos de dados. Ele suporta apenas Linux, mas com algum esforço também pode ser executado no Windows via docker ( link ).

    Faça backups incrementais

    Os backups incrementais permitem aumentar significativamente o número de pontos de restauração.

    Se você realizar backups via mysqldump, é recomendável fazer backup de logs binários também. Existem instruções separadas para Windows e Linux .

    mysqlbackup suporta backups incrementais. link

    O XtraBackup também suporta backups incrementais. link

    Os backups incrementais combinam bem com a estratégia de backup GFS. Backups completos podem ser feitos semanalmente e mensalmente, enquanto backups incrementais são feitos diariamente.

    Considere as características de um motor:

    InnoDB é o mecanismo padrão para MySQL. Graças ao bloqueio em nível de linha, controle de versão de linha e suporte a transações, esse é um mecanismo ideal também para backups.

    No entanto, se você usar tabelas com mecanismos alternativos, saiba como eles funcionam durante os backups. Talvez por consistência, o modo somente leitura deva ser ativado enquanto um backup está sendo executado.

    Algumas palavras sobre replicação

    Existem dois tipos de problemas que podem ocorrer com um banco de dados:

    • Danos à mídia física, como falha no servidor
    • Corrupção de dados, como exclusão acidental de dados

    A replicação protege apenas contra o primeiro problema. Se dados importantes forem excluídos, isso se espalhará imediatamente para a réplica.

    O backup protege contra ambos os cenários de falha.

    O melhor é fazer um backup da réplica, assim você vai descarregar o servidor principal.

    • 1

relate perguntas

  • Existem ferramentas de benchmarking do MySQL? [fechado]

  • Onde posso encontrar o log lento do mysql?

  • Como posso otimizar um mysqldump de um banco de dados grande?

  • Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?

  • Como um grupo pode rastrear alterações no esquema do banco de dados?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Conceder acesso a todas as tabelas para um usuário

    • 5 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve