Fazendo backup do seu MySQL com API do Dropbox

Pessoal, hoje eu vou mostrar para vocês como criar uma rotina de backup do seu MySQL, utilizando o shell como script de backup e a API do Dropbox como forma de armazenamento dos dados.

[ Hits: 10.470 ]

Por: Allan Moraes em 08/12/2015


Configurando o ambiente



É fato que devemos ter backups íntegros das nossas aplicações e servidores. Um backup confiável pode ser a diferença entre você ter que trabalhar durante algumas horas ou alguns dias ou até mesmo a diferença entre o sucesso ou a falência de uma empresa. Nada é mais frustrante, desmotivante e caro do que ter que refazer todo um sistema por uma simples falha no seu backup.

Artigo previamente publicado em meu blog: www.mysqlbox.com.br

Para que o nosso script consiga usar a API, precisamos instalar o curl. O curl é uma ferramenta de linha de comando open source que transfere dados para uma URL, suportando DICT, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMTP, SMTPS, Telnet e TFTP. Suporta certificados SSL, HTTP POST, HTTP PUT, upload FTP, proxies, HTTP/2, cookies, autenticação de usuário e senha (Basic, Plain, Digest, CRAM- MD5, NTLM, Negotiate e Kerberos) , tunneling proxy e muito mais.

Para instalá-lo, basta executar o comando:

# yum install curl

Você precisará do git para efetuar o download dos scripts. Para quem não conhece, o git é um sistema de controle de versão, gratuito e open source. Para você trabalhar com o GitHub ou BitBucket, você precisa ter o git instalado em sua máquina. Então vamos instalá-lo.

# yum install git

Com o curl e git instalados, precisamos configurar o nosso usuário de MySQL que fará os dumps dos nossos bancos via mysqldump. O mysqldump é um utilitário do MySQL que executa backups lógicos, produzindo um conjunto de instruções SQL que podem ser executadas para reproduzir as definições de objeto de banco de dados originais e os dados da tabela. Ele despeja um ou mais bancos de dados MySQL para backup. O comando mysqldump também pode gerar a saída em formato CSV, ou em formato XML.

A configuração do MySQL é rápida e o usuário terá apenas permissão de leitura. Lembrando que por motivos óbvios de segurança, devemos liberar o acesso apenas para localhost ou para o IP do servidor que se conectará e fará os backups.

mysql> GRANT SELECT, SHOW VIEW, TRIGGER, LOCK TABLES, RELOAD, SUPER, FILE ON *.* TO [email protected] IDENTIFIED BY 'SUASENHA';

Com o shell e o MySQL prontos para fazer o backup, vamos ao próximo passo, que é o Dropbox!

    Próxima página

Páginas do artigo
   1. Configurando o ambiente
   2. Criando o APP no Dropbox
   3. Os scripts
   4. Agendamento e log
Outros artigos deste autor

Blindando o MySQL: Configurações de segurança

Leitura recomendada

KeepAlive para conexão discada (ou não)

XML de NF-e ou CT-e ou MDF-e - Como validar usando os pacotes de esquemas do Governo

Redundância de links - Mon + Shell Script

Como configurar o servidor de correio eletrônico Postfix

Terminal Didático - Shell Script via WEB (PHP + Bootstrap)

  
Comentários
[1] Comentário enviado por fabio em 08/12/2015 - 14:01h

Não conhecia o Dropbox-Uploader, ele me será muito útil! Show.

[2] Comentário enviado por MySQLBox em 08/12/2015 - 14:19h


[1] Comentário enviado por fabio em 08/12/2015 - 14:01h

Não conhecia o Dropbox-Uploader, ele me será muito útil! Show.


Que bom Fabio! Na dúvida é só me chamar...

[3] Comentário enviado por dipsystem em 13/07/2016 - 00:31h

ola amigo tenho uma duvida seria possível me ajudar? quando verifico os logs me reporta a seguente mensagem

Wed Jul 13 00:07:01 BRT 2016 - Fazendo backup do banco information_schema
mysqldump: Got error: 1044: Access denied for user 'backup'@'localhost' to database 'information_schema' when using LOCK TABLES
Wed Jul 13 00:07:01 BRT 2016 - Fazendo backup do banco dipaddress
Wed Jul 13 00:07:01 BRT 2016 - Fazendo backup do banco dipsystem
Wed Jul 13 00:07:02 BRT 2016 - Fazendo backup do banco mysql
-- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.
Wed Jul 13 00:07:02 BRT 2016 - Fazendo backup do banco performance_schema
mysqldump: Got error: 1142: SELECT,LOCK TABL command denied to user 'backup'@'localhost' for table 'cond_instances' when using LOCK TABLES
Wed Jul 13 00:07:02 BRT 2016 - Fazendo backup do banco phpmyadmin
Wed Jul 13 00:07:02 BRT 2016 - Fazendo backup do banco tracker
mysqldump: Got error: 1449: The user specified as a definer ('anderson'@'%') does not exist when using LOCK TABLES
Wed Jul 13 00:07:02 BRT 2016 - Fazendo backup do banco tracker_novo
Dropbox Uploader v0.16
Andrea Fabrizi - [email protected]

Usage: /usr/local/bin/Dropbox-Uploader/dropbox_uploader.sh COMMAND [PARAMETERS]...

Commands:
upload <LOCAL_FILE/DIR ...> <REMOTE_FILE/DIR>
download <REMOTE_FILE/DIR> [LOCAL_FILE/DIR]
delete <REMOTE_FILE/DIR>
move <REMOTE_FILE/DIR> <REMOTE_FILE/DIR>
copy <REMOTE_FILE/DIR> <REMOTE_FILE/DIR>
mkdir <REMOTE_DIR>
list [REMOTE_DIR]
share <REMOTE_FILE>
saveurl <URL> <REMOTE_DIR>
info
unlink

Optional parameters:
-f <FILENAME> Load the configuration file from a specific file
-s Skip already existing files when download/upload. Default: Overwrite
-d Enable DEBUG mode
-q Quiet mode. Don't show messages
-p Show cURL progress meter
-k Doesn't check for SSL certificates (insecure)

For more info and examples, please see the README file.


porem não consigo encontrar as tabelas na pasta aonde seria o repositório dos backups e nem na minha pagina do dropbox aonde o banco deveria ser importado estou erando alguma coisa ?? aguardo sua ajuda amigo con satisfação muito obrigado...

[4] Comentário enviado por MySQLBox em 13/07/2016 - 13:33h


[3] Comentário enviado por dipsystem em 13/07/2016 - 00:31h

ola amigo tenho uma duvida seria possível me ajudar? quando verifico os logs me reporta a seguente mensagem

Wed Jul 13 00:07:01 BRT 2016 - Fazendo backup do banco information_schema
mysqldump: Got error: 1044: Access denied for user 'backup'@'localhost' to database 'information_schema' when using LOCK TABLES
Wed Jul 13 00:07:01 BRT 2016 - Fazendo backup do banco dipaddress
Wed Jul 13 00:07:01 BRT 2016 - Fazendo backup do banco dipsystem
Wed Jul 13 00:07:02 BRT 2016 - Fazendo backup do banco mysql
-- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.
Wed Jul 13 00:07:02 BRT 2016 - Fazendo backup do banco performance_schema
mysqldump: Got error: 1142: SELECT,LOCK TABL command denied to user 'backup'@'localhost' for table 'cond_instances' when using LOCK TABLES
Wed Jul 13 00:07:02 BRT 2016 - Fazendo backup do banco phpmyadmin
Wed Jul 13 00:07:02 BRT 2016 - Fazendo backup do banco tracker
mysqldump: Got error: 1449: The user specified as a definer ('anderson'@'%') does not exist when using LOCK TABLES
Wed Jul 13 00:07:02 BRT 2016 - Fazendo backup do banco tracker_novo
Dropbox Uploader v0.16
Andrea Fabrizi - [email protected]

Usage: /usr/local/bin/Dropbox-Uploader/dropbox_uploader.sh COMMAND [PARAMETERS]...

Commands:
upload &lt;LOCAL_FILE/DIR ...&gt; &lt;REMOTE_FILE/DIR&gt;
download &lt;REMOTE_FILE/DIR&gt; [LOCAL_FILE/DIR]
delete &lt;REMOTE_FILE/DIR&gt;
move &lt;REMOTE_FILE/DIR&gt; &lt;REMOTE_FILE/DIR&gt;
copy &lt;REMOTE_FILE/DIR&gt; &lt;REMOTE_FILE/DIR&gt;
mkdir &lt;REMOTE_DIR&gt;
list [REMOTE_DIR]
share &lt;REMOTE_FILE&gt;
saveurl &lt;URL&gt; &lt;REMOTE_DIR&gt;
info
unlink

Optional parameters:
-f &lt;FILENAME&gt; Load the configuration file from a specific file
-s Skip already existing files when download/upload. Default: Overwrite
-d Enable DEBUG mode
-q Quiet mode. Don't show messages
-p Show cURL progress meter
-k Doesn't check for SSL certificates (insecure)

For more info and examples, please see the README file.


porem não consigo encontrar as tabelas na pasta aonde seria o repositório dos backups e nem na minha pagina do dropbox aonde o banco deveria ser importado estou erando alguma coisa ?? aguardo sua ajuda amigo con satisfação muito obrigado...


Amigo, de uma olhada nas permissões que o usuário possui: SHOW GRANTS FOR [email protected] \G
Qual a versão do teu MySQL?

[5] Comentário enviado por dipsystem em 13/07/2016 - 20:23h

oi amigo obrigado por responder...

estou usando o ubuntu 12.04 com o mysql 5.5.46-0ubuntu0.12.04.2
sobre as permissões eu atribui todas... poderia me ajudar pelo whats - 54 81341096

agradeceria muito meu amigo


Contribuir com comentário