{"id":4220,"date":"2015-12-09T01:50:59","date_gmt":"2015-12-09T03:50:59","guid":{"rendered":"https:\/\/www.viazap.com.br\/?p=4220"},"modified":"2015-12-09T01:50:59","modified_gmt":"2015-12-09T03:50:59","slug":"fazendo-backup-do-seu-mysql-com-api-do-dropbox","status":"publish","type":"post","link":"https:\/\/blog.clusterweb.com.br\/?p=4220","title":{"rendered":"FAZENDO BACKUP DO SEU MYSQL COM API DO DROPBOX"},"content":{"rendered":"<h1>CONFIGURANDO O AMBIENTE<\/h1>\n<p>&nbsp;<\/p>\n<div>\u00c9 fato que devemos ter backups \u00edntegros das nossas aplica\u00e7\u00f5es e servidores. Um backup confi\u00e1vel pode ser a diferen\u00e7a entre voc\u00ea ter que trabalhar durante algumas horas ou alguns dias ou at\u00e9 mesmo a diferen\u00e7a entre o sucesso ou a fal\u00eancia de uma empresa. Nada \u00e9 mais frustrante, desmotivante e caro do que ter que refazer todo um sistema por uma simples falha no seu backup.<\/p>\n<p>Para que o nosso script consiga usar a API, precisamos instalar o curl. O <em>curl<\/em> \u00e9 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\u00e7\u00e3o de usu\u00e1rio e senha (Basic, Plain, Digest, CRAM- MD5, NTLM, Negotiate e Kerberos) , tunneling proxy e muito mais.<\/p>\n<p>Para instal\u00e1-lo, basta executar o comando:<\/p>\n<p><strong># yum install curl<\/strong><\/p>\n<p>Voc\u00ea precisar\u00e1 do <em>git<\/em> para efetuar o download dos scripts. Para quem n\u00e3o conhece, o git \u00e9 um sistema de controle de vers\u00e3o, gratuito e open source. Para voc\u00ea trabalhar com o <em>GitHub<\/em> ou <em>BitBucket<\/em>, voc\u00ea precisa ter o git instalado em sua m\u00e1quina. Ent\u00e3o vamos instal\u00e1-lo.<\/p>\n<p><strong># yum install git<\/strong><\/p>\n<p>Com o curl e git instalados, precisamos configurar o nosso usu\u00e1rio de MySQL que far\u00e1 os dumps dos nossos bancos via mysqldump. O<em>mysqldump<\/em> \u00e9 um utilit\u00e1rio do MySQL que executa backups l\u00f3gicos, produzindo um conjunto de instru\u00e7\u00f5es SQL que podem ser executadas para reproduzir as defini\u00e7\u00f5es 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\u00e9m pode gerar a sa\u00edda em formato CSV, ou em formato XML.<\/p>\n<p>A configura\u00e7\u00e3o do MySQL \u00e9 r\u00e1pida e o usu\u00e1rio ter\u00e1 apenas permiss\u00e3o de leitura. Lembrando que por motivos \u00f3bvios de seguran\u00e7a, devemos liberar o acesso apenas para localhost ou para o IP do servidor que se conectar\u00e1 e far\u00e1 os backups.<\/p>\n<p>mysql&gt; <strong>GRANT SELECT, SHOW VIEW, TRIGGER, LOCK TABLES, RELOAD, SUPER, FILE ON *.* TO backup@localhost IDENTIFIED BY &#8216;SUASENHA&#8217;;<\/strong><\/p>\n<p>Com o shell e o MySQL prontos para fazer o backup, vamos ao pr\u00f3ximo passo, que \u00e9 o Dropbox!<\/p>\n<\/div>\n<div><\/div>\n<div><\/div>\n<p><!--more--><\/p>\n<p>&nbsp;<\/p>\n<h1>CRIANDO O APP NO DROPBOX<\/h1>\n<p>&nbsp;<\/p>\n<div>Eu tenho certeza que voc\u00ea usa, usou ou j\u00e1 ouviu falar do <a href=\"https:\/\/www.dropbox.com\/\" target=\"_blank\" rel=\"nofollow\">Dropbox<\/a>. Al\u00e9m de ser uma excelente ferramenta de armazenamento, n\u00f3s podemos compartilhar dados com outras pessoas. \u00c9 poss\u00edvel trabalhar via Shell Script, Node.js, Python etc, sem falar no pre\u00e7o que \u00e9 muito bom. A forma com que vamos trabalhar com o Dropbox aqui ser\u00e1 um pouco diferente da que voc\u00ea est\u00e1 acostumado.<\/p>\n<p>Acesse a \u00e1rea de <a href=\"https:\/\/www.dropbox.com\/developers\" target=\"_blank\" rel=\"nofollow\">developers do Dropbox<\/a> e clique em &#8220;My apps&#8221;. Ser\u00e1 solicitado o seu login, basta autenticar ou criar uma nova conta. Agora logado em seu painel, voc\u00ea deve ir em &#8220;Create app&#8221;. Aparecer\u00e1 uma tela igual a esta:<\/p>\n<div class=\"figura\"><a href=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/appdropbox.jpg\" target=\"_blank\" rel=\"nofollow\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/thumb_appdropbox.jpg\" alt=\"Linux: Fazendo backup do seu MySQL com API do Dropbox\" width=\"500\" height=\"442\" border=\"0\" \/><\/a><\/div>\n<p>A minha configura\u00e7\u00e3o ficou com o Dropbox API que \u00e9 a vers\u00e3o free, na segunda op\u00e7\u00e3o liberei o acesso apenas ao diret\u00f3rio que ser\u00e1 criado para o nosso app e a terceira op\u00e7\u00e3o eu coloquei um nome para o meu app. Anote a sua <em>App Key<\/em> e <em>App Secret<\/em>.<\/p>\n<p>Agora vamos ao script.<\/p>\n<\/div>\n<p>&nbsp;<\/p>\n<h1>OS SCRIPTS<\/h1>\n<p>&nbsp;<\/p>\n<div>A <em>API do Dropbox<\/em> n\u00e3o \u00e9 dif\u00edcil de ser usada, a documenta\u00e7\u00e3o \u00e9 muito boa. \u00c9 atrav\u00e9s da API que trabalharemos com o Dropbox para armazenar os nossos backups. Para nos comunicarmos com a API do Dropbox, iremos utilizar um shell criado pelo <em>Andrea Fabrizi<\/em> e que pode ser clonado do git do MySQL Box. Para baixar e instalar, siga os passos:<\/p>\n<p><strong># cd \/usr\/local\/bin<br \/>\n# git clone https:\/\/github.com\/mysqlbox\/Dropbox-Uploader.git<br \/>\n# cd Dropbox-Uploader<br \/>\n# chmod +x dropbox_uploader.sh<br \/>\n# .\/dropbox_uploades.sh<\/strong><\/p>\n<p>Executando o shell script, ser\u00e3o solicitadas algumas informa\u00e7\u00f5es, preencha-as, acesse a URL com o token e aperte enter.<\/p>\n<p><strong># .\/dropbox_uploader.sh<\/strong><br \/>\n<samp>This is the first time you run this script.<\/p>\n<p>1) Open the following URL in your Browser, and log in using your account: https:\/\/www.dropbox.com\/developers\/apps<br \/>\n2) Click on &#8220;Create App&#8221;, then select &#8220;Dropbox API app&#8221;<br \/>\n3) Now go on with the configuration, choosing the app permissions and access restrictions to your DropBox folder<br \/>\n4) Enter the &#8220;App Name&#8221; that you prefer (e.g. MyUploader26630258426034)<\/p>\n<p>Now, click on the &#8220;Create App&#8221; button.<br \/>\nWhen your new App is successfully created, please type the<br \/>\nApp Key, App Secret and the Permission type shown in the confirmation page:<\/p>\n<p># App key: SUAAPPKEY<br \/>\n# App secret: SUAAPPSECRET<\/p>\n<p>Permission type:<br \/>\nApp folder [a]: If you choose that the app only needs access to files it creates<br \/>\nFull Dropbox [f]: If you choose that the app needs access to files already on Dropbox<\/p>\n<p># Permission type [a\/f]: <strong>a<\/strong><\/p>\n<p>&gt; App key is SUAAPPKEY, App secret is SUAAPPSECRET and Access level is App Folder. Looks ok? [y\/n]: <strong>y<\/strong><\/p>\n<p>&gt; Token request&#8230; OK<\/p>\n<p>Please open the following URL in your browser, and allow Dropbox Uploader<br \/>\nto access your DropBox folder:<\/p>\n<p>&#8211;&gt; https:\/\/www.dropbox.com\/1\/oauth\/authorize?oauth_token=TOKEN<\/p>\n<p>Press enter when done&#8230;<\/p>\n<p>&gt; Access Token request&#8230; OK<\/p>\n<p>Setup completed!<\/samp><\/p>\n<p>Com o Dropbox-Uploader configurado, vamos criar o script que far\u00e1 o dump dos seus bancos de dados. Este script tamb\u00e9m est\u00e1 no reposit\u00f3rio do GituHub.<\/p>\n<p><strong># cd \/usr\/local\/bin<br \/>\n# git clone https:\/\/github.com\/mysqlbox\/MySQL-Backup.git<br \/>\n# chmod 700 MySQL-Backup\/Backup_MySQL.sh<\/strong><\/p>\n<p>Dentro do arquivo Shell, voc\u00ea deve colocar o usu\u00e1rio e senha do seu usu\u00e1rio de backup. Lembrando que este usu\u00e1rio n\u00e3o pode ter privil\u00e9gios de administrador ou de escrita, apenas leitura.<\/p>\n<div class=\"codigo\">USER=&#8221;&#8221; <span class=\"comentario\">#Usuario do backup<\/span><br \/>\nSECRET=&#8221;&#8221; <span class=\"comentario\">#Senha do usuario<\/span><\/div>\n<\/div>\n<p>&nbsp;<\/p>\n<h1>AGENDAMENTO E LOG<\/h1>\n<p>&nbsp;<\/p>\n<div>Ap\u00f3s a configura\u00e7\u00e3o do script, basta adicionar uma rotina no cron. Para quem n\u00e3o conhece, o cron \u00e9 um sistema de agendamento de tarefas do <a href=\"http:\/\/www.vivaolinux.com.br\/linux\/\">Linux<\/a>. \u00c9 nele que voc\u00ea configurar\u00e1 as rotinas do backup ou execu\u00e7\u00e3o de algum script shell, perl, python, php etc. Sua utiliza\u00e7\u00e3o e sintaxe s\u00e3o bem simples, f\u00e1ceis de decorar e usar.<\/p>\n<p><strong># crontab -e<\/strong><\/p>\n<p>Sintaxe do cron:<\/p>\n<pre>    * * * * * \/usr\/local\/bin\/MySQL-Backup\/Backup_MySQL.sh\r\n    | | | | | |\r\n    | | | | | +----- Comando a ser executado\r\n    | | | | +------- Dia da semana (0 - 7) (0 ou 8 \u00e9 domingo)\r\n    | | | +--------- M\u00eas (1 - 12)\r\n    | | +----------- Dia do m\u00eas (1 - 31)\r\n    | +------------- Hora (0 - 23)\r\n    +--------------- Minuto (0 - 59)\r\n\r\n<\/pre>\n<p>Com o comando <strong>crontab -e<\/strong> voc\u00ea abrir\u00e1 o terminal de edi\u00e7\u00e3o, basta apertar &#8220;insert&#8221; ou &#8220;i&#8221;, inserir a rotina desejada, salvar o arquivo apertando &#8220;<strong>ESC<\/strong>&#8221; &#8220;<strong>:wq!<\/strong>&#8221; (igual ao vi ou vim) e reiniciar o servi\u00e7o com o systemctl restart crond.<\/p>\n<div class=\"codigo\">00 01 * * * \/usr\/local\/bin\/MySQL-Backup\/Backup_MySQL.sh<\/div>\n<p>Fique atento aos logs do MySQL-Backup que est\u00e3o armazenados em \/var\/log\/mysql-backup.log.<\/p>\n<p>Caso queira ter um controle destes logs, para que n\u00e3o ocupem espa\u00e7o em disco sem necessidade, voc\u00ea pode utilizar o logrotate. O logrotate \u00e9 uma ferramenta que faz o rotacionamento de logs no Linux. Com ele voc\u00ea consegue limitar o tamanho dos logs, manter logs por dias espec\u00edficos, compactar e outras diversas op\u00e7\u00f5es. Para efetuar esta configura\u00e7\u00e3o, edite o arquivo <em>\/etc\/logrotate.conf<\/em> e adicione no final do arquivo.<\/p>\n<div class=\"codigo\">\n<pre>    \/var\/log\/mysql-backup.log {\r\n            daily                   <span class=\"comentario\">#Cria um log por dia<\/span>\r\n            create 0600 root root   <span class=\"comentario\">#Permiss\u00e3o do arquivo de log<\/span>\r\n            rotate 4                <span class=\"comentario\">#Quantos logs antigos ser\u00e3o mantidos<\/span>\r\n    }<\/pre>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>CONFIGURANDO O AMBIENTE &nbsp; \u00c9 fato que devemos ter backups \u00edntegros das nossas aplica\u00e7\u00f5es e servidores. Um backup confi\u00e1vel pode ser a diferen\u00e7a entre voc\u00ea ter que trabalhar durante algumas horas ou alguns dias ou at\u00e9 mesmo a diferen\u00e7a entre o sucesso ou a fal\u00eancia de uma empresa. Nada \u00e9 mais frustrante, desmotivante e caro [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[455,477,91,1,730,830,725,42,51,495,514,271,501,127],"tags":[1001,248,349,366,525,1000,133,855],"class_list":["post-4220","post","type-post","status-publish","format-standard","hentry","category-apache2","category-backup-2","category-banco-de-dados","category-viazap","category-clusterweb","category-debian","category-hospedagem","category-leitura-recomendada","category-linux-linuxrs","category-profissional-de-ti","category-programacao","category-seguranca-2","category-shell-script","category-sistemas-de-armazenamento","tag-api","tag-backup","tag-com","tag-do","tag-dropbox","tag-fazendo","tag-mysql","tag-seu"],"_links":{"self":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4220","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4220"}],"version-history":[{"count":1,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4220\/revisions"}],"predecessor-version":[{"id":4221,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4220\/revisions\/4221"}],"wp:attachment":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4220"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4220"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4220"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}