{"id":202,"date":"2014-09-23T11:23:53","date_gmt":"2014-09-23T10:23:53","guid":{"rendered":"http:\/\/blog.fafara.net\/?p=202"},"modified":"2014-10-09T19:42:49","modified_gmt":"2014-10-09T18:42:49","slug":"percona-mysql-latwy-backup-przyrostowy","status":"publish","type":"post","link":"http:\/\/blog.fafara.net\/index.php\/2014\/09\/23\/percona-mysql-latwy-backup-przyrostowy\/","title":{"rendered":"Percona MySQL &#8211; \u0142atwy backup przyrostowy"},"content":{"rendered":"<p>Mo\u017cliwo\u015bci wykonywania kopii zapasowych baz danych MySQL jest wiele. To w jaki spos\u00f3b robimy backupy zale\u017cy w du\u017cej mierze od rodzaju bazy danych, kt\u00f3rej u\u017cywamy &#8211; Oracle MySQL, Percona, etc, \u00a0jej architektury &#8211; standalone, cluster, replikacja, a nawet od rodzaju tabel &#8211; myisam, innodb, etc. Jako \u017ce na co dzie\u0144 pracuj\u0119 z bazami Percona, w r\u00f3\u017cnych konfiguracjach, najcz\u0119\u015bciej pos\u0142uguj\u0119 si\u0119 mechanizmami dostarczonymi przez t\u0105 w\u0142a\u015bnie firm\u0119, czyli g\u0142\u00f3wnie skryptem\u00a0<strong>innobackupex<\/strong>, kt\u00f3ry de-facto jest nak\u0142adk\u0105 na program\u00a0<strong>xtrabackup<\/strong>.<\/p>\n<p><!--more--><\/p>\n<p>Xtrabackup to bardzo fajne narz\u0119dzie o ogromnych mo\u017cliwo\u015bciach, ale nie o tym jest ten wpis.\u00a0Aby zrobi\u0107 poprawny backup (taki, z kt\u00f3rego \u0142atwo b\u0119dzie przywr\u00f3ci\u0107 dane) przy u\u017cyciu <strong>xtrabackup<\/strong>, trzeba si\u0119\u00a0wczyta\u0107 w dokumentacj\u0119 i troch\u0119 nagimnastykowa\u0107. Dlatego te\u017c sama Percona udost\u0119pni\u0142a nak\u0142adk\u0119 w postaci skryptu <strong>innobackupex<\/strong>. Skrypt ten u\u0142atwia niezmiernie wykonywanie kopii zapasowych. Je\u015bli wykonujesz za ka\u017cdym razem pe\u0142n\u0105 kopi\u0119 zapasow\u0105 &#8211; innobackupex jest dok\u0142adnie tym co powiniene\u015b u\u017cy\u0107. Je\u015bli jednak chcesz robi\u0107 kopie przyrostowe, i tylko co jaki\u015b czas pe\u0142n\u0105 kopi\u0119, a do tego chcesz ca\u0142y proces zautomatyzowa\u0107 &#8211; najlepiej jednym wpisem w cronie, to innobackupex te\u017c wymaga troch\u0119 zabawy.<\/p>\n<p>Dla tego przygotowa\u0142em nak\u0142adk\u0119 na innobackupex, skrypt o nazwie <a href=\"http:\/\/blog.fafara.net\/wp-content\/uploads\/2014\/09\/backupex.zip\">backupex.php<\/a>, kt\u00f3ry wywo\u0142uje si\u0119 podaj\u0105c tylko \u015bcie\u017ck\u0119 do katalogu z backupami, login i has\u0142o do bazy, a skrypt sam tworzy pe\u0142ny backup w cyklach dziennych i przyrostowe backupy w ci\u0105gu dnia. Cz\u0119stotliwo\u015b\u0107 przyrostowych backup\u00f3w w ci\u0105gu dnia zale\u017cy tylko od cz\u0119stotliwo\u015bci wywo\u0142ania skryptu w cronie.<\/p>\n<p>Skrypt w podanej \u015bcie\u017cce tworzy katalog o nazwie zawieraj\u0105cej bie\u017c\u0105c\u0105 dat\u0119 w postaci: yyyy-mm-dd, a nast\u0119pnie w nim katalog &#8222;full&#8221;, kt\u00f3ry zawiera pe\u0142ny backup i katalogi &#8222;inc1&#8221;, &#8222;inc2&#8221;, &#8222;incX&#8221;, kt\u00f3re zawieraj\u0105 kolejne backupy przyrostowe. Skrypt wywo\u0142uje si\u0119 zawsze tak samo:<\/p>\n<p><code>php backupex.php --path=FULL\/BACKUP\/PATH --dbuser=DBUSERNAME --dbpass=DBPASSWORD<\/code><\/p>\n<p>a on automatycznie sprawdza, czy pe\u0142ny backup istnieje (i ewentualnie go robi) i tworzy\u00a0sobie kolejne backupy przyrostowe wzgl\u0119dem najnowszego &#8211; pe\u0142na automatyzacja :).<\/p>\n<p>Pobierz\u00a0<a href=\"http:\/\/blog.fafara.net\/wp-content\/uploads\/2014\/09\/backupex.zip\">backupex.zip<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mo\u017cliwo\u015bci wykonywania kopii zapasowych baz danych MySQL jest wiele. To w jaki spos\u00f3b robimy backupy zale\u017cy w du\u017cej mierze od rodzaju bazy danych, kt\u00f3rej u\u017cywamy &#8211; Oracle MySQL, Percona, etc, \u00a0jej architektury &#8211; standalone, cluster, replikacja, a nawet od rodzaju tabel &#8211; myisam, innodb, etc. Jako \u017ce na co dzie\u0144 pracuj\u0119 z bazami Percona, w [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[36],"tags":[53,51,49,50,52],"class_list":["post-202","post","type-post","status-publish","format-standard","hentry","category-programowanie","tag-backup","tag-innobackupex","tag-mysql","tag-percona","tag-xtrabackup"],"_links":{"self":[{"href":"http:\/\/blog.fafara.net\/index.php\/wp-json\/wp\/v2\/posts\/202","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.fafara.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.fafara.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.fafara.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.fafara.net\/index.php\/wp-json\/wp\/v2\/comments?post=202"}],"version-history":[{"count":6,"href":"http:\/\/blog.fafara.net\/index.php\/wp-json\/wp\/v2\/posts\/202\/revisions"}],"predecessor-version":[{"id":210,"href":"http:\/\/blog.fafara.net\/index.php\/wp-json\/wp\/v2\/posts\/202\/revisions\/210"}],"wp:attachment":[{"href":"http:\/\/blog.fafara.net\/index.php\/wp-json\/wp\/v2\/media?parent=202"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.fafara.net\/index.php\/wp-json\/wp\/v2\/categories?post=202"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.fafara.net\/index.php\/wp-json\/wp\/v2\/tags?post=202"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}