<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://www.duchatelet.net/blog/index.php?feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
  <title>/var/log/greg.log - MySQL</title>
  <link>http://www.duchatelet.net/blog/index.php?</link>
  <description></description>
  <language>fr</language>
  <pubDate>Sun, 24 Jan 2010 19:32:04 +0100</pubDate>
  <copyright>Grégory Duchatelet</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Réplication MySQL multiple sources</title>
    <link>http://www.duchatelet.net/blog/index.php?post/2010/01/24/Replication-MySQL-multiple-sources</link>
    <guid isPermaLink="false">urn:md5:06883b496b2175b12e815f1e8d117fb2</guid>
    <pubDate>Sun, 24 Jan 2010 20:10:00 +0100</pubDate>
    <dc:creator>Greg</dc:creator>
        <category>MySQL</category>
        <category>mysql</category>    
    <description>    &lt;p&gt;Trop de données, trop d'écritures, la solution la plus rapide et facile à mettre en place consiste à déplacer des tables sur d'autres serveurs. Ainsi, on s'est retrouvé avec plusieurs &quot;bulles&quot; composées d'un master et de N slaves. Ce qui complique un peu quand même.&lt;/p&gt;


&lt;p&gt;Déjà, les backups. Maintenant, il faut un slave supplémentaire par bulle pour le backup. Rappel: il faut arrêter la réplication pour avoir un bon backup capable de repartir, de reconfigurer un slave from scratch.&lt;/p&gt;


&lt;p&gt;Autre problème, bien plus complexe: souvent, notamment pour les statistiques, il faut faire de grosses requêtes avec des JOINs inter tables et inter base de donnée.&lt;/p&gt;


