Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Backup automatizado ou regular de dados mysql

CSV e SELECT INTO OUTFILE


http://dev.mysql.com/doc/refman /5.7/en/select-into.html

SELECT ... INTO OUTFILE grava as linhas selecionadas em um arquivo. Terminadores de coluna e linha podem ser especificados para produzir um formato de saída específico.

Aqui está um exemplo completo:
SELECT * FROM my_table INTO OUTFILE '/tmp/my_table.csv'
  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
  LINES TERMINATED BY '\n'
  FROM test_table;

O arquivo é salvo no servidor e o caminho escolhido precisa ser gravável. Embora essa consulta possa ser executada por meio de PHP e uma solicitação da Web, ela é melhor executada por meio do console mysql.

Os dados exportados dessa maneira podem ser importados para outro banco de dados usando CARREGAR INFIL DE DADOS

Embora esse método seja superior ao iterar por meio de um conjunto de resultados e salvar em um arquivo linha por linha, não é tão bom quanto usar...

mysqldump


mysqldump é superior a SELECT INTO OUTFILE de várias maneiras, produzir CSV é apenas uma das muitas coisas que esse comando pode fazer.

O utilitário cliente mysqldump executa backups lógicos, produzindo um conjunto de instruções SQL que podem ser executadas para reproduzir as definições de objetos do banco de dados originais e os dados da tabela. Ele despeja um ou mais bancos de dados MySQL para backup ou transferência para outro servidor SQL. O comando mysqldump também pode gerar saída em CSV, outro texto delimitado ou formato XML.

Idealmente, o mysqldump deve ser invocado a partir do seu shell. É possível usar exec em php para executá-lo, mas como a produção do dump pode levar muito tempo dependendo da quantidade de dados, e os scripts php geralmente são executados apenas por 30 segundos, você precisaria executá-lo como um processo em segundo plano.

o mysqldump não está isento de problemas.

Não se destina a ser uma solução rápida ou escalável para fazer backup de quantidades substanciais de dados. Com grandes tamanhos de dados, mesmo que a etapa de backup leve um tempo razoável, a restauração dos dados pode ser muito lenta, pois a repetição das instruções SQL envolve E/S de disco para inserção, criação de índice e assim por diante.

Um exemplo clássico veja esta pergunta: Falha do servidor no backup do MySQL usando python onde um mysqldump parece começar antes que o anterior termine e torne o site completamente sem resposta.

Replicação do MySQL


A replicação permite que os dados de um servidor de banco de dados MySQL (o mestre) sejam copiados para um ou mais servidores de banco de dados MySQL (os escravos). A replicação é assíncrona por padrão; os escravos não precisam estar conectados permanentemente para receber atualizações do mestre. Dependendo da configuração, você pode replicar todos os bancos de dados, bancos de dados selecionados ou mesmo tabelas selecionadas dentro de um banco de dados.

Assim, replicação opera de forma diferente de SELECT INTO OUTFILE ou msyqldump É ideal manter os dados na cópia local quase atualizados (teria dito perfeitamente em sincronia, mas há algo chamado lag escravo) Por outro lado, se você usar uma tarefa agendada para executar mysqldump uma vez a cada 24 horas. Imagine o que pode acontecer se o servidor travar após 23 horas?

Cada vez que você executa o mysqldump, você está produzindo uma grande quantidade de dados, continue fazendo isso regularmente e você encontrará seu disco rígido cheio ou suas contas de armazenamento de arquivos estão atingindo o teto. Com a replicação, apenas as alterações são passadas para o servidor (usando o chamado binlog)

XtraBackup


Uma alternativa à replicação é usar o Percona XtraBackup .

Percona XtraBackup é um utilitário de backup a quente de código aberto para servidores baseados em MySQL que não bloqueia seu banco de dados durante o backup.

Embora por Percona, é compatível com Mysql e Mariadb. Ele tem a capacidade de fazer backups incrementais, cuja falta é a maior limitação do mysqldump.