<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Linux 360° &#124; Italia &#187; mysql</title>
	<atom:link href="http://www.linux360.it/tag/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.linux360.it</link>
	<description>Notizie, guide e tutorial per il mondo Linux a 360°</description>
	<lastBuildDate>Tue, 16 Dec 2014 14:03:33 +0000</lastBuildDate>
	<language>it-IT</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.9.40</generator>
	<item>
		<title>MySQL Master-Master Replication</title>
		<link>http://www.linux360.it/2014/07/28/mysql-master-master-replication/</link>
		<comments>http://www.linux360.it/2014/07/28/mysql-master-master-replication/#comments</comments>
		<pubDate>Mon, 28 Jul 2014 15:17:41 +0000</pubDate>
		<dc:creator><![CDATA[Paolo Daniele]]></dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Varie]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[master]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[replication]]></category>

		<guid isPermaLink="false">http://www.paolodaniele.it/?p=1941</guid>
		<description><![CDATA[<p>Oggi voglio pubblicare un qualcosa di interessante che mi è capitato per lavoro. Ipotizziamo di avere 2 database MySQL in due zone geograficamente distanti tra loro. Questi database devono essere consistenti, cioè contenere sempre gli stessi dati, così nel caso di perdita di connessione o di blocco del database 1 tutte le connessioni verranno indirizzate ...</p>
<p>L'articolo <a rel="nofollow" href="http://www.linux360.it/2014/07/28/mysql-master-master-replication/">MySQL Master-Master Replication</a> sembra essere il primo su <a rel="nofollow" href="http://www.linux360.it">Linux 360° | Italia</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Oggi voglio pubblicare un qualcosa di interessante che mi è capitato per lavoro.</p>
<p>Ipotizziamo di avere 2 database MySQL in due zone geograficamente distanti tra loro.</p>
<p>Questi database devono essere consistenti, cioè contenere sempre gli stessi dati, così nel caso di perdita di connessione o di blocco del database 1 tutte le connessioni verranno indirizzate sul database 2 e viceversa.</p>
<p>Vi spiego meglio con una figura:</p>
<p><img class="alignnone  wp-image-1943" src="http://www.paolodaniele.it/wp-content/uploads/2014/07/mysql-active-active.jpg" alt="mysql-active-active" width="576" height="312" /></p>
<p>Abbiamo capito il problema, adesso vediamo come affrontarlo e trovare la soluzione.</p>
<p>In rete ho trovato molte &#8220;strade&#8221; più o meno simili, non è detto che la mia sia giusta, ma so che funziona perchè l&#8217;ho provata praticamente!</p>
<p>La soluzione che vi propongo è stata testata con mysql-server 5.5.37 su Debian 7.1 Wheezy a 64bit</p>
<p>Per prima cosa dobbiamo abilitare su entrambi i database il <strong>BINARY LOGGING </strong>che è un vero e proprio log delle operazioni che vengono effettuate su ogni database.</p>
<p>Modifichiamo il file di configurazione <em><strong>my.cnf</strong></em> come segue:</p>
<p>Database <span style="color: #ff0000;"><strong>MASTER-1</strong></span></p>
<div id="wpshdo_1" class="wp-synhighlighter-outer"><div id="wpshdt_1" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_1"></a><a id="wpshat_1" class="wp-synhighlighter-title" href="#codesyntax_1"  onClick="javascript:wpsh_toggleBlock(1)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_1" onClick="javascript:wpsh_code(1)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.linux360.it/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_1" onClick="javascript:wpsh_print(1)" title="Print code"><img border="0" style="border: 0 none" src="http://www.linux360.it/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.linux360.it/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.linux360.it/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_1" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;">server_id           = <span class="nu0">1</span>
log_bin             = <span class="sy0">/</span>var<span class="sy0">/</span>log<span class="sy0">/</span>mysql<span class="sy0">/</span>mysql-bin.log
log_bin_index       = <span class="sy0">/</span>var<span class="sy0">/</span>log<span class="sy0">/</span>mysql<span class="sy0">/</span>mysql-bin.log.index
relay_log           = <span class="sy0">/</span>var<span class="sy0">/</span>log<span class="sy0">/</span>mysql<span class="sy0">/</span>mysql-relay-bin
relay_log_index     = <span class="sy0">/</span>var<span class="sy0">/</span>log<span class="sy0">/</span>mysql<span class="sy0">/</span>mysql-relay-bin.index
expire_logs_days    = <span class="nu0">10</span>
max_binlog_size     = 100M
log_slave_updates   = <span class="nu0">1</span>
auto-increment-increment = <span class="nu0">2</span>
auto-increment-offset = <span class="nu0">1</span>
binlog_do_db        = sharedb</pre></div></div>
<p>Database <strong>MASTER-2</strong></p>
<div id="wpshdo_2" class="wp-synhighlighter-outer"><div id="wpshdt_2" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_2"></a><a id="wpshat_2" class="wp-synhighlighter-title" href="#codesyntax_2"  onClick="javascript:wpsh_toggleBlock(2)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_2" onClick="javascript:wpsh_code(2)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.linux360.it/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_2" onClick="javascript:wpsh_print(2)" title="Print code"><img border="0" style="border: 0 none" src="http://www.linux360.it/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.linux360.it/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.linux360.it/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_2" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;">server_id           = <span class="nu0">2</span>
log_bin             = <span class="sy0">/</span>var<span class="sy0">/</span>log<span class="sy0">/</span>mysql<span class="sy0">/</span>mysql-bin.log
log_bin_index       = <span class="sy0">/</span>var<span class="sy0">/</span>log<span class="sy0">/</span>mysql<span class="sy0">/</span>mysql-bin.log.index
relay_log           = <span class="sy0">/</span>var<span class="sy0">/</span>log<span class="sy0">/</span>mysql<span class="sy0">/</span>mysql-relay-bin
relay_log_index     = <span class="sy0">/</span>var<span class="sy0">/</span>log<span class="sy0">/</span>mysql<span class="sy0">/</span>mysql-relay-bin.index
expire_logs_days    = <span class="nu0">10</span>
max_binlog_size     = 100M
log_slave_updates   = <span class="nu0">1</span>
auto-increment-increment = <span class="nu0">2</span>
auto-increment-offset = <span class="nu0">2</span>
binlog_do_db        = sharedb</pre></div></div>
<p>E&#8217; molto importante definire il parametro <em><strong>auto-increment-offset</strong></em> diverso tra i due database, questo serve per evitare che ci siano conflitti di indici nelle fasi di replicazione.</p>
<p>Prima di riavviare il servizio, procediamo con la creazione/import del database sharedb su entrambi i server (ATTENZIONE consiglio che i databasesiano uguali in questa fase)</p>
<p>Sempre su entrambi i server, da console:</p>
<div id="wpshdo_3" class="wp-synhighlighter-outer"><div id="wpshdt_3" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_3"></a><a id="wpshat_3" class="wp-synhighlighter-title" href="#codesyntax_3"  onClick="javascript:wpsh_toggleBlock(3)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_3" onClick="javascript:wpsh_code(3)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.linux360.it/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_3" onClick="javascript:wpsh_print(3)" title="Print code"><img border="0" style="border: 0 none" src="http://www.linux360.it/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.linux360.it/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.linux360.it/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_3" class="wp-synhighlighter-inner" style="display: block;"><pre class="sql" style="font-family:monospace;"><span class="kw1">CREATE</span> user <span class="st0">'replicante'</span>@<span class="st0">'%'</span> <span class="kw1">IDENTIFIED</span> <span class="kw1">BY</span> <span class="st0">'Wp4Suppl1c4nt462!'</span>;
<span class="kw1">GRANT</span> replication slave <span class="kw1">ON</span> <span class="sy0">*.*</span> <span class="kw1">TO</span> <span class="st0">'replicante'</span>@<span class="st0">'%'</span>;</pre></div></div>
<p>Riavviamo il servizio su entrambi i server.</p>
<p>&nbsp;</p>
<p>Operiamo adesso sul server <span style="color: #ff0000;"><strong>MASTER-1</strong></span></p>
<div id="wpshdo_4" class="wp-synhighlighter-outer"><div id="wpshdt_4" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_4"></a><a id="wpshat_4" class="wp-synhighlighter-title" href="#codesyntax_4"  onClick="javascript:wpsh_toggleBlock(4)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_4" onClick="javascript:wpsh_code(4)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.linux360.it/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_4" onClick="javascript:wpsh_print(4)" title="Print code"><img border="0" style="border: 0 none" src="http://www.linux360.it/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.linux360.it/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.linux360.it/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_4" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;">mysql <span class="re5">-u</span> root - p</pre></div></div>
<div id="wpshdo_5" class="wp-synhighlighter-outer"><div id="wpshdt_5" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_5"></a><a id="wpshat_5" class="wp-synhighlighter-title" href="#codesyntax_5"  onClick="javascript:wpsh_toggleBlock(5)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_5" onClick="javascript:wpsh_code(5)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.linux360.it/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_5" onClick="javascript:wpsh_print(5)" title="Print code"><img border="0" style="border: 0 none" src="http://www.linux360.it/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.linux360.it/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.linux360.it/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_5" class="wp-synhighlighter-inner" style="display: block;"><pre class="sql" style="font-family:monospace;"><span class="kw1">SHOW</span> master <span class="kw1">STATUS</span>;</pre></div></div>
<p>Appare una cosa del genere:</p>
<p>+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+<br />
| File                              | Position | Binlog_Do_DB | Binlog_Ignore_DB |<br />
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+<br />
| mysql-bin.000001 |      106     |   sharedb               |                                       |<br />
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+</p>
<p>Passiamo su <strong>MASTER-2</strong></p>
<p>Da console sql:</p>
<div id="wpshdo_6" class="wp-synhighlighter-outer"><div id="wpshdt_6" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_6"></a><a id="wpshat_6" class="wp-synhighlighter-title" href="#codesyntax_6"  onClick="javascript:wpsh_toggleBlock(6)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_6" onClick="javascript:wpsh_code(6)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.linux360.it/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_6" onClick="javascript:wpsh_print(6)" title="Print code"><img border="0" style="border: 0 none" src="http://www.linux360.it/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.linux360.it/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.linux360.it/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_6" class="wp-synhighlighter-inner" style="display: block;"><pre class="sql" style="font-family:monospace;">slave stop;
<span class="kw1">CHANGE</span> MASTER <span class="kw1">TO</span> MASTER_HOST <span class="sy0">=</span> <span class="st0">'IP-MASTER-1'</span><span class="sy0">,</span> MASTER_USER <span class="sy0">=</span> <span class="st0">'replicante'</span><span class="sy0">,</span> MASTER_PASSWORD <span class="sy0">=</span> <span class="st0">'Wp4Suppl1c4nt462!'</span><span class="sy0">,</span> MASTER_LOG_FILE <span class="sy0">=</span> <span class="st0">'mysql-bin.000001'</span><span class="sy0">,</span> MASTER_LOG_POS <span class="sy0">=</span> <span class="nu0">106</span>;
slave start;
<span class="kw1">SHOW</span> master <span class="kw1">STATUS</span>;</pre></div></div>
<p>Apparirà quealcosa del genere:</p>
<p>+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+<br />
| File                              | Position | Binlog_Do_DB | Binlog_Ignore_DB |<br />
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+<br />
| mysql-bin.000002 |     1060   |   sharedb              |                                       |<br />
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+</p>
<p>Torniamo su <span style="color: #ff0000;"><strong>MASTER-1</strong></span></p>
<p>Da console sql:</p>
<div id="wpshdo_7" class="wp-synhighlighter-outer"><div id="wpshdt_7" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_7"></a><a id="wpshat_7" class="wp-synhighlighter-title" href="#codesyntax_7"  onClick="javascript:wpsh_toggleBlock(7)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_7" onClick="javascript:wpsh_code(7)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.linux360.it/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_7" onClick="javascript:wpsh_print(7)" title="Print code"><img border="0" style="border: 0 none" src="http://www.linux360.it/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.linux360.it/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.linux360.it/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_7" class="wp-synhighlighter-inner" style="display: block;"><pre class="sql" style="font-family:monospace;">slave stop;
<span class="kw1">CHANGE</span> MASTER <span class="kw1">TO</span> MASTER_HOST <span class="sy0">=</span> <span class="st0">'IP-MASTER-2'</span><span class="sy0">,</span> MASTER_USER <span class="sy0">=</span> <span class="st0">'replicante'</span><span class="sy0">,</span> MASTER_PASSWORD <span class="sy0">=</span> <span class="st0">'Wp4Suppl1c4nt462!'</span><span class="sy0">,</span> MASTER_LOG_FILE <span class="sy0">=</span> <span class="st0">'mysql-bin.000002'</span><span class="sy0">,</span> MASTER_LOG_POS <span class="sy0">=</span> <span class="nu0">1060</span>;
slave start;</pre></div></div>
<p>Il gioco è fatto!</p>
<p>Proviamo a fare un update su uno dei due master e vedremo la replica in tempo (quasi reale!) sull&#8217;altro!</p>
<p>Per essere sicuri, da uno dei due server sempre da console fate un:</p>
<div id="wpshdo_8" class="wp-synhighlighter-outer"><div id="wpshdt_8" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_8"></a><a id="wpshat_8" class="wp-synhighlighter-title" href="#codesyntax_8"  onClick="javascript:wpsh_toggleBlock(8)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_8" onClick="javascript:wpsh_code(8)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.linux360.it/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_8" onClick="javascript:wpsh_print(8)" title="Print code"><img border="0" style="border: 0 none" src="http://www.linux360.it/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.linux360.it/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.linux360.it/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_8" class="wp-synhighlighter-inner" style="display: block;"><pre class="sql" style="font-family:monospace;"><span class="kw1">SHOW</span> slave <span class="kw1">STATUS</span>;</pre></div></div>
<p>dovreste ottenere un qualcosa del genere:</p>
<p>&#8230;&#8230;&#8230;.Waiting for master to send event | IP-MASTER &#8230;&#8230;&#8230;&#8230;.</p>
<p>Enjoy!</p>
<p>&nbsp;</p>
<p>L'articolo <a rel="nofollow" href="http://www.linux360.it/2014/07/28/mysql-master-master-replication/">MySQL Master-Master Replication</a> sembra essere il primo su <a rel="nofollow" href="http://www.linux360.it">Linux 360° | Italia</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.linux360.it/2014/07/28/mysql-master-master-replication/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