&lt;p&gt;Il existe des solutions à ces problèmes, rajouter des slaves, faire de la consolidation de donnée par batch pour les stats... et le multiple source replication.
Cette fonctionnalité est hyper demandé chez MySQL, comme on peut le voir sur le &lt;a href=&quot;http://forge.mysql.com/worklog/task.php?id=1697&quot; hreflang=&quot;en&quot;&gt;worklog&lt;/a&gt;, il est d'ailleur en &lt;a href=&quot;http://forge.mysql.com/&quot; hreflang=&quot;en&quot;&gt;1ère position&lt;/a&gt;&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Ca fait quelques semaines que je suis sur un script pour émuler le multiple source. En fait, plutôt que de me taper le protocole, j'utilise directement le binaire mysqlbinlog fournit avec mysql, qui permet de se connecter à un master, de lui demander les logs. On peut même lui demander les logs à partir d'un fichier précis, d'une position précise, et jusqu'à ce qu'il en ai plus !!
Ce script utilise une base de donnée MySQL pour stocker les informations relatives à la réplication: position en cours, position suivante, fichier de log, erreurs... Il est capable de répliquer depuis plusieurs master (pas vraiment de limite, si ce n'est les performances du slave), mais attention, il se contente de lire les logs et de les executer, il est donc super préférable d'avoir des noms de base de données distinctes sur chaque master&amp;nbsp;!&lt;/p&gt;

&lt;pre&gt;
slave A ------- db a, b, c -------&amp;gt; \
slave B ------- db d, e ----------&amp;gt;  &amp;gt; msr slave
slave C ------- all db -----------&amp;gt; /
&lt;/pre&gt;


&lt;p&gt;Vous trouverez les sources sur &lt;a href=&quot;http://mysqlmsr.rubyforge.org/&quot;&gt;Rubyforge&lt;/a&gt;. Ce script tourne en environnement de production répliquant 3 slaves et 5 bases de données. J'ai fais quelques tests d'intégrité de données et n'ai pas constaté d'erreurs&amp;nbsp;!&lt;/p&gt;</description>
    
    
    
          <comments>http://www.duchatelet.net/blog/index.php?post/2010/01/24/Replication-MySQL-multiple-sources#comment-form</comments>
      <wfw:comment>http://www.duchatelet.net/blog/index.php?post/2010/01/24/Replication-MySQL-multiple-sources#comment-form</wfw:comment>
      <wfw:commentRss>http://www.duchatelet.net/blog/index.php?feed/rss2/comments/15</wfw:commentRss>
      </item>
    
  <item>
    <title>Restorer plus rapidement un dump MySQL</title>
    <link>http://www.duchatelet.net/blog/index.php?post/2009/08/25/Restorer-plus-rapidement-un-dump-MySQL</link>
    <guid isPermaLink="false">urn:md5:b9947ea6e721816515de7bea15ca38f8</guid>
    <pubDate>Tue, 25 Aug 2009 21:39:00 +0200</pubDate>
    <dc:creator>Greg</dc:creator>
        <category>MySQL</category>
            
    <description>    &lt;p&gt;Mon backup comprend un dossier par base de donnée, un fichier SQL compressé par table. Voici une astuce pour restaurer ce backup plus rapidement, surtout sur un serveur multi-cores.&lt;/p&gt;


&lt;p&gt;&lt;code&gt;find -print0 | xargs -0 -n 1 -P 4 -I {} sh -c &quot;zcat '{}' | mysql mydatabase&quot;&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;Je n'ai pas fais de tests comparatifs, je sais juste que ça va vraiment beaucoup plus vite !!&lt;/p&gt;</description>
    
    
    
          <comments>http://www.duchatelet.net/blog/index.php?post/2009/08/25/Restorer-plus-rapidement-un-dump-MySQL#comment-form</comments>
      <wfw:comment>http://www.duchatelet.net/blog/index.php?post/2009/08/25/Restorer-plus-rapidement-un-dump-MySQL#comment-form</wfw:comment>
      <wfw:commentRss>http://www.duchatelet.net/blog/index.php?feed/rss2/comments/14</wfw:commentRss>
      </item>
    
  <item>
    <title>Ca bouge chez MySQL !</title>
    <link>http://www.duchatelet.net/blog/index.php?post/2009/02/08/Ca-bouge-chez-MySQL</link>
    <guid isPermaLink="false">urn:md5:3ef96a7b544db6c9ad84f307e3fb7555</guid>
    <pubDate>Sun, 08 Feb 2009 08:42:00 +0000</pubDate>
    <dc:creator>Greg</dc:creator>
        <category>MySQL</category>
        <category>mysql</category><category>Planet-Libre</category>    
    <description>    &lt;p&gt;Ces 2 dernières semaines ont été bien mouvementées chez MySQL&amp;nbsp;!&lt;/p&gt;


&lt;h2&gt;Sortie de la 5.1.31&lt;/h2&gt;

&lt;p&gt;Cette version est importante car elle corrige de nombreux bugs critiques de la version GA 5.1.30, qui n'était tout simplement... pas stable. Cette nouvelle version est sortie le 19 janvier mais n'est apparu sur le site que bien plus tard... Il faut mieux surveiller les mirroirs FTP. En prod sur 6 serveurs depuis fin janvier, pour l'instant aucun crash à signaler, le bug semble donc bien corrigé.&lt;/p&gt;


&lt;h2&gt;Le père de MySQL, Monty, quitte SUN&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;http://monty-says.blogspot.com/2009/02/time-to-move-on.html&quot; hreflang=&quot;en&quot;&gt;Monty quitte SUN&lt;/a&gt; en bon terme, et monte sa société &lt;a href=&quot;http://askmonty.org/&quot; hreflang=&quot;en&quot;&gt;Monty Program AB&lt;/a&gt;, basée sur un modèle idéaliste ou tous les employés sont actionnaire (&lt;a href=&quot;http://zak.greant.com/hacking-business-models&quot; hreflang=&quot;en&quot;&gt;voir le détail&lt;/a&gt;), et surtout, ou l'open-source a toute son importance. Monty n'abandonne pas MySQL et va se consacrer à son moteur crash safe MariaDB.
Mixer MariaDB, le moteur XtraDB de Percona, le tout dans Drizzle, et on a la base de donnée la plus performante du monde :)&lt;/p&gt;


&lt;h2&gt;Marten Mikos aussi&amp;nbsp;!&lt;/h2&gt;

&lt;p&gt;Marten Mikos, directeur de MySQL, vice president de la section base de donnée chez SUN,  &lt;a href=&quot;http://news.cnet.com/8301-13505_3-10158335-16.html?part=rss&amp;amp;tag=feed&amp;amp;subj=TheOpenRoad&quot; hreflang=&quot;en&quot;&gt;quitte SUN&lt;/a&gt; à son tour.&lt;/p&gt;



&lt;p&gt;Un an après le rachat par Sun de MySQL, les départs commencent... Avaient-ils un contrat leur obligeant de rester 1 an&amp;nbsp;? Une rumeur (à prendre comme tel) parle d'un départ d'une 20ène de développeurs MySQL pour Monty Program AB.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.duchatelet.net/blog/index.php?post/2009/02/08/Ca-bouge-chez-MySQL#comment-form</comments>
      <wfw:comment>http://www.duchatelet.net/blog/index.php?post/2009/02/08/Ca-bouge-chez-MySQL#comment-form</wfw:comment>
      <wfw:commentRss>http://www.duchatelet.net/blog/index.php?feed/rss2/comments/10</wfw:commentRss>
      </item>
    
  <item>
    <title>MySQL 5.1.31</title>
    <link>http://www.duchatelet.net/blog/index.php?post/2009/01/14/MySQL-5131</link>
    <guid isPermaLink="false">urn:md5:6b357d0cd34c6e21d633380e50960a1f</guid>
    <pubDate>Wed, 14 Jan 2009 19:52:00 +0000</pubDate>
    <dc:creator>Greg</dc:creator>
        <category>MySQL</category>
            
    <description>    &lt;p&gt;MySQL devrait sortir ce mois-ci la version 5.1.31, qui corrigera entre autre &lt;a href=&quot;http://bugs.mysql.com/bug.php?id=38883&quot; hreflang=&quot;en&quot;&gt;le bug #38883&lt;/a&gt; concernant InnoDB, qui cause des crashs aléatoires, lors de l'interrogation du status innoDB du serveur:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SHOW INNODB STATUS&lt;/li&gt;
&lt;li&gt;innodb-status-file=1&lt;/li&gt;
&lt;li&gt;MySQL enterprise monitor&lt;/li&gt;
&lt;/ul&gt;</description>
    
    
    
          <comments>http://www.duchatelet.net/blog/index.php?post/2009/01/14/MySQL-5131#comment-form</comments>
      <wfw:comment>http://www.duchatelet.net/blog/index.php?post/2009/01/14/MySQL-5131#comment-form</wfw:comment>
      <wfw:commentRss>http://www.duchatelet.net/blog/index.php?feed/rss2/comments/8</wfw:commentRss>
      </item>
    
  <item>
    <title>Performances MySQL 5.1: 2nd round</title>
    <link>http://www.duchatelet.net/blog/index.php?post/2009/01/04/Performances-MySQL-51%3A-2nd-round</link>
    <guid isPermaLink="false">urn:md5:ec94c889346b2946d001068ca6e273d5</guid>
    <pubDate>Sun, 04 Jan 2009 09:38:00 +0000</pubDate>
    <dc:creator>Greg</dc:creator>
        <category>MySQL</category>
            
    <description>    &lt;p&gt;Dans le billet précédent, j'ai eu un premier aperçu de MySQL 5.1.30 au niveau des performances, à comparaison égale avec 5.0.76, où on peut constater une nette dégradation des performances, notamment au niveau des accès disques (IO).&lt;/p&gt;


&lt;p&gt;J'ai voulu profiter de cet environnement de prod en test un peu plus, parce que c'est pas tous les jours qu'on a ce genre d'occasion&amp;nbsp;! Parce que la prod, comme son nom l'indique, n'est pas un environnement de tests.... passons, je sais que c'est mal, mais je sais que si ça crash, rien ne se verra, les applications continueront de fonctionner sans erreurs, vive le web 2.0 !!&lt;/p&gt;


&lt;p&gt;J'ai donc pu tester une des nouvelles feature de 5.1: le partitionnement. En terme de performance (toujours, toujours...) ça donne quoi&amp;nbsp;?&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://www.duchatelet.net/blog/public/./.dragon-22-5130-partionned_m.jpg&quot; alt=&quot;partionnement mysql 5.1&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Ce graph CPU représente la phase de partitionnement: 3 tables de ~100 millions d'enregistrements chacunes. 99% des requêtes SQL concerne un status: &lt;code&gt;WHERE status=1&lt;/code&gt;, j'ai donc partitionné ces tables par HASH sur cette colonne: la partition interrogé ne fait plus qu' 1/3 !!&lt;/p&gt;


&lt;p&gt;L'impact sur les perfs est sans appels, et là MySQL 5.1 devient plus performant que 5.0. Sur le graph CPU suivant, on peut distinguer 3 périodes&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MySQL 5.0.76&lt;/li&gt;
&lt;li&gt;MySQL 5.1.30&lt;/li&gt;
&lt;li&gt;MySQL 5.1.30 avec tables partitionnées&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;http://www.duchatelet.net/blog/public/./.mysql51_partionned_m.jpg&quot; alt=&quot;Impact 5.1 partionnement&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Au niveau stabilité, le serveur n'a jamais planté, que ce soit lors du partitionnement, avant ou après. Cependant j'ai quelques problèmes avec son master qui est aussi en 5.1.30 et qui a crashé 2x en 1 mois... Un ticket est ouvert chez mysql.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.duchatelet.net/blog/index.php?post/2009/01/04/Performances-MySQL-51%3A-2nd-round#comment-form</comments>
      <wfw:comment>http://www.duchatelet.net/blog/index.php?post/2009/01/04/Performances-MySQL-51%3A-2nd-round#comment-form</wfw:comment>
      <wfw:commentRss>http://www.duchatelet.net/blog/index.php?feed/rss2/comments/7</wfw:commentRss>
      </item>
    
  <item>
    <title>MySQL 5.1 en prod: impact sur les performances</title>
    <link>http://www.duchatelet.net/blog/index.php?post/2008/12/23/MySQL-51-en-prod%3A-impact-sur-les-performances</link>
    <guid isPermaLink="false">urn:md5:0149ce903e62401855970e8afa8e4012</guid>
    <pubDate>Tue, 23 Dec 2008 13:47:00 +0000</pubDate>
    <dc:creator>Greg</dc:creator>
        <category>MySQL</category>
            
    <description>    &lt;p&gt;MySQL 5.1 GA est sortie en grande pompe, et tout le monde y va de son billet, pour ou contre. J'ai pu le mettre en environnement de production en mode master/slave et slave: le premier est slave d'un 5.0.56, et master d'un 2ème serveur en 5.1.30.&lt;/p&gt;


&lt;p&gt;On peut nettement apercevoir sur le graph CPU suivant, la mise en prod de la version 5.1.30, avec une très nette augmentation des IO disques&amp;nbsp;! Le slave (22), en 5.0, prenait parfois du délais lors de la regénération de tables, en 5.1 il prend nettement plus de délais. Je n'ai même pas testé les nouvelles fonctionnalités comme le partitionnement, ayant lu sur plusieurs articles que cette version était encore trop buguée si on les utilisait...&lt;/p&gt;


&lt;p&gt;Ah oui, et c'est pas tout... Le master/slave (21) a lamentablement crashé, après 6 jours seulement d'utilisation&amp;nbsp;! Un ticket est ouvert chez MySQL, qui n'a pas de solution, et attend le prochain crash avec cette fois les core dump d'activés. En espérant que ce crash n'arrive pas pendant les fêtes&amp;nbsp;!&lt;/p&gt;



&lt;p&gt;&lt;img src=&quot;http://www.duchatelet.net/blog/public/impact_mysql5130.jpg&quot; alt=&quot;MySQL 5.0 =&amp;gt; 5.1&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://www.duchatelet.net/blog/index.php?post/2008/12/23/MySQL-51-en-prod%3A-impact-sur-les-performances#comment-form</comments>
      <wfw:comment>http://www.duchatelet.net/blog/index.php?post/2008/12/23/MySQL-51-en-prod%3A-impact-sur-les-performances#comment-form</wfw:comment>
      <wfw:commentRss>http://www.duchatelet.net/blog/index.php?feed/rss2/comments/6</wfw:commentRss>
      </item>
    
</channel>
</rss>