{"id":5309,"date":"2024-01-10T19:36:59","date_gmt":"2024-01-10T22:36:59","guid":{"rendered":"https:\/\/blog.clusterweb.com.br\/?p=5309"},"modified":"2024-01-10T19:36:59","modified_gmt":"2024-01-10T22:36:59","slug":"fazer-backup-e-restaurar-bancos-de-dados-mysql-com-mysqldump","status":"publish","type":"post","link":"https:\/\/blog.clusterweb.com.br\/?p=5309","title":{"rendered":"Fazer backup e restaurar bancos de dados MySQL com Mysqldump"},"content":{"rendered":"<p><span>Este tutorial explica como fazer backup e restaurar bancos de dados MySQL ou MariaDB a partir da linha de comando usando o utilit\u00e1rio mysqldump.<\/span><\/p>\n<p><span>Os arquivos de backup criados pelo utilit\u00e1rio mysqldump s\u00e3o basicamente um conjunto de instru\u00e7\u00f5es SQL que podem ser usadas para recriar o banco de dados original.<\/span><\/p>\n<p><span>Se voc\u00ea n\u00e3o fizer backup de seus bancos de dados, um bug de software ou uma falha no disco r\u00edgido poder\u00e1 ser desastroso.\u00a0Para ajudar a economizar muito tempo e frustra\u00e7\u00e3o, \u00e9 altamente recomend\u00e1vel que voc\u00ea tome o cuidado de fazer backup regularmente de seus bancos de dados MySQL.<\/span><\/p>\n<p><span>Voc\u00ea tamb\u00e9m pode usar o utilit\u00e1rio mysqldump para transferir seu banco de dados MySQL para outro servidor MySQL.<\/span><br \/>\n<span>Sintaxe do comando mysqldump<\/span><\/p>\n<p><span>Antes de entrarmos em como usar o comando mysqldump, vamos come\u00e7ar revisando a sintaxe b\u00e1sica.<\/span><\/p>\n<p><!--more--><br \/>\n<span>As express\u00f5es do utilit\u00e1rio mysqldump assumem o seguinte formato:<\/span><\/p>\n<div class=\"codebox\">\n<pre><code>mysqldump [options] &gt; file.sql<\/code><\/pre>\n<\/div>\n<ul>\n<li><span>op\u00e7\u00f5es &#8211;\u00a0<\/span><a class=\"postlink\" href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/mysqldump.html#mysqldump-option-summary\"><span>As op\u00e7\u00f5es do mysqldump<\/span><\/a><\/li>\n<\/ul>\n<ul>\n<li><span>file.sql &#8211; O arquivo de despejo (backup)<\/span><\/li>\n<\/ul>\n<p><strong>Fa\u00e7a backup de um \u00fanico banco de dados MySQL<\/strong><\/p>\n<p><span>Para criar um backup de um banco de dados chamado database_name usando o usu\u00e1rio root e salv\u00e1-lo em um arquivo chamado database_name.sql, voc\u00ea executaria o seguinte comando:<\/span><\/p>\n<div class=\"codebox\">\n<pre><code>mysqldump -u root -p database_name &gt; database_name.sql<\/code><\/pre>\n<\/div>\n<p><span>Voc\u00ea ser\u00e1 solicitado a inserir a senha root.\u00a0Entre, pressione Enter e o processo de despejo ser\u00e1 iniciado.\u00a0Dependendo do tamanho do banco de dados, o processo pode demorar algum tempo.<\/span><\/p>\n<p><span>Se voc\u00ea estiver logado como o mesmo usu\u00e1rio que est\u00e1 usando para realizar a exporta\u00e7\u00e3o e esse usu\u00e1rio n\u00e3o exigir uma senha, voc\u00ea poder\u00e1 omitir as op\u00e7\u00f5es -u e -p:<\/span><\/p>\n<div class=\"codebox\">\n<pre><code>mysqldump database_name &gt; database_name.sql<\/code><\/pre>\n<\/div>\n<p><strong>Fa\u00e7a backup de v\u00e1rios bancos de dados MySQL<\/strong><\/p>\n<p><span>Para fazer backup de v\u00e1rios bancos de dados MySQL com um comando, voc\u00ea precisa usar a op\u00e7\u00e3o &#8211;database seguida pela lista de bancos de dados dos quais deseja fazer backup.\u00a0Cada nome de banco de dados deve ser separado por espa\u00e7o.<\/span><\/p>\n<div class=\"codebox\">\n<pre><code>mysqldump -u root -p --database database_name_a database_name_b &gt; databases_a_b.sql<\/code><\/pre>\n<\/div>\n<p><span>O comando acima criar\u00e1 um arquivo dump contendo os dois bancos de dados.<\/span><\/p>\n<p><strong>Fa\u00e7a backup de todos os bancos de dados MySQL<\/strong><\/p>\n<p><span>Para fazer backup de todos os bancos de dados MySQL, voc\u00ea usaria a op\u00e7\u00e3o &#8211;all-databases:<\/span><\/p>\n<div class=\"codebox\">\n<pre><code>mysqldump -u root -p --all-databases &gt; all_databases.sql<\/code><\/pre>\n<\/div>\n<p><span>Assim como no exemplo anterior, o comando acima criar\u00e1 um \u00fanico arquivo de despejo contendo todos os bancos de dados.<\/span><\/p>\n<p><span>Fa\u00e7a backup de todos os bancos de dados MySQL em arquivos separados<\/span><\/p>\n<p><span>O utilit\u00e1rio mysqldump n\u00e3o fornece uma op\u00e7\u00e3o para fazer backup de todos os bancos de dados em arquivos separados, mas conseguimos isso facilmente com um simples loop FOR bash:<\/span><\/p>\n<div class=\"codebox\">\n<pre><code>for DB in $(mysql -e 'show databases' -s --skip-column-names); do\r\n    mysqldump $DB &gt; \"$DB.sql\";\r\ndone<\/code><\/pre>\n<\/div>\n<p><span>O comando acima criar\u00e1 um arquivo de despejo separado de todos os bancos de dados usando o nome do banco de dados como nome do arquivo.<\/span><\/p>\n<p><strong>Crie um backup de banco de dados MySQL compactado<\/strong><\/p>\n<p><span>Se o tamanho do banco de dados for muito grande, \u00e9 uma boa ideia compactar a sa\u00edda.\u00a0Para fazer isso, basta canalizar a sa\u00edda para o utilit\u00e1rio gzip e redirecion\u00e1-la para um arquivo conforme mostrado abaixo:<\/span><\/p>\n<div class=\"codebox\">\n<pre><code>mysqldump database_name &gt; | gzip &gt; database_name.sql.gz<\/code><\/pre>\n<\/div>\n<p><strong>Crie um backup com carimbo de data\/hora<\/strong><\/p>\n<p><span>Se quiser manter mais de um backup no mesmo local, voc\u00ea gostaria de adicionar a data ao nome do arquivo de backup:<\/span><\/p>\n<div class=\"codebox\">\n<pre><code>mysqldump  database_name &gt; database_name-$(date +%Y%m%d).sql<\/code><\/pre>\n<\/div>\n<p><span>O comando acima criar\u00e1 um arquivo com o seguinte formato database_name-20180617.sql<\/span><\/p>\n<p><span>Se voc\u00ea estiver usando o cronjob para automatizar os backups de seus bancos de dados, voc\u00ea tamb\u00e9m pode usar o seguinte comando para excluir quaisquer backups com mais de 30 dias:<\/span><\/p>\n<div class=\"codebox\">\n<pre><code>find \/path\/to\/backups -type f -name \"*.sql\" -mtime +30 -delete<\/code><\/pre>\n<\/div>\n<p><span>Claro que voc\u00ea precisa ajustar o comando de acordo com o local do backup e os nomes dos arquivos.\u00a0Para saber mais sobre o comando find, consulte nosso guia Como encontrar arquivos no Linux usando a linha de comando.<\/span><\/p>\n<p><strong>Restaurando um dump do MySQL<\/strong><\/p>\n<p><span>Voc\u00ea pode restaurar um dump do MySQL usando a ferramenta mysql.\u00a0Na maioria dos casos, voc\u00ea precisar\u00e1 criar um banco de dados para importar.\u00a0Se o banco de dados j\u00e1 existir, primeiro voc\u00ea precisa exclu\u00ed-lo.<\/span><\/p>\n<p><span>No exemplo a seguir, o primeiro comando criar\u00e1 um banco de dados chamado database_name e, em seguida, importar\u00e1 o dump database_name.sql para ele:<\/span><\/p>\n<div class=\"codebox\">\n<pre><code>mysql -u root -p -e \"create database database_name\";\r\nmysql -u root -p database_name &lt; database_name.sql<\/code><\/pre>\n<\/div>\n<p><strong>Restaurar um \u00fanico banco de dados MySQL a partir de um dump completo do MySQL<\/strong><\/p>\n<p><span>Se voc\u00ea fez backup de todos os seus bancos de dados usando a op\u00e7\u00e3o -all-databases e deseja restaurar um \u00fanico banco de dados a partir de um arquivo de backup que cont\u00e9m v\u00e1rios bancos de dados, use a op\u00e7\u00e3o &#8211;one-database conforme mostrado abaixo:<\/span><\/p>\n<div class=\"codebox\">\n<pre><code>mysql --one-database database_name &lt; all_databases.sql<\/code><\/pre>\n<\/div>\n<p><strong>Exportar e importar um banco de dados MySQL em um comando<\/strong><\/p>\n<p><span>Em vez de criar um arquivo de despejo de um banco de dados e depois importar o backup para outro banco de dados MySQL, voc\u00ea pode usar o seguinte one-liner:<\/span><\/p>\n<div class=\"codebox\">\n<pre><code>mysqldump -u root -p database_name | mysql -h remote_host -u root -p remote_database_name<\/code><\/pre>\n<\/div>\n<p><span>O comando acima ir\u00e1 canalizar a sa\u00edda para um cliente mysql no host remoto e ir\u00e1 import\u00e1-la para um banco de dados chamado remote_database_name.\u00a0Antes de executar o comando, certifique-se de que o banco de dados j\u00e1 exista no servidor remoto.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Este tutorial explica como fazer backup e restaurar bancos de dados MySQL ou MariaDB a partir da linha de comando usando o utilit\u00e1rio mysqldump. Os arquivos de backup criados pelo utilit\u00e1rio mysqldump s\u00e3o basicamente um conjunto de instru\u00e7\u00f5es SQL que podem ser usadas para recriar o banco de dados original. Se voc\u00ea n\u00e3o fizer backup [&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":[477,91,1082,730,1,830,725,42,51,1411,1301],"tags":[248,1599,349,1418,353,351,1581,133,1600,1598],"class_list":["post-5309","post","type-post","status-publish","format-standard","hentry","category-backup-2","category-banco-de-dados","category-centos-7-rhel-7","category-clusterweb","category-viazap","category-debian","category-hospedagem","category-leitura-recomendada","category-linux-linuxrs","category-mysql","category-nuvens","tag-backup","tag-bancos","tag-com","tag-dados","tag-de","tag-e","tag-fazer","tag-mysql","tag-mysqldump","tag-restaurar"],"_links":{"self":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/5309","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=5309"}],"version-history":[{"count":1,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/5309\/revisions"}],"predecessor-version":[{"id":5310,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/5309\/revisions\/5310"}],"wp:attachment":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5309"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5309"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5309"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}