<?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>dbnewz &#187; réplication</title>
	<atom:link href="http://www.dbnewz.com/tag/replication/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dbnewz.com</link>
	<description>le blog français sur les SGBD - MySQL, Oracle et plus...</description>
	<lastBuildDate>Wed, 28 Jul 2010 14:01:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>15 secondes pour installer une réplication MySQL avec MySQL Sandbox, pari tenu ?</title>
		<link>http://www.dbnewz.com/2008/10/10/15-secondes-pour-installer-une-replication-mysql-avec-mysql-sandbox-pari-tenu/</link>
		<comments>http://www.dbnewz.com/2008/10/10/15-secondes-pour-installer-une-replication-mysql-avec-mysql-sandbox-pari-tenu/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 07:08:28 +0000</pubDate>
		<dc:creator>arnaud</dc:creator>
				<category><![CDATA[4.0]]></category>
		<category><![CDATA[4.1]]></category>
		<category><![CDATA[5.0]]></category>
		<category><![CDATA[5.1]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[réplication]]></category>
		<category><![CDATA[outils]]></category>

		<guid isPermaLink="false">http://www.dbnewz.com/?p=75</guid>
		<description><![CDATA[&#171;&#160;Installez-moi une configuration MySQL composée d&#8217;un master et deux slaves, vous avez 15 secondes. Top chrono&#160;&#187;&#8230;
Non, ça n&#8217;est pas la dernière énigme à la mode pour rentrer chez Google mais plutôt une question qui pourrait devenir presque banale pour un entretien d&#8217;embauche pour un DBA MySQL à l&#8217;avenir, qui sait ?
Face à un tel défi, [...]]]></description>
			<content:encoded><![CDATA[<p>&laquo;&nbsp;Installez-moi une configuration MySQL composée d&#8217;un master et deux slaves, vous avez 15 secondes. Top chrono&nbsp;&raquo;&#8230;</p>
<p>Non, ça n&#8217;est pas la dernière énigme à la mode pour rentrer chez Google mais plutôt une question qui pourrait devenir presque banale pour un entretien d&#8217;embauche pour un DBA MySQL à l&#8217;avenir, qui sait ?</p>
<p>Face à un tel défi, trois solutions :</p>
<p>- La fuite (mais faites une croix sur la &laquo;&nbsp;recommandation&nbsp;&raquo; Linkedin)<br />
- Le kernel panic<br />
- MySQL Sandbox !</p>
<p>Bien vu, MySQL Sandbox est la réponse la plus stratégique pour la poursuite de votre carrière.</p>
<p>Giuseppe Maxia (dont le blog figure dans notre blogroll, allez y jeter un oeil) est l&#8217;auteur de cet outil vraiment très pratique.  Que propose t-il ?</p>
<p>L&#8217;idée est d&#8217;automatiser l&#8217;installation de plusieurs serveurs MySQL sur une même machine. Rien que nous ne puissions faire manuellement c&#8217;est vrai, cependant la procédure habituelle consistant à ne pas mélanger les répertoires d&#8217;installation, choisir un port différent par serveur, appliquer <a href="http://www.dbnewz.com/2008/07/14/mysql_secure_installation-pratique-mais-non-parametrable/" target="_blank">mysql_secure_installation</a>&#8230; Tout cela gagnerait à être automatisé non ? De plus ces installations manuelles sont potentiellement sources d&#8217;erreurs.</p>
<p>MySQL Sandbox est compatible avec toutes les versions MySQL de la 3.23 à la 6.0. Les différentes installations effectuées sont indépendantes les unes des autres, on peut ainsi faire cohabiter sans risque de conflits plusieurs versions différentes de MySQL sur une même machine (ports, répertoires et sockets indépendants).</p>
<p>En plus d&#8217;automatiser ces processus d&#8217;installation (gain de temps), MySQL Sandbox ne s&#8217;arrête pas là et  propose également des commandes très simples pour gérer les serveurs une fois installés.</p>
<p>Concernant le gain de temps, son auteur promet (notamment en page 2 de cette <a href="http://datacharmer.org/presentations/mysqluniv_2008/sandbox_2_0.html" target="_blank">présentation</a>) l&#8217;installation d&#8217;une réplication MySQL en 15 secondes. Info ou intox ?</p>
<p><span id="more-75"></span></p>
<p><strong>Installation et pré-requis<br />
</strong></p>
<p>Pour fonctionner MySQL Sandbox n&#8217;a besoin que des binaries des versions que vous souhaitez installer.</p>
<p>L&#8217;installation est très rapide :</p>
<p>Après avoir téléchargé <a href="https://launchpad.net/mysql-sandbox" target="_blank">MySQL Sandbox</a>, il suffit de le décompresser dans le répertoire de votre choix :</p>
<p>debian:/opt# tar xzvf mysql_sandbox_2.0.11.tar.gz</p>
<p>On remarque alors que différentes commandes sont à notre disposition, plutôt explicites :</p>
<p><code>-rwxr-xr-x 1 501 staff  6154 2008-10-05 07:42 <strong>make_multiple_custom_sandbox</strong><br />
-rwxr-xr-x 1 501 staff  9062 2008-10-05 07:42 <strong>make_multiple_sandbox</strong><br />
-rwxr-xr-x 1 501 staff 12180 2008-10-05 07:42 <strong>make_replication_sandbox</strong><br />
-rwxr-xr-x 1 501 staff  5786 2008-10-05 07:42 <strong>make_sandbox</strong></code></p>
<p>make_sandbox : installe un serveur MySQL simple<br />
make_replication_sandbox : installe une réplication (par défaut un master, 2 slaves)<br />
make_multiple_sandbox : pour installer plusieurs serveurs identiques<br />
make_multiple_custom_sandbox : permet d&#8217;installer plusieurs serveurs de versions différentes</p>
<p><strong>Installer une réplication</strong></p>
<p>Une fois le <a href="http://dev.mysql.com/downloads/" target="_blank">binary récupéré</a>, nous utilisons la commande <strong>make_replication_sandbox</strong> pour obtenir un master et deux slaves. Elle prend en paramètre le tar.gz du binary (d&#8217;autres raccourcis sont possibles, je vous renvoie au fichier README de l&#8217;outil).</p>
<p><code>debian:/opt/mysql_sandbox_2.0.11# ./make_replication_sandbox /opt/mysql-5.0.67-linux-i686-glibc23.tar.gz</code></p>
<p>La sortie écran donne ceci :<br />
installing and starting master<br />
installing slave 1<br />
installing slave 2<br />
starting slave 1<br />
. sandbox server started<br />
starting slave 2<br />
.. sandbox server started<br />
initializing slave 1<br />
initializing slave 2<br />
replication directory installed on /root/sandboxes/rsandbox_5_0_67</p>
<p>C&#8217;est fait ! L&#8217;installation en elle-même a duré un peu plus de 15 secondes, disons que les lignes de commande à taper tiennent dans ce laps de temps&#8230;</p>
<p>Par défaut les &laquo;&nbsp;bacs à sable&nbsp;&raquo; installés par MySQL Sandbox se placent dans $HOME/sandboxes/. Dans le cadre de notre réplication, celle-ci a été installée ici : debian:~/sandboxes/rsandbox_5_0_67#</p>
<p>Notre réplication est d&#8217;ores et déjà fonctionnelle, on peut le vérifier en se connectant par exemple au slave numero 2 (faites un ps-ef | grep mysql pour afficher rapidement les noms/localisations des sockets par ex)</p>
<p>debian:/home/user# mysql &#8211;socket=/tmp/mysql_sandbox29473.sock -p</p>
<p>Le password par défaut est &laquo;&nbsp;msandbox&nbsp;&raquo;.</p>
<p>mysql&gt; show slave status\G<br />
Slave_IO_State: Waiting for master to send event<br />
Master_Host: 127.0.0.1<br />
Master_User: msandbox<br />
Master_Port: 29472<br />
Connect_Retry: 60<br />
Master_Log_File: mysql-bin.000001<br />
Read_Master_Log_Pos: 628<br />
Relay_Log_File: mysql_sandbox29473-relay-bin.000002<br />
Relay_Log_Pos: 765<br />
Relay_Master_Log_File: mysql-bin.000001<br />
<strong>Slave_IO_Running: Yes<br />
Slave_SQL_Running: Yes</strong></p>
<p>La réplication fonctionne, le pari est tenu !</p>
<p><strong>Les autres commandes disponibles</strong></p>
<p>Evoquées plus haut les commandes make_multiple_custom_sandbox, make_multiple_sandbox, make_sandbox et make_replication_sandbox vous permettent d&#8217;installer différentes topologies de serveurs MySQL, du master-master au groupe de serveurs aux versions identiques ou pas.</p>
<p>Exemple, pour installer la version MySQL 5.1.28 sur la même machine que notre réplication précédente :</p>
<p>debian:/opt/mysql_sandbox_2.0.11# ./make_sandbox /opt/mysql-5.1.28-rc-linux-i686-glibc23.tar.gz</p>
<p>Résultat :</p>
<p>&laquo;&nbsp;Your sandbox server was installed in /root/sandboxes/msb_5_1_28.&nbsp;&raquo;, simple non ?</p>
<p>D&#8217;autres commandes existent pour gérer votre installation :</p>
<p><strong>start, restart, stop, clear</strong>&#8230; un suffixe &laquo;&nbsp;_all&nbsp;&raquo; pour les réplications vient s&#8217;ajouter aux commandes précédentes, ex &laquo;&nbsp;<strong>stop_all</strong>&laquo;&nbsp;.</p>
<p>&laquo;&nbsp;m&nbsp;&raquo; est le raccourci de master, &laquo;&nbsp;s1&#8243;, &laquo;&nbsp;s2&#8243;, etc concernent les slaves.</p>
<p>Ainsi pour arrêter totalement notre configuration de réplication précédente, on effectue :</p>
<p>debian:~/sandboxes/rsandbox_5_0_67# ./stop_all</p>
<p>A l&#8217;écran :</p>
<p>executing &laquo;&nbsp;stop&nbsp;&raquo; on slave 1<br />
executing &laquo;&nbsp;stop&nbsp;&raquo; on slave 2<br />
executing &laquo;&nbsp;stop&nbsp;&raquo; on master</p>
<p>Comme vous le voyez, MySQL Sandbox est très simple d&#8217;emploi.</p>
<p>Pour aller plus loin je vous conseille vivement la lecture (c&#8217;est rapide) du <a href="http://forge.mysql.com/wiki/MySQL_Sandbox" target="_blank">wiki</a> de l&#8217;outil. Il reprend en fait le fichier README. Clair et concis vous y trouverez certainement votre bonheur : grâce à MySQL Sandbox, tester une nouvelle version de MySQL devient un jeu d&#8217;enfant.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbnewz.com/2008/10/10/15-secondes-pour-installer-une-replication-mysql-avec-mysql-sandbox-pari-tenu/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Dessine-moi MySQL : la réplication Master-Slave</title>
		<link>http://www.dbnewz.com/2008/09/18/dessine-moi-mysql-la-replication-master-slave/</link>
		<comments>http://www.dbnewz.com/2008/09/18/dessine-moi-mysql-la-replication-master-slave/#comments</comments>
		<pubDate>Wed, 17 Sep 2008 23:08:37 +0000</pubDate>
		<dc:creator>arnaud</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[réplication]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[dessine-moi MySQL]]></category>

		<guid isPermaLink="false">http://www.dbnewz.com/?p=70</guid>
		<description><![CDATA[&#171;&#160;Un schéma vaut mille mots&#160;&#187;, l&#8217;idée est toute simple : tenter d&#8217;exprimer en un schéma une idée précise concernant MySQL.
Il s&#8217;agit ici du type de schéma que nous avons tous griffonné pour un collègue ou soi-même afin de clarifier un processus : pas de powerpoint, pas de visio mais un brouillon, un stylo, et hop.
La [...]]]></description>
			<content:encoded><![CDATA[<p>&laquo;&nbsp;Un schéma vaut mille mots&nbsp;&raquo;, l&#8217;idée est toute simple : tenter d&#8217;exprimer en un schéma une idée précise concernant MySQL.</p>
<p>Il s&#8217;agit ici du type de schéma que nous avons tous griffonné pour un collègue ou soi-même afin de clarifier un processus : pas de powerpoint, pas de visio mais un brouillon, un stylo, et hop.</p>
<p>La règle du jeu : le schéma doit dans l&#8217;idéal se suffire à lui-même et ne pas forcément engendrer un billet qui ferait office de &laquo;&nbsp;légende&nbsp;&raquo;&#8230; Néanmoins quelques mots d&#8217;explications ne sont parfois pas de trop, même à côté d&#8217;un schéma, donc tout est possible.</p>
<p>La &laquo;&nbsp;richesse&nbsp;&raquo; des schémas/dessins viendra également des commentaires qui leur seront attribués, de la même façon que les commentaires enrichissent les billets d&#8217;un blog en ajoutant au billet initial les questions/retours d&#8217;expérience des lecteurs. Je vous encourage donc à poster des commentaires les concernant : questions, remarques, etc.</p>
<p>Voici ce que donne cette première tentative&#8230;</p>
<p style="text-align: center;"><a href="http://www.dbnewz.com/wp-content/uploads/2008/09/mysql-replication-master-slave_1024.jpg" target="_blank"><img class="size-medium wp-image-71" title="mysql-replication-master-slave" src="http://www.dbnewz.com/wp-content/uploads/2008/09/mysql-replication-master-slave_1024-300x206.jpg" alt="mysql-replication-master-slave" width="300" height="206" /></a></p>
<p>Que pensez-vous de ce premier schéma/prototype ? Lisible ? La résolution ? Des remarques ?</p>
<p>J&#8217;attends vos retours/suggestions afin de déterminer si l&#8217;idée vous plaît, auquel cas ce premier essai pourrait se transformer en une série au doux nom de &laquo;&nbsp;Dessine-moi MySQL&nbsp;&raquo; qui pourrait s&#8217;avérer très sympa&#8230; à condition bien sûr de savoir déchiffrer mes hiéroglyphes, ce qui je vous l&#8217;accorde représente un certain challenge.</p>
<p>A vos claviers !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbnewz.com/2008/09/18/dessine-moi-mysql-la-replication-master-slave/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Seconds_behind_master?</title>
		<link>http://www.dbnewz.com/2007/08/02/seconds_behind_master/</link>
		<comments>http://www.dbnewz.com/2007/08/02/seconds_behind_master/#comments</comments>
		<pubDate>Wed, 01 Aug 2007 22:17:55 +0000</pubDate>
		<dc:creator>pébé</dc:creator>
				<category><![CDATA[4.1]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[réplication]]></category>

		<guid isPermaLink="false">http://www.dbnewz.com/2007-08/22-seconds_behind_master.htm</guid>
		<description><![CDATA[Lorsque vous faites un SHOW SLAVE STATUS pour savoir l&#8217;état d&#8217;un de vos slaves dans votre chaîne de réplication, vous avez cet intéressant paramètre Seconds_behind_master, ceci évidemment si vous utilisez MySQL 4.1 et plus. Sur un serveur j&#8217;ai eu la désagréable surprise de voir cette valeur alterner constamment entre 0 et 2 heures&#8230;Humm? Ceci m&#8217;a [...]]]></description>
			<content:encoded><![CDATA[<p>Lorsque vous faites un SHOW SLAVE STATUS pour savoir l&#8217;état d&#8217;un de vos slaves dans votre chaîne de réplication, vous avez cet intéressant paramètre Seconds_behind_master, ceci évidemment si vous utilisez MySQL 4.1 et plus. Sur un serveur j&#8217;ai eu la désagréable surprise de voir cette valeur alterner constamment entre 0 et 2 heures&#8230;Humm? Ceci m&#8217;a poussé à regarder plus en détail le calcul de cette valeur.</p>
<p>Quand un slave se connecte au master, par la entendez le Slave I/O thread, il enregistre la valeur dm = SELECT UNIX_TIMESTAMP() ce qui revient à connaître la date actuelle du master (dm: date master) puis fait la même chose sur lui même ds = SELECT UNIX_TIMESTAMP() (ds: date slave). De la il calcule la différence  D = ts &#8211; tm.</p>
<p>Dans les log de réplication (binlog) sont enregistrés les dates d&#8217;exécutions de chaque requête. Ainsi lorsque le Slave SQL thread rejoue ces même requêtes, il calcule:</p>
<p>seconds_behind_master = SELECT UNIX_TIMESTAMP() sur le slave &#8211; date d&#8217;exécution de la requête sur le master  &#8211; D</p>
<p>Premier point, ce paramètre nous donne la différence entre le moment où une requête est mise dans le relay log et le moment ou elle a été executé sur le master. En aucun cas nous connaissons le temps qu&#8217;il a fallu pour la récupérer du master. Donc imaginons maintenant que votre slave est lent à les récupérer mais une fois récupérées, elles soient exécutées instantanément&#8230; Votre valeur Seconds_behind_master sera 0 alors qu&#8217;en réalité votre slave peut ne pas être à jour.</p>
<p>Quand le SQL thread est au niveau, pas d&#8217;autre relay log à jouer, Seconds_behind_master sera 0. Si votre connexion réseau est rapide, le slave I/O thread sera proche du masteret donc ce champ vous donnera une bonne approximation. Dans le cas contraire, le valeur sera 0 car le SQL thread est en attente du I/O thread et non car votre slave est à jour.</p>
<p>NULL est un autre valeur possible pour ce champ, si l&#8217;I/O thread est en pause ou en train de se reconnecter, celle valeur est mise à NULL.</p>
<p>En résumé, celle valeur est informative et peut éventuellement vous mettre sur la piste d&#8217;un problème réseau mais elle n&#8217;est pas à prendre pour argent comptant.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbnewz.com/2007/08/02/seconds_behind_master/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>log-slave-updates</title>
		<link>http://www.dbnewz.com/2007/07/05/log-slave-updates/</link>
		<comments>http://www.dbnewz.com/2007/07/05/log-slave-updates/#comments</comments>
		<pubDate>Thu, 05 Jul 2007 16:42:00 +0000</pubDate>
		<dc:creator>pébé</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[réplication]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[tuning]]></category>

		<guid isPermaLink="false">http://www.dbnewz.com/2007-07/19-log-slave-updates.htm</guid>
		<description><![CDATA[Des erreurs en enchaînant des réplications? J&#8217;ai retrouvé souvent la même erreur sur des configurations en &#171;&#160;multi master&#160;&#187; ou celles qui utilisent des &#171;&#160;relay slave&#160;&#187;.  Imaginons que vous ayez 3 serveurs A -&#62; B -&#62; C. A étant le master, B le relay slave et C le slave. Tout se passe bien, le résultat [...]]]></description>
			<content:encoded><![CDATA[<p>Des erreurs en enchaînant des réplications? J&#8217;ai retrouvé souvent la même erreur sur des configurations en &laquo;&nbsp;multi master&nbsp;&raquo; ou celles qui utilisent des &laquo;&nbsp;relay slave&nbsp;&raquo;.  Imaginons que vous ayez 3 serveurs A -&gt; B -&gt; C. A étant le master, B le relay slave et C le slave. Tout se passe bien, le résultat de la commande &laquo;&nbsp;show slave status&nbsp;&raquo; vous informe que tout roule et pourtant le slave (C) n&#8217;est pas à jour. Alors pourquoi? magie vaudou?<br />
Non! Vous avez tout simplement oublié d&#8217;ajouter sur votre relay slave (B) le paramètre &laquo;&nbsp;log-slave-updates&nbsp;&raquo;.</p>
<p>Un slave n&#8217;enregistre pas dans son journal (ses binlogs) les commandes qu&#8217;il reçoit de son master.   Donc dans notre cas (B) est à jour mais (C) n&#8217;a aucun moyen de connaître les commandes car (C) lit juste les binlogs de (B).</p>
<p>En rajoutant log-slave-updates dans le my.cnf de (B), il écrira toutes les commandes dans les binlogs et (C) sera ainsi à jour.</p>
<p>C&#8217;est aussi un bon moyen pour contrôler toutes les commandes exécutées sur votre slave. Cela m&#8217;a permis un jour de trouver la source d&#8217;un problème. Un client mal configuré venait mettre à jour un slave et faisait ainsi planter la réplication.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbnewz.com/2007/07/05/log-slave-updates/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Réplication et Log binaires</title>
		<link>http://www.dbnewz.com/2007/04/06/replication-et-log-binaires/</link>
		<comments>http://www.dbnewz.com/2007/04/06/replication-et-log-binaires/#comments</comments>
		<pubDate>Fri, 06 Apr 2007 20:58:43 +0000</pubDate>
		<dc:creator>pébé</dc:creator>
				<category><![CDATA[4.1]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[réplication]]></category>
		<category><![CDATA[benchmarks]]></category>
		<category><![CDATA[pratique]]></category>

		<guid isPermaLink="false">http://www.dbnewz.com/2007-04/4-replication-et-log-binaires.htm</guid>
		<description><![CDATA[Qui n&#8217;a jamais utilisé MySQL sans la réplication? La réplication permet à votre application de supporter un nombre de lecture beaucoup plus important. Les updates se font sur une base de donnée &#171;&#160;maître&#160;&#187; (master) et sont ensuite répliquées sur plusieurs &#171;&#160;esclaves&#160;&#187; (slaves). Le maître n&#8217;a pas à supporter les requêtes venant de clients qui sont [...]]]></description>
			<content:encoded><![CDATA[<p>Qui n&#8217;a jamais utilisé MySQL sans la réplication? La réplication permet à votre application de supporter un nombre de lecture beaucoup plus important. Les updates se font sur une base de donnée &laquo;&nbsp;maître&nbsp;&raquo; (master) et sont ensuite répliquées sur plusieurs &laquo;&nbsp;esclaves&nbsp;&raquo; (slaves). Le maître n&#8217;a pas à supporter les requêtes venant de clients qui sont gérées par les esclaves. Un autre jour je rentrerai plus en détails la dessus mais en résumé, le maître écrit dans des fichiers toutes les requêtes qui ont modifié ses informations (insert, update et delete). Les slaves viennent à leur tour récupérer ces fichiers (binary logs) et les &laquo;&nbsp;copie&nbsp;&raquo; localement (relay logs) avant de les rejouer.</p>
<p>Il est conseillé en général de dédier un disque pour ces fichiers car beaucoup d&#8217;écriture entraîne une baisse de vos performances. Dans le cas qui nous intéresse, l&#8217;activité du CPU m&#8217;a très étonné. En effet jusqu&#8217;à 60% du temps CPU étaient utilisé par &#8216;USER&#8217; juste en activant la réplication.<br />
<span id="more-4"></span><br />
Suite à cela j&#8217;ai décidé avec mon ami Laurent de faire un peu de profiling&#8230; sommes nous un peu DBCSI? (comprenez database crime scene investigators <img src='http://www.dbnewz.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> )  Pour cela un outil intéressant est <a href="http://mysqldump.azundris.com/archives/61-Using-oprofile.html" target="_blank">oprofile</a>.</p>
<p>Pour tester ça, nous avons un DELL 2850 sous RHEL4 1 disque (hélas) et 2Go de RAM. Le programme de test à été exécuté pendant 30 minutes, et voila les résultats surprenant.</p>
<ul>
<li>Avec binlog</li>
<p>Profiling through timer interrupt<br />
samples  %        image name               symbol name<br />
1680924  47.9708  /lib64/tls/libc-2.3.4.so __ctype_toupper_loc<br />
1651101  47.1197  /usr/libexec/mysqld      dict_create_foreign_constraints_low<br />
54986     1.5692  /usr/libexec/mysqld      yylex(void*, void*)<br />
9083      0.2592  /usr/libexec/mysqld      __do_global_ctors_aux<br />
8541      0.2437  /usr/libexec/mysqld      buf_pool_init<br />
8284      0.2364  /lib64/tls/libc-2.3.4.so memcpy<br />
5918      0.1689  /usr/libexec/mysqld      my_snprintf_ucs2<br />
4934      0.1408  /usr/libexec/mysqld      log_buffer_flush_to_disk<br />
4640      0.1324  /usr/libexec/mysqld      my_strntod_ucs2<br />
4268      0.1218  /usr/libexec/mysqld      MD5Transform<br />
3650      0.1042  /usr/libexec/mysqld      my_parse_charset_xml</p>
<li>Sans binlog</li>
<p>Profiling through timer interrupt<br />
samples  %        image name               symbol name<br />
34847     9.7094  /usr/libexec/mysqld      __do_global_ctors_aux<br />
30416     8.4748  /lib64/tls/libc-2.3.4.so memcpy<br />
30041     8.3703  /usr/libexec/mysqld      buf_pool_init<br />
20615     5.7439  /usr/libexec/mysqld      my_snprintf_ucs2<br />
17065     4.7548  /usr/libexec/mysqld      my_strntod_ucs2<br />
16656     4.6408  /usr/libexec/mysqld      log_buffer_flush_to_disk<br />
14908     4.1538  /usr/libexec/mysqld      dict_create_foreign_constraints_low<br />
9154      2.5506  /lib64/tls/libpthread-2.3.4.so pthread_mutex_trylock<br />
8354      2.3277  /lib64/tls/libc-2.3.4.so __ctype_toupper_loc<br />
8216      2.2892  /lib64/tls/libpthread-2.3.4.so pthread_mutex_unlock<br />
5347      1.4898  /usr/lib/debug/lib/modules/2.6.9-22.ELsmp/vmlinux copy_user_generic<br />
3380      0.9418  /usr/libexec/mysqld      buf_flush_try_page</ul>
<p>On remarque que lorsque les logs binaires sont activés, beaucoup de temps CPU est utilisé par cette fonction &laquo;&nbsp;dict_create_foreign_constraints_low&nbsp;&raquo;. Ce qui très étrange, car elle est supposé être utilisé lorsque d&#8217;une modification de DDL (création de tables,&#8230;) pour effectuer des vérifications sur les clés étrangères. Et sur cette application, même si nous sommes en InnoDB, il n&#8217;y en a aucune.</p>
<p>Des que nous aurons un peu de temps devant nous, nous referons le test sous MySQL 5.0.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbnewz.com/2007/04/06/replication-et-log-binaires/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
