{"id":873,"date":"2010-11-25T00:50:41","date_gmt":"2010-11-25T00:50:41","guid":{"rendered":"http:\/\/supportex.net\/?p=873"},"modified":"2019-11-20T23:12:59","modified_gmt":"2019-11-20T21:12:59","slug":"how-dump-mysql-database","status":"publish","type":"post","link":"https:\/\/supportex.net\/blog\/2010\/11\/how-dump-mysql-database\/","title":{"rendered":"Three ways to make MySQL database dump"},"content":{"rendered":"<p>Everybody knows &#8211; backups are very important. Today a lot of web projects use MySQL to keep data. So you need to know how to set up reliable but simple backup of all your databases. And even if you are only developing you might probably need some tools to make quick dumps and to restore databases.<\/p>\n<p>There are different ways to backup MySQL databases \u2013 using mysqldump, maatkit tools, ZFS snapshots, Xtrabackup, LVM, etc. Here we will cover three of them &#8211; mysqldump, maatkit and the Xtrabackup.<\/p>\n<h2>mysqldump<\/h2>\n<h3>How to backup<\/h3>\n<p>The simplest way to backup your database is <strong>mysqldump<\/strong>. Just change parameters to your actual ones:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">#!\/bin\/sh\r\nDBPASS=realystrongpassword\r\nDBUSER=root\r\nBACKUP_DIR=\/home\/backup\r\nDAYS=60\r\nDATEPREFIX=$( date +%y%m%d-%H%M )\r\nDATABASES=$( mysql -u$DBUSER -p$DBPASS -Bse 'show databases' | grep -v information_schema )\r\nfor db in $DATABASES; do\r\nmysqldump --opt --quick -u $DBUSER -p$DBPASS $db | gzip -9 &amp;amp;amp;gt; $BACKUP_DIR\/mysql-$dbf-$DATEPREFIX.sql;\r\ndone\r\nfind $BACKUP_DIR -mtime +$DAYS -name *mysql-*.sql.gz -delete\r\n<\/pre>\n<h3>How to restore<\/h3>\n<p>Restoration from dump is quite simple. Here is an example:<br \/>\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">[root@playground ~]# gzip -d -c \/home\/backups\/mysql-zabbix-101126-0505.sql.gz | mysql -uroot -p zabbix<\/code><\/p>\n<h2>Maatkit mk-parallel-dump<\/h2>\n<h3>How to backup<\/h3>\n<p><a href=\"http:\/\/www.maatkit.org\/\">Maatkit<\/a> is a powerful toolkit for working with MySQL created by Baron Schwartz from <a href=\"http:\/\/www.percona.com\/\">Percona<\/a>.<\/p>\n<p><strong>mk-parallel-dump<\/strong> is a tool to dump MySQL tables in parallel. It&#8217;s especially important if your databases are huge and it takes a lot of time to backup it with <strong>mysqldump<\/strong>.<\/p>\n<p><strong>Note!<\/strong><\/p>\n<p>As stated in <a href=\"http:\/\/www.maatkit.org\/doc\/mk-parallel-dump.html\">mk-parallel-dump documentation:<\/a><\/p>\n<blockquote><p>mk-parallel-dump is not a backup program! It is only designed for fast data exports, for purposes such as quickly loading data into test systems. Do not use mk-parallel-dump for backups.<\/p><\/blockquote>\n<p><strong>So be careful with it.<\/strong><\/p>\n<p>Firstly we should install <strong>mk-parallel-dump<\/strong>. If you are using Fedora or Centos download .rpm package, or .deb package for Debian and Ubuntu from <a href=\"http:\/\/code.google.com\/p\/maatkit\/downloads\/list\">http:\/\/code.google.com\/p\/maatkit\/downloads\/list<\/a>.<\/p>\n<p>Let&#8217;s try to setup it on Fedora:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">[root@playground ~]# rpm -ivh --test maatkit-7041-1.noarch.rpm\r\nerror: Failed dependencies:perl(Term::ReadKey) &gt;= 2.10 is needed by maatkit-7041-1.noarch\r\n[root@playground ~]#<\/pre>\n<p>As you can see there is no Perl package Term::ReadKey on this server.<br \/>\n<code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">[root@playground ~]# yum install perl-TermReadKey<\/code><\/code><br \/>\nIt&#8217;s possible you don&#8217;t have installed some other Perl libraries, for instance perl-IO-Compress. To fix that use \u201c<strong>yum search<\/strong>\u201d or \u201c<strong>aptitude search<\/strong>\u201d, depending on what operation system you use.<\/p>\n<p>Now we can set up <strong>maatkit<\/strong>.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">[root@playground ~]# rpm -ivh maatkit-7041-1.noarch.rpm<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">Preparing... ########################################### [100%]<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">1:maatkit ########################################### [100%]<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">[root@playground ~]#<\/pre>\n<p>To install .deb package on Ubuntu or Debian you should use <strong>dpkg<\/strong>.<br \/>\nAt finally we can try\u00a0<strong>mk-parallel-dump<\/strong><br \/>\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">[root@playground ~]#mk-parallel-dump --user root --password verystrongpassword --base-dir \/home\/backups\/dbbk --lock-tables -v<\/code><br \/>\nOr use yet another <a href=\"http:\/\/supportex.net\/files\/maatkit-bk.sh\">simple script<\/a>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">#!\/bin\/sh\r\nDBUSER=root\r\nDBPASS=verystrongpassword\r\nBACKUP_DIR=\/home\/backups\/bk-$( date +%y%m%d-%H%M )\r\n&amp;amp;amp;amp;amp;amp;lt;pre&amp;amp;amp;amp;amp;amp;gt;mkdir $BACKUP_DIR || {  echo \"Couldn't create $BACKUP_DIR.\" ; exit 1 ; }\r\nmk-parallel-dump --user $DBUSER --password $DBPASS --base-dir $BACKUP_DIR\/$DATEPREFIX --lock-tables --ignore-databases mysql\r\n<\/pre>\n<h3>How to restore<\/h3>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">[root@playground ~]#mk-parallel-restore --user=root --password=verystrongpassword \/home\/backups\/101126-1726\/ --databases=sakila<\/code><\/p>\n<h2>Percona XtraBackup<\/h2>\n<p><a href=\"http:\/\/www.percona.com\/software\/percona-xtrabackup\/\">XtraBackup<\/a> is intended for making non-blocking backups for InnoDB, XtraDB, and MyISAM databases. And it really has \u00a0a lot of features.<\/p>\n<p>Let&#8217;s try it. To install \u00a0<strong>XtraBackup<\/strong> pick out your operation system and download appropriate package from the <a href=\"http:\/\/www.percona.com\/downloads\/XtraBackup\/LATEST\/\">download page<\/a>. Here we will use .rpm.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">Installation is trivial:\r\n[root@playground ~]# rpm -ivh xtrabackup-1.4-74.rhel5.x86_64.rpm\r\nwarning: xtrabackup-1.4-74.rhel5.x86_64.rpm: Header V3 DSA\/SHA1 Signature, key ID cd2efd2a: NOKEY\r\nPreparing... ########################################### [100%]\r\n1:xtrabackup ########################################### [100%]\r\n[root@playground ~]#<\/pre>\n<h3>How to backup<\/h3>\n<p>To backup all your databases run:<br \/>\n<code class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">[root@playground ~]# innobackupex-1.5.1 --user=root --password=verystrongpassword \/home\/backups\/<\/code><br \/>\n<strong>innobackupex<\/strong> will create directory with timestamp and put all files there. So you don&#8217;t have to create it by yourself using it.<\/p>\n<h3>How to restore<\/h3>\n<p>Restoration isn&#8217;t harder than installation, but MySQL server should be stopped:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">[root@playground ~]#innobackupex-1.5.1 --copy-back \/home\/backups\/xtrabackup\/2010-11-26_07-35-39<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">... a lot of lines ...<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">101126 07:48:52 innobackupex-1.5.1: completed OK!<\/code><\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">[root@playground ~]#<\/code><\/p>\n<p>If there is a line &#8220;innobackupex-1.5.1: completed OK!&#8221; everything is okay and you can start server.<\/p>\n<h2>Conclusion<\/h2>\n<p>1. \u00a0Unfortunately <strong>Maatkit<\/strong> is not ready for production use yet. So be careful \u00a0with it.<\/p>\n<p>2. \u00a0If your databases have small size use <strong>mysqldump<\/strong>. It is the best solution for almost all MySQL users.<\/p>\n<p>3. \u00a0If you have huge databases consider using Percona&#8217;s <strong>xtrabackup<\/strong> tools.<\/p>\n<h2>Further readings<\/h2>\n<p>1. <a href=\"http:\/\/dev.mysql.com\/doc\/refman\/5.1\/en\/mysqldump.html\">mysqdump<\/a> description from\u00a0MySQL 5.1 Reference Manual;<\/p>\n<p>2. <a href=\"http:\/\/www.maatkit.org\/\">maatkit tools<\/a>;<\/p>\n<p>3. <a href=\"http:\/\/www.percona.com\/docs\/wiki\/percona-xtrabackup:start\">Percona XtraBackup<\/a>.<\/p>\n<p><strong>Didn&#8217;t find the answer to your question? <a href=\"\/contacts\/\">Ask it<\/a> our administrators to reply we will publish on website.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Everybody knows &#8211; backups are very important. Today a lot of web projects use MySQL to keep data. So you need to know how to set up reliable but simple backup of all your databases. And even if you are only developing you might probably need some tools to make quick dumps and to restore&hellip; <\/p>\n<div class=\"readmore-wrapper\"><a href=\"https:\/\/supportex.net\/blog\/2010\/11\/how-dump-mysql-database\/\" class=\"more-link\">Read <\/a><\/div>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[198,275,199,197,196,200],"class_list":["post-873","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-innobackupex","tag-linux","tag-mysql-en","tag-mysqldump","tag-percona","tag-xtrabackup-en"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Three ways to make MySQL database dump &#8211; Supportex.NET blog<\/title>\n<meta name=\"description\" content=\"How to make MySQL database dump with mysqldump, innobackupex, maatkit .\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/supportex.net\/blog\/2010\/11\/how-dump-mysql-database\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Three ways to make MySQL database dump &#8211; Supportex.NET blog\" \/>\n<meta property=\"og:description\" content=\"How to make MySQL database dump with mysqldump, innobackupex, maatkit .\" \/>\n<meta property=\"og:url\" content=\"https:\/\/supportex.net\/blog\/2010\/11\/how-dump-mysql-database\/\" \/>\n<meta property=\"og:site_name\" content=\"Supportex.NET blog\" \/>\n<meta property=\"article:published_time\" content=\"2010-11-25T00:50:41+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-11-20T21:12:59+00:00\" \/>\n<meta name=\"author\" content=\"Oleksii Tykhonov\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Oleksii Tykhonov\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/supportex.net\/blog\/2010\/11\/how-dump-mysql-database\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/supportex.net\/blog\/2010\/11\/how-dump-mysql-database\/\"},\"author\":{\"name\":\"Oleksii Tykhonov\",\"@id\":\"https:\/\/supportex.net\/blog\/en\/#\/schema\/person\/0690c26a0266603129fc15eae6243251\"},\"headline\":\"Three ways to make MySQL database dump\",\"datePublished\":\"2010-11-25T00:50:41+00:00\",\"dateModified\":\"2019-11-20T21:12:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/supportex.net\/blog\/2010\/11\/how-dump-mysql-database\/\"},\"wordCount\":521,\"commentCount\":0,\"keywords\":[\"innobackupex\",\"linux\",\"mysql\",\"mysqldump\",\"percona\",\"Xtrabackup\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/supportex.net\/blog\/2010\/11\/how-dump-mysql-database\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/supportex.net\/blog\/2010\/11\/how-dump-mysql-database\/\",\"url\":\"https:\/\/supportex.net\/blog\/2010\/11\/how-dump-mysql-database\/\",\"name\":\"Three ways to make MySQL database dump &#8211; Supportex.NET blog\",\"isPartOf\":{\"@id\":\"https:\/\/supportex.net\/blog\/en\/#website\"},\"datePublished\":\"2010-11-25T00:50:41+00:00\",\"dateModified\":\"2019-11-20T21:12:59+00:00\",\"author\":{\"@id\":\"https:\/\/supportex.net\/blog\/en\/#\/schema\/person\/0690c26a0266603129fc15eae6243251\"},\"description\":\"How to make MySQL database dump with mysqldump, innobackupex, maatkit .\",\"breadcrumb\":{\"@id\":\"https:\/\/supportex.net\/blog\/2010\/11\/how-dump-mysql-database\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/supportex.net\/blog\/2010\/11\/how-dump-mysql-database\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/supportex.net\/blog\/2010\/11\/how-dump-mysql-database\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/supportex.net\/blog\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Three ways to make MySQL database dump\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/supportex.net\/blog\/en\/#website\",\"url\":\"https:\/\/supportex.net\/blog\/en\/\",\"name\":\"Supportex.NET blog\",\"description\":\"Server and network management company\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/supportex.net\/blog\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/supportex.net\/blog\/en\/#\/schema\/person\/0690c26a0266603129fc15eae6243251\",\"name\":\"Oleksii Tykhonov\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/supportex.net\/blog\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/4fd5f58002717075c88963469b9babef?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/4fd5f58002717075c88963469b9babef?s=96&d=mm&r=g\",\"caption\":\"Oleksii Tykhonov\"},\"url\":\"https:\/\/supportex.net\/blog\/author\/oleksiitykhonov\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Three ways to make MySQL database dump &#8211; Supportex.NET blog","description":"How to make MySQL database dump with mysqldump, innobackupex, maatkit .","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/supportex.net\/blog\/2010\/11\/how-dump-mysql-database\/","og_locale":"en_US","og_type":"article","og_title":"Three ways to make MySQL database dump &#8211; Supportex.NET blog","og_description":"How to make MySQL database dump with mysqldump, innobackupex, maatkit .","og_url":"https:\/\/supportex.net\/blog\/2010\/11\/how-dump-mysql-database\/","og_site_name":"Supportex.NET blog","article_published_time":"2010-11-25T00:50:41+00:00","article_modified_time":"2019-11-20T21:12:59+00:00","author":"Oleksii Tykhonov","twitter_misc":{"Written by":"Oleksii Tykhonov","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/supportex.net\/blog\/2010\/11\/how-dump-mysql-database\/#article","isPartOf":{"@id":"https:\/\/supportex.net\/blog\/2010\/11\/how-dump-mysql-database\/"},"author":{"name":"Oleksii Tykhonov","@id":"https:\/\/supportex.net\/blog\/en\/#\/schema\/person\/0690c26a0266603129fc15eae6243251"},"headline":"Three ways to make MySQL database dump","datePublished":"2010-11-25T00:50:41+00:00","dateModified":"2019-11-20T21:12:59+00:00","mainEntityOfPage":{"@id":"https:\/\/supportex.net\/blog\/2010\/11\/how-dump-mysql-database\/"},"wordCount":521,"commentCount":0,"keywords":["innobackupex","linux","mysql","mysqldump","percona","Xtrabackup"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/supportex.net\/blog\/2010\/11\/how-dump-mysql-database\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/supportex.net\/blog\/2010\/11\/how-dump-mysql-database\/","url":"https:\/\/supportex.net\/blog\/2010\/11\/how-dump-mysql-database\/","name":"Three ways to make MySQL database dump &#8211; Supportex.NET blog","isPartOf":{"@id":"https:\/\/supportex.net\/blog\/en\/#website"},"datePublished":"2010-11-25T00:50:41+00:00","dateModified":"2019-11-20T21:12:59+00:00","author":{"@id":"https:\/\/supportex.net\/blog\/en\/#\/schema\/person\/0690c26a0266603129fc15eae6243251"},"description":"How to make MySQL database dump with mysqldump, innobackupex, maatkit .","breadcrumb":{"@id":"https:\/\/supportex.net\/blog\/2010\/11\/how-dump-mysql-database\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/supportex.net\/blog\/2010\/11\/how-dump-mysql-database\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/supportex.net\/blog\/2010\/11\/how-dump-mysql-database\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/supportex.net\/blog\/en\/"},{"@type":"ListItem","position":2,"name":"Three ways to make MySQL database dump"}]},{"@type":"WebSite","@id":"https:\/\/supportex.net\/blog\/en\/#website","url":"https:\/\/supportex.net\/blog\/en\/","name":"Supportex.NET blog","description":"Server and network management company","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/supportex.net\/blog\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/supportex.net\/blog\/en\/#\/schema\/person\/0690c26a0266603129fc15eae6243251","name":"Oleksii Tykhonov","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/supportex.net\/blog\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/4fd5f58002717075c88963469b9babef?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4fd5f58002717075c88963469b9babef?s=96&d=mm&r=g","caption":"Oleksii Tykhonov"},"url":"https:\/\/supportex.net\/blog\/author\/oleksiitykhonov\/"}]}},"_links":{"self":[{"href":"https:\/\/supportex.net\/blog\/wp-json\/wp\/v2\/posts\/873","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/supportex.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/supportex.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/supportex.net\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/supportex.net\/blog\/wp-json\/wp\/v2\/comments?post=873"}],"version-history":[{"count":8,"href":"https:\/\/supportex.net\/blog\/wp-json\/wp\/v2\/posts\/873\/revisions"}],"predecessor-version":[{"id":3257,"href":"https:\/\/supportex.net\/blog\/wp-json\/wp\/v2\/posts\/873\/revisions\/3257"}],"wp:attachment":[{"href":"https:\/\/supportex.net\/blog\/wp-json\/wp\/v2\/media?parent=873"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/supportex.net\/blog\/wp-json\/wp\/v2\/categories?post=873"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/supportex.net\/blog\/wp-json\/wp\/v2\/tags?post=873"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}