<?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>Un bout de DBA &#187; Réplication</title>
	<atom:link href="http://www.noidea.ca/tag/replication/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.noidea.ca</link>
	<description>MySQL, En long et en large</description>
	<lastBuildDate>Tue, 09 Feb 2010 13:54:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>L&#8217;importance des clés primaires avec mk-table-sync</title>
		<link>http://www.noidea.ca/2010/01/26/limportance-des-cles-primaires-avec-mk-table-sync/</link>
		<comments>http://www.noidea.ca/2010/01/26/limportance-des-cles-primaires-avec-mk-table-sync/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 01:59:11 +0000</pubDate>
		<dc:creator>PaT</dc:creator>
				<category><![CDATA[Outils]]></category>
		<category><![CDATA[Réplication]]></category>
		<category><![CDATA[Tranche de vie]]></category>
		<category><![CDATA[Maatkit]]></category>

		<guid isPermaLink="false">http://www.noidea.ca/?p=404</guid>
		<description><![CDATA[J&#8217;adore Maatkit. Je m&#8217;en sers régulièrement dans toutes sortes d&#8217;occasions. Pour tous les Slaves que je configure, j&#8217;ajoute un petit script maison qui utilise mk-table-sync afin valider l&#8217;intégrité des données sur le Slave avec le Master. Ce petit script envoie un email avec les différences et les requêtes à exécuter le cas échéant.
J&#8217;ai remarqué que [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;adore <a title="Maatkit" href="http://www.maatkit.org/">Maatkit</a>. Je m&#8217;en sers régulièrement dans toutes sortes d&#8217;occasions. Pour tous les Slaves que je configure, j&#8217;ajoute un petit script maison qui utilise mk-table-sync afin valider l&#8217;intégrité des données sur le Slave avec le Master. Ce petit script envoie un email avec les différences et les requêtes à exécuter le cas échéant.</p>
<p>J&#8217;ai remarqué que mk-table-sync possède certaines limitations, c&#8217;est-à-dire que le format de la table et l&#8217;encoding joue un rôle important sur la manière dont l&#8217;outil effectue ses comparaisons. Les tables sans clé primaire ou d&#8217;identifiant unique sont particulièrement problématiques, et c&#8217;est tout à fait compréhensible. Par définition, s&#8217;il n&#8217;y a pas d&#8217;identifiant unique, il est impossible d&#8217;être 100% sur que l&#8217;enregistrement #1 sur le Master correspond à l&#8217;enregistrement #1 sur le Slave. En étant limité à ce niveau, mk-table-sync  préfère &#8220;croire&#8221; que l&#8217;ensemble des données sur le Slave sont erronés et propose des requêtes pour supprimer et réinsérer tous les enregistrements de la table.</p>
<p>Bien que je m&#8217;assure que toutes les tables possèdent des clés primaires lors de leur création, il m&#8217;est arrivé de me faire avoir. Le statement CREATE TABLE tableName SELECT * FROM tableName2 WHERE &#8230;. ; crée une table SANS index! Du coup, mon petit script s&#8217;est mis à envoyer des emails de 17Mo de requêtes SQL, ce que Thunderbird digère très mal <img src='http://www.noidea.ca/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>La leçon est: si vous utilisez mk-table-sync, assurez-vous de TOUJOURS avoir un identifiant unique sur vos tables!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.noidea.ca/2010/01/26/limportance-des-cles-primaires-avec-mk-table-sync/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MySQL Sandbox: bravo !</title>
		<link>http://www.noidea.ca/2009/11/30/mysql-sandbox-bravo/</link>
		<comments>http://www.noidea.ca/2009/11/30/mysql-sandbox-bravo/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 04:30:47 +0000</pubDate>
		<dc:creator>PaT</dc:creator>
				<category><![CDATA[Astuces]]></category>
		<category><![CDATA[Outils]]></category>
		<category><![CDATA[Réplication]]></category>
		<category><![CDATA[Serveur]]></category>
		<category><![CDATA[Sandbox]]></category>

		<guid isPermaLink="false">http://www.noidea.ca/?p=362</guid>
		<description><![CDATA[J&#8217;ai souvent entendu parler de MySQL Sandbox. Pour effectuer des tests avec un Master/Slave en fin de semaine, j&#8217;ai décidé de l&#8217;essayer puisque je n&#8217;avais que mon laptop. MySQL Sandbox est un outil pour installer un ou plusieurs serveurs isolés, sans affecter les autres.
Wow! Juste Wow! MySQL Sandbox est un outil vraiment génial! J&#8217;ai pu [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai souvent entendu parler de <a title="MySQL Sandbox" href="https://launchpad.net/mysql-sandbox" target="_blank">MySQL Sandbox</a>. Pour effectuer des tests avec un Master/Slave en fin de semaine, j&#8217;ai décidé de l&#8217;essayer puisque je n&#8217;avais que mon laptop. MySQL Sandbox est un outil pour installer un ou plusieurs serveurs isolés, sans affecter les autres.</p>
<p>Wow! Juste Wow! MySQL Sandbox est un outil vraiment génial! J&#8217;ai pu créer une instance de MySQL Master avec 2 instances Slaves sur la même machine en moins de 1 minute! C&#8217;est le genre de tâche qui prend de 30 minutes à 1 heure lorsqu&#8217;un administrateur expérimenté le fait manuellement. MySQL Sandbox permet non seulement d&#8217;installer rapidement 1 ou plusieurs serveurs, il permet aussi d&#8217;installer des versions différentes en quelque instant !</p>
<p>De plus, des options prédéfinies permettent de créer un setup Master-Slave ou  Master-Master automatiquement. Il vient avec des outils permettant d&#8217;effectuer des tâches d&#8217;administration complexes de manière excessivement simple. En résumé, il permet carrément de <strong>jouer avec MySQL</strong>.</p>
<p>Comment ça marche? On <a href="http://dev.mysql.com/downloads/" target="_blank">télécharge la version de MySQL</a> qu&#8217;on souhaite installer. Ensuite, on peut</p>
<p>Créer une instance de MySQL:</p>
<blockquote><p>make_sandbox  /path/to/mysql-X.X.XX-osinfo.tar.gz</p></blockquote>
<p>Créer un Master avec 2 Slaves:</p>
<blockquote><p>make_replication_sandbox /path/to/mysql-X.X.XX-osinfo.tar.gz</p></blockquote>
<p>Créer 4 serveurs avec une réplication circulaire (Master-Master)</p>
<blockquote><p>make_replication_sandbox &#8211;circular=4 /path/to/mysql-X.X.XX-osinfo.tar.gz</p></blockquote>
<p style="text-align: left;">Ces 3 commandes installent, configurent et démarrent le ou les serveurs MySQL. En quelques mots, MySQL Sandbox c&#8217;est simplicité, rapidité et fun!<br />
<img class="size-medium wp-image-371 aligncenter" title="MySQL Sandbox" src="http://www.noidea.ca/wp-content/uploads/2009/11/Sakila_sandbox_479x396_white_bg-300x248.png" alt="2009-11-30 00:16:29" width="300" height="248" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.noidea.ca/2009/11/30/mysql-sandbox-bravo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Comment promouvoir sécuritairement un Slave en Master</title>
		<link>http://www.noidea.ca/2009/06/29/comment-promouvoir-un-slave-en-master/</link>
		<comments>http://www.noidea.ca/2009/06/29/comment-promouvoir-un-slave-en-master/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 23:44:06 +0000</pubDate>
		<dc:creator>PaT</dc:creator>
				<category><![CDATA[Astuces]]></category>
		<category><![CDATA[Réplication]]></category>
		<category><![CDATA[Master]]></category>
		<category><![CDATA[Slave]]></category>

		<guid isPermaLink="false">http://www.noidea.ca/?p=211</guid>
		<description><![CDATA[Promouvoir un Slave en Master est une opération qu&#8217;un DBA doit faire à l&#8217;occasion, parfois pour mettre à jour une nouvelle version ou parfois pour se sortir de la m****, car le Master a rendu l&#8217;âme. C&#8217;est une opération qui n&#8217;est pas tellement difficile, mais qu&#8217;il ne faut surtout pas négliger.
1. Vérifier la configuration du [...]]]></description>
			<content:encoded><![CDATA[<p>Promouvoir un Slave en Master est une opération qu&#8217;un DBA doit faire à l&#8217;occasion, parfois pour mettre à jour une nouvelle version ou parfois pour se sortir de la m****, car le Master a rendu l&#8217;âme. C&#8217;est une opération qui n&#8217;est pas tellement difficile, mais qu&#8217;il ne faut surtout pas négliger.</p>
<p><strong>1. Vérifier la configuration du Slave</strong><br />
Vérifiez que la configuration est semblable à celle du Master, car si vous avez promu le Slave pour vous sortir de la m****, il faut qu&#8217;il puisse soutenir la même charge que le Master avait. Gardez en tête que le Slave a originalement été configuré pour être un Slave. Il possède donc des configurations qui lui sont propres. Un bon DBA a probablement pris la peine de mettre le Slave read_only; c&#8217;est une des premières options à enlever pour promouvoir. Assurez-vous également que l&#8217;ensemble des bases de données soit répliqué, mais surtout la DB mysql pour que les users/password soient les mêmes.</p>
<p>Après avoir promu le Slave en Master, il est toujours possible d&#8217;avoir les informations de réplication en tapant : <em><strong>show slave status;</strong></em> Si c&#8217;est le cas, vous n&#8217;avez pas complété une étape très importante: supprimer complètement la configuration de réplication.  Négliger cette étape fait en sorte que votre nouveau Master a toujours la possibilité de se connecter à un autre serveur MySQL pour répliquer les données. Il ne faudrait en aucun cas que le nouveau master commence à répliquer les données d&#8217;un autre serveur. Pour éviter que ça se produise, il suffit de faire:</p>
<div class="geshi no sql">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">CHANGE</span> MASTER <span class="kw1">TO</span></div>
</li>
<li class="li1">
<div class="de1">MASTER_HOST <span class="sy0">=</span> <span class="st0">&#39;&#39;</span>,</div>
</li>
<li class="li1">
<div class="de1">MASTER_USER <span class="sy0">=</span> <span class="st0">&#39;&#39;</span>;</div>
</li>
</ol>
</div>
<p><strong>2. Les backups</strong><br />
Si le Slave était utilisé pour faire des backups, il est important (le mot est faible) de désactiver tous les crons (ou autres) de backups. Surtout si comme moi, vous utilisez les bonnes vieilles méthodes &#8220;old school&#8221; comme les copies binaires ou un dump sql à tous les X heures qui nécessitent d&#8217;arrêter ou mettre en read only le service. Imaginez que votre nouveau Master s&#8217;éteint magiquement à minuit pour faire une copie&#8230; oups !</p>
<p><strong>3. La topologie réseau</strong><br />
Il est possible avec MySQL se configurer une réplication via un réseau public.  Ça peut paraître bête, mais valider avant tout que les applications qui se connectaient avant puissent toujours se connecter sur le nouveau Master.</p>
<p>Ce sont trois petits points à valider avant d&#8217;entreprendre le &#8220;switch&#8221; Slave &#8211; Master.  J&#8217;encourage tout le monde à le faire même si vous ne prévoyez pas faire de changement. Ce n&#8217;est pas très long à faire et ça vous évitera beaucoup de stress si une catastrophe survient.. !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.noidea.ca/2009/06/29/comment-promouvoir-un-slave-en-master/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
