Configurando backups automáticos do banco de dados MySQL, incluindo trava de tabela, etc - MySQL Workbench?

2

Temos um servidor virtual com acesso ssh e root completo executando o LAMP no servidor Ubuntu.

Eu tenho um pequeno computador no escritório executando o Ubuntu que não está sendo usado para nada. Eu pensei que deveria usá-lo para fazer e armazenar (uma cópia de) nossos backups de banco de dados MySQL. No entanto, como faço para fazer backup de nossos bancos de dados?

O MySQL Workbench bloqueia as tabelas para evitar erros, entre uma série de outros recursos, mas não tem planejado nenhum backup automático planejado. O MySQL Dumper não especifica que eles podem manter o banco de dados consistente.
Origem das informações deste parágrafo:

Não vejo o objetivo de executar um script php no meu servidor e enviar os backups por e-mail quando tenho acesso SSH. Como os backups são tão importantes, acho que deve haver uma maneira padrão (ou impressionante) de fazê-lo que ainda não encontrei!

Então, como faço para fazer backup de nossos dados? E, de preferência, nossos usuários, config, etc também!

    
por GrumpyTechDude 18.09.2012 / 20:23

2 respostas

0

Se você tem o MySQL instalado na máquina Ubuntu, você pode fazer o seguinte:

Suponha que o IP do Virtual é 10.1.2.30

Você pode o seguinte na máquina Ubuntu

BACKUP_FILE=/root/MySQLData.sql
MYSQL_HOST=10.1.2.30
MYSQL_USER=whateverusername
MYSQL_PASS=whateverpassword
MYSQL_CONN="-h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS}"
mysqldump ${MYSQL_CONN} --all-databases > ${BACKUP_FILE}

Você também pode crontab na máquina Ubuntu

Se você está procurando por mysqldumps consistentes, você poderia

  • use a opção --single-transaction se todos os dados forem InnoDB
  • se todos os dados forem MyISAM, execute FLUSH TABLES WITH READ LOCK; no banco de dados
  • se os dados forem MyISAM e InnoDB misturados, execute FLUSH TABLES WITH READ LOCK; e --single-transaction no banco de dados (Veja minha postagem link para algumas idéias sobre scripts que)

Experimente!

    
por 19.09.2012 / 02:35
0

O script abaixo em um arquivo e make é exe use (nome do arquivo chmod u + v), em seguida, adicione uma entrada crontab no nome do arquivo @daily do computador, e ele fará o dump e manterá um backup semanal.

 #!/bin/sh
 eightdaysago=$(date --date='7 days ago' +%Y-%m-%d-%A)
 rm -rf /backups/$eightdaysago
 # Backup the mysql Databases
 for database in $(mysql -u b4ckup -pd1psh1t --host server0.expatjob.net -e "show databases" | awk '{print $1}' | grep -v Database| grep -v information_schema | grep -v mysql | grep -v phpmyadmin | grep -v STATS)
 do
    ssh user@ip 'mysqladmin -u (user) -p(password) flush-hosts'
    mysqldump -u (user) -p(password) --lock-tables=false --host ip $database > /backups/'date +\%Y-\%m-\%d'-'date +\%A'/$database.sql
done
    
por 19.09.2012 / 08:12

Tags