<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Kommentare zu: Perl MySQL Backup</title>
	<atom:link href="http://www.butschek.de/fachartikel/perl-mysql-backup/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.butschek.de</link>
	<description>Blog von Michael Butschek</description>
	<lastBuildDate>Tue, 06 Jul 2010 19:49:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Von: Anton</title>
		<link>http://www.butschek.de/fachartikel/perl-mysql-backup/comment-page-1/#comment-1031</link>
		<dc:creator>Anton</dc:creator>
		<pubDate>Mon, 15 Feb 2010 17:07:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.butschek.de/?page_id=228#comment-1031</guid>
		<description>Spontaner Gedanke bzgl. der &quot;nur MyISAM&quot;-Problematik:

InnoDB unterstützt &quot;per Table&quot;-Tablespaces&quot;:

http://dev.mysql.com/doc/refman/5.0/en/multiple-tablespaces.html

Damit könnte man das Skript auch mit InnoDB einsetzen.

Zumal wird die zentrale ibdata-Datei nicht unnötig aufgebläht, wenn man Dateien löscht.</description>
		<content:encoded><![CDATA[<p>Spontaner Gedanke bzgl. der &#8220;nur MyISAM&#8221;-Problematik:</p>
<p>InnoDB unterstützt &#8220;per Table&#8221;-Tablespaces&#8221;:</p>
<p><a href="http://dev.mysql.com/doc/refman/5.0/en/multiple-tablespaces.html" rel="nofollow">http://dev.mysql.com/doc/refman/5.0/en/multiple-tablespaces.html</a></p>
<p>Damit könnte man das Skript auch mit InnoDB einsetzen.</p>
<p>Zumal wird die zentrale ibdata-Datei nicht unnötig aufgebläht, wenn man Dateien löscht.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Philipp Tobler</title>
		<link>http://www.butschek.de/fachartikel/perl-mysql-backup/comment-page-1/#comment-965</link>
		<dc:creator>Philipp Tobler</dc:creator>
		<pubDate>Mon, 18 Jan 2010 15:31:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.butschek.de/?page_id=228#comment-965</guid>
		<description>Wir betreiben MySQL auf Solaris und ZFS, welches sich für Backupszenarien sehr eignet. In diesem Fall beschränkt sich ein Backup auf das Locken der DBs, zfs snapshot und zum Schluss Unlock. Das ganze dauert ein paar wenige Sekunden!

Hier meine abgewandelte Scriptvariante:

#!/usr/bin/perl
use DBI;
use POSIX qw(strftime);

##
## CONFIGURATION
##

## WARNING: USE ONLY WITH MyISAM!

my $MYSQL_HOST = &quot;localhost&quot;;
my $MYSQL_USER = &quot;backup&quot;;
my $MYSQL_PASS = &quot;XXXXXXXX&quot;;
my $ZFS_DATASET = &quot;datapool/export/db/myisam&quot;;

##
## END OF CONFIGURATION
##

my $SNAP_CMD = &quot;/usr/sbin/zfs snapshot&quot;;
# define a meaningful snapshot name including date and time
my $SNAP_SUFFIX = strftime &quot;mysqlbackup-%Y-%m-%d-%H%M&quot;, localtime;

# Open Database
my @DSN  = (&#039;DBI:mysql:host=&#039;.$MYSQL_HOST, $MYSQL_USER , $MYSQL_PASS);
my $DB = DBI-&gt;connect(@DSN) &#124;&#124; exit 1;

# Output
print stdout &quot;===============================================================================\n&quot;;
print stdout &quot;MYSQL BINARY BACKUP\n&quot;;
print stdout &quot;===============================================================================\n&quot;;
print stdout &quot;\n&quot;;
print stdout &quot;-------------------------------------------------------------------------------\n&quot;;
print stdout &quot;Flush and lock tables, take ZFS snapshot, unlock tables\n&quot;;
print stdout &quot;-------------------------------------------------------------------------------\n&quot;;
print stdout &quot;\n&quot;;

# Flush, Lock, ZFS snapshot, Unlock
$RESULT = $DB-&gt;prepare(&#039;FLUSH TABLES WITH READ LOCK;&#039;);
$RESULT-&gt;execute();
system($SNAP_CMD.&#039; &#039;.$ZFS_DATASET.&#039;@&#039;.$SNAP_SUFFIX);
$RESULT = $DB-&gt;prepare(&#039;UNLOCK TABLES;&#039;);
$RESULT-&gt;execute();

# Output
print stdout &quot;\n&quot;;
print stdout &quot;-------------------------------------------------------------------------------\n&quot;;
print stdout &quot;MySQL Backup done.\n&quot;;
print stdout &quot;-------------------------------------------------------------------------------\n&quot;;

# End of script
$DB-&gt;disconnect();</description>
		<content:encoded><![CDATA[<p>Wir betreiben MySQL auf Solaris und ZFS, welches sich für Backupszenarien sehr eignet. In diesem Fall beschränkt sich ein Backup auf das Locken der DBs, zfs snapshot und zum Schluss Unlock. Das ganze dauert ein paar wenige Sekunden!</p>
<p>Hier meine abgewandelte Scriptvariante:</p>
<p>#!/usr/bin/perl<br />
use DBI;<br />
use POSIX qw(strftime);</p>
<p>##<br />
## CONFIGURATION<br />
##</p>
<p>## WARNING: USE ONLY WITH MyISAM!</p>
<p>my $MYSQL_HOST = &#8220;localhost&#8221;;<br />
my $MYSQL_USER = &#8220;backup&#8221;;<br />
my $MYSQL_PASS = &#8220;XXXXXXXX&#8221;;<br />
my $ZFS_DATASET = &#8220;datapool/export/db/myisam&#8221;;</p>
<p>##<br />
## END OF CONFIGURATION<br />
##</p>
<p>my $SNAP_CMD = &#8220;/usr/sbin/zfs snapshot&#8221;;<br />
# define a meaningful snapshot name including date and time<br />
my $SNAP_SUFFIX = strftime &#8220;mysqlbackup-%Y-%m-%d-%H%M&#8221;, localtime;</p>
<p># Open Database<br />
my @DSN  = (&#8216;DBI:mysql:host=&#8217;.$MYSQL_HOST, $MYSQL_USER , $MYSQL_PASS);<br />
my $DB = DBI-&gt;connect(@DSN) || exit 1;</p>
<p># Output<br />
print stdout &#8220;===============================================================================\n&#8221;;<br />
print stdout &#8220;MYSQL BINARY BACKUP\n&#8221;;<br />
print stdout &#8220;===============================================================================\n&#8221;;<br />
print stdout &#8220;\n&#8221;;<br />
print stdout &#8220;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\n&#8221;;<br />
print stdout &#8220;Flush and lock tables, take ZFS snapshot, unlock tables\n&#8221;;<br />
print stdout &#8220;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\n&#8221;;<br />
print stdout &#8220;\n&#8221;;</p>
<p># Flush, Lock, ZFS snapshot, Unlock<br />
$RESULT = $DB-&gt;prepare(&#8216;FLUSH TABLES WITH READ LOCK;&#8217;);<br />
$RESULT-&gt;execute();<br />
system($SNAP_CMD.&#8217; &#8216;.$ZFS_DATASET.&#8217;@&#8217;.$SNAP_SUFFIX);<br />
$RESULT = $DB-&gt;prepare(&#8216;UNLOCK TABLES;&#8217;);<br />
$RESULT-&gt;execute();</p>
<p># Output<br />
print stdout &#8220;\n&#8221;;<br />
print stdout &#8220;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\n&#8221;;<br />
print stdout &#8220;MySQL Backup done.\n&#8221;;<br />
print stdout &#8220;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\n&#8221;;</p>
<p># End of script<br />
$DB-&gt;disconnect();</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Jürgen Lerch</title>
		<link>http://www.butschek.de/fachartikel/perl-mysql-backup/comment-page-1/#comment-353</link>
		<dc:creator>Jürgen Lerch</dc:creator>
		<pubDate>Sun, 09 Aug 2009 13:27:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.butschek.de/?page_id=228#comment-353</guid>
		<description>Moin Moin ...

.. genau einen solchen Ansatz habe ich gebraucht für unser Projekt, das bei einem Datenbankausfall fatale folgen hätte und daher stündlich gesichert wird. Bisher hatte ich das auch immer im laufenden Betrieb mit PHP gemacht, hatte aber zu den Zeiten immer einen erhöhten LOAD auf dem Server. Ich habe dies nun mit deinem Ansatz geändert und beobachtet. Ich konnte keinen wesentliche Erhöhung des LOAD nun feststellen, und das Backup geht nun auch innerhalb von Sekunden, ohne das das Projekt beeinträchtigt wird. Super Sache ... Ich sag ganz herzlich DANKE

Gruß Jürgen</description>
		<content:encoded><![CDATA[<p>Moin Moin &#8230;</p>
<p>.. genau einen solchen Ansatz habe ich gebraucht für unser Projekt, das bei einem Datenbankausfall fatale folgen hätte und daher stündlich gesichert wird. Bisher hatte ich das auch immer im laufenden Betrieb mit PHP gemacht, hatte aber zu den Zeiten immer einen erhöhten LOAD auf dem Server. Ich habe dies nun mit deinem Ansatz geändert und beobachtet. Ich konnte keinen wesentliche Erhöhung des LOAD nun feststellen, und das Backup geht nun auch innerhalb von Sekunden, ohne das das Projekt beeinträchtigt wird. Super Sache &#8230; Ich sag ganz herzlich DANKE</p>
<p>Gruß Jürgen</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Mike</title>
		<link>http://www.butschek.de/fachartikel/perl-mysql-backup/comment-page-1/#comment-87</link>
		<dc:creator>Mike</dc:creator>
		<pubDate>Wed, 20 May 2009 13:21:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.butschek.de/?page_id=228#comment-87</guid>
		<description>Ich möchte nochmal einen Satz unterstreichen, der im Text nicht so deutlich rüber kommt: &lt;strong&gt;Das Script ist nur brauchbar, wenn als Storage Engine MyISAM zum Einsatz kommt!&lt;/strong&gt;

MyISAM speichert jede Tabelle in einer Datei, daher geht das mit dem RSync und Lock noch, wenn keine Mega-Tabellen dabei sind. Bei InnoDB dagegen werden alle Daten des gesamten Datenbankservers in einer Datei gespeichert, womit der Rsync bei JEDEM Update-Query alle Daten erneut kopieren muss - der Lock würde so viel zu lange dauern.</description>
		<content:encoded><![CDATA[<p>Ich möchte nochmal einen Satz unterstreichen, der im Text nicht so deutlich rüber kommt: <strong>Das Script ist nur brauchbar, wenn als Storage Engine MyISAM zum Einsatz kommt!</strong></p>
<p>MyISAM speichert jede Tabelle in einer Datei, daher geht das mit dem RSync und Lock noch, wenn keine Mega-Tabellen dabei sind. Bei InnoDB dagegen werden alle Daten des gesamten Datenbankservers in einer Datei gespeichert, womit der Rsync bei JEDEM Update-Query alle Daten erneut kopieren muss &#8211; der Lock würde so viel zu lange dauern.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Mark</title>
		<link>http://www.butschek.de/fachartikel/perl-mysql-backup/comment-page-1/#comment-86</link>
		<dc:creator>Mark</dc:creator>
		<pubDate>Wed, 20 May 2009 10:54:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.butschek.de/?page_id=228#comment-86</guid>
		<description>Hallo,

eine tolle Idee. Genau das was ich suche um eine Downtime von mittlerweile über 20 Minuten in den frühen Morgenstunden zu umgehen. Ich werde es mir bei Zeiten einmal anschauen und umsetzten.</description>
		<content:encoded><![CDATA[<p>Hallo,</p>
<p>eine tolle Idee. Genau das was ich suche um eine Downtime von mittlerweile über 20 Minuten in den frühen Morgenstunden zu umgehen. Ich werde es mir bei Zeiten einmal anschauen und umsetzten.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
