<?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>mysql Archives - Mon linux</title>
	<atom:link href="https://www.monlinux.net/tag/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.monlinux.net/tag/mysql/</link>
	<description>by Belgotux</description>
	<lastBuildDate>Thu, 22 Feb 2024 12:35:00 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.4</generator>

<image>
	<url>https://www.monlinux.net/wp-content/uploads/cropped-mon-linux-logo-grey-512-32x32.png</url>
	<title>mysql Archives - Mon linux</title>
	<link>https://www.monlinux.net/tag/mysql/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Mysqldump benchmark compression</title>
		<link>https://www.monlinux.net/2024/02/mysqldump-benchmark-compression/</link>
					<comments>https://www.monlinux.net/2024/02/mysqldump-benchmark-compression/#respond</comments>
		
		<dc:creator><![CDATA[belgotux]]></dc:creator>
		<pubDate>Thu, 22 Feb 2024 17:20:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[mysql]]></category>
		<guid isPermaLink="false">http://www.monlinux.net/?p=1067</guid>

					<description><![CDATA[<p>Mysqldump tout le monde l&#8217;utilise pour exporter des donn&#233;es MySQL. Cependant, le volume de donn&#233;es g&#233;n&#233;r&#233; par Mysqldump peut rapidement devenir consid&#233;rable. Il est tr&#232;s utile de pouvoir compresser ces dump pour r&#233;duire leur taille, mais sans avoir des pertes... <a class="more-link" href="https://www.monlinux.net/2024/02/mysqldump-benchmark-compression/">Continue Reading &#8594;</a></p>
<p>L’article <a href="https://www.monlinux.net/2024/02/mysqldump-benchmark-compression/">Mysqldump benchmark compression</a> est apparu en premier sur <a href="https://www.monlinux.net">Mon linux</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Mysqldump tout le monde l&rsquo;utilise pour exporter des données MySQL. Cependant, le volume de données généré par Mysqldump peut rapidement devenir considérable. Il est très utile de pouvoir compresser ces dump pour réduire leur taille, mais sans avoir des pertes de performances inutiles. J&rsquo;ai mesuré l&rsquo;impact de différentes méthodes de compression gzip, pigz, xz et pixz. Afin de mettre en lumière les performances de Mysqldump et les gains en termes d&rsquo;espace de stockage.</p>



<span id="more-1067"></span>



<h2 class="wp-block-heading">Protocole de test</h2>



<ul class="wp-block-list">
<li>Une base de données de dump brute de 7Go avec innodb a été utilisée</li>



<li>Cela tourne sous MySQL 5.7, c&rsquo;est une veille app comme il en reste beaucoup. Il faudra tester également avec MySQL 8.0.</li>



<li>VM sous ESXi avec 12 vCPU intel Xeon qui ont 5ans.</li>
</ul>



<h3 class="wp-block-heading">Compressions utilisées</h3>



<p class="wp-block-paragraph">La compression de texte se passant mal pour bzip2, je l&rsquo;ai d&rsquo;office exclus. J&rsquo;envisage donc Gzip et XZ. Il y a le monde un seul thread avec :</p>



<ul class="wp-block-list">
<li>Gzip</li>



<li>XZ</li>
</ul>



<p class="wp-block-paragraph">Et multi-thread avec : </p>



<ul class="wp-block-list">
<li>pigz</li>



<li>pixz</li>
</ul>



<p class="wp-block-paragraph">Quand il n&rsquo;y a plus de gain selon le niveau de compression (pouvant aller de 1 à 9), j&rsquo;arrête les tests inutiles.</p>



<h2 class="wp-block-heading">Tableau benchmark compression Mysqldump</h2>



<p class="wp-block-paragraph">Pour Gzip, il n&rsquo;y a plus de gain de taille après une compression de 7.</p>



<p class="wp-block-paragraph">Pour XZ, il n&rsquo;y a plus de gain de taille après un niveau de 5.</p>



<figure class="wp-block-table"><table><tbody><tr><td rowspan="3">Algorithme</td><td rowspan="3">Proc</td><td colspan="5">Compression</td><td colspan="2">Décompression</td></tr><tr><td rowspan="2">Niveau</td><td>Taille</td><td rowspan="2">Ratio</td><td rowspan="2">Temps (min)</td><td>Vitesse</td><td>Temps</td><td>Vitesse</td></tr><tr><td>(Mo)</td><td>(Mo/s)</td><td>(min)</td><td>(Mo/s)</td></tr><tr><td rowspan="3">gzip</td><td rowspan="3">1</td><td>3</td><td>1291</td><td>18,06%</td><td>2,82</td><td>42,30</td><td>1,93</td><td>61,62</td></tr><tr><td>5</td><td>1143</td><td>15,99%</td><td>3,70</td><td>32,20</td><td>1,52</td><td>78,55</td></tr><tr><td>7</td><td>1115</td><td>15,60%</td><td>5,53</td><td>21,53</td><td>1,43</td><td>83,12</td></tr><tr><td rowspan="9">pigz</td><td rowspan="3">2</td><td>3</td><td>1287</td><td>18,01%</td><td>1,62</td><td>73,69</td><td>1,65</td><td>72,20</td></tr><tr><td>5</td><td>1143</td><td>15,99%</td><td>1,98</td><td>60,07</td><td>1,55</td><td>76,86</td></tr><tr><td>7</td><td>1115</td><td>15,60%</td><td>2,73</td><td>43,59</td><td>1,57</td><td>76,04</td></tr><tr><td rowspan="3">3</td><td>3</td><td>1287</td><td>18,01%</td><td>1,38</td><td>86,12</td><td>1,38</td><td>86,12</td></tr><tr><td>5</td><td>1143</td><td>15,99%</td><td>2,17</td><td>54,98</td><td>1,53</td><td>77,70</td></tr><tr><td>7</td><td>1115</td><td>15,60%</td><td>2,30</td><td>51,80</td><td>1,6</td><td>74,46</td></tr><tr><td rowspan="3">4</td><td>3</td><td>1287</td><td>18,01%</td><td>1,45</td><td>82,16</td><td>1,40</td><td>85,10</td></tr><tr><td>5</td><td>1143</td><td>15,99%</td><td>1,63</td><td>72,94</td><td>1,62</td><td>73,69</td></tr><tr><td>7</td><td>1115</td><td>15,60%</td><td>1,87</td><td>63,82</td><td>1,55</td><td>76,86</td></tr><tr><td colspan="10">&nbsp;</td></tr><tr><td rowspan="3">xz</td><td rowspan="3">1</td><td>1</td><td>841</td><td>11,77%</td><td>8,52</td><td>13,99</td><td>2,4</td><td>49,64</td></tr><tr><td>3</td><td>771</td><td>10,79%</td><td>24,25</td><td>4,91</td><td>1,73</td><td>68,73</td></tr><tr><td>5</td><td>680</td><td>9,51%</td><td>56,13</td><td>2,12</td><td>1,63</td><td>72,94</td></tr><tr><td rowspan="12">pixz</td><td rowspan="2"><strong>2</strong></td><td><strong>1</strong></td><td><strong>841</strong></td><td><strong>11,77%</strong></td><td><strong>8,07</strong></td><td>14,77</td><td>1,62</td><td>73,69</td></tr><tr><td>3</td><td>771</td><td>10,79%</td><td>17,32</td><td>6,88</td><td>1,72</td><td>69,40</td></tr><tr><td rowspan="2">3</td><td>1</td><td>841</td><td>11,77%</td><td>9,07</td><td>13,14</td><td>3,13</td><td>38,02</td></tr><tr><td>3</td><td>771</td><td>10,79%</td><td>26,90</td><td>4,43</td><td>3,03</td><td>39,27</td></tr><tr><td rowspan="4">4</td><td>1</td><td>841</td><td>11,77%</td><td>8,82</td><td>13,51</td><td>1,98</td><td>60,07</td></tr><tr><td>3</td><td>771</td><td>10,79%</td><td>19,22</td><td>6,20</td><td>2,00</td><td>59,57</td></tr><tr><td>4</td><td>768</td><td>10,74%</td><td>31,03</td><td>3,84</td><td>1,97</td><td>60,58</td></tr><tr><td>5</td><td>680</td><td>9,51%</td><td><span style="color: #ff0000;">47,73</span></td><td>2,50</td><td>1,92</td><td>62,16</td></tr><tr><td rowspan="2"><strong>5</strong></td><td>1</td><td>841</td><td>11,77%</td><td>8,12</td><td>14,68</td><td>2,98</td><td>39,93</td></tr><tr><td><strong>3</strong></td><td><strong>771</strong></td><td><strong>10,79%</strong></td><td><strong>17,38</strong></td><td>6,85</td><td>3,02</td><td>39,49</td></tr><tr><td rowspan="2">6</td><td>1</td><td>841</td><td>11,77%</td><td>8,00</td><td>14,89</td><td>2,58</td><td>46,12</td></tr><tr><td>3</td><td>771</td><td>10,79%</td><td>17,08</td><td>6,97</td><td>2,07</td><td>57,65</td></tr></tbody></table></figure>



<h3 class="wp-block-heading">Résultats de compression Mysqldump</h3>



<p class="wp-block-paragraph">Le meilleur temps qui ne consomme pas trop de ressources, c&rsquo;est <strong>pigz avec 4 threads et une compression de niveau 3</strong>. La compression est très bonne un niveau 7, mais 3% de taille en moins pour 28% de temps en plus, est-ce utile ? Vous savez quoi utilise pour gagner 5,5x l&rsquo;espace disque en impactant très peu la charge CPU.</p>



<p class="wp-block-paragraph">Comme vous pouvez le voir, il y a deux options si vous avez besoin d&rsquo;archiver à long terme beaucoup de données :</p>



<ul class="wp-block-list">
<li>soit vous cherchez la rapidité et avoir un gain important de place par rapport à gzip et vous utiliserez pixz avec un niveau 1 de compression et 2 processus.</li>



<li>soit vous cherchez une compression importante et vous utiliserez <strong>pixz avec un niveau 3 de compression et 5 processus</strong>. Un niveau plus haut que 3 ne sert à rien, trop de temps perdu pour un gain minime de compression, comme on peut le voir avec un niveau 5</li>
</ul>



<p class="wp-block-paragraph">Si vous avez une architecture master/slave MySQL, je vous conseille de le faire sur votre slave pour éviter les lock tables sur votre master.</p>



<p class="wp-block-paragraph">J&rsquo;ai effectué un comparatif également pour <a href="https://www.monlinux.net/2017/11/xtrabackup-benchmark-compression-mysql/">les backups compressés d&rsquo;XtraBackup</a>.</p>
<p>L’article <a href="https://www.monlinux.net/2024/02/mysqldump-benchmark-compression/">Mysqldump benchmark compression</a> est apparu en premier sur <a href="https://www.monlinux.net">Mon linux</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.monlinux.net/2024/02/mysqldump-benchmark-compression/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Rôle Ansible Automysqlbackup</title>
		<link>https://www.monlinux.net/2023/07/role-ansible-automysqlbackup/</link>
					<comments>https://www.monlinux.net/2023/07/role-ansible-automysqlbackup/#respond</comments>
		
		<dc:creator><![CDATA[belgotux]]></dc:creator>
		<pubDate>Sat, 01 Jul 2023 15:10:00 +0000</pubDate>
				<category><![CDATA[ansible]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>
		<guid isPermaLink="false">https://www.monlinux.net/?p=1888</guid>

					<description><![CDATA[<p>J&#8217;ai cr&#233;&#233; ce r&#244;le Ansible Automysqlbackup qui est compatible Debian, Ubuntu et la branche Redhat pour d&#233;ployer le fork d&#8217;Automysqlbackup remis aux normes actuelles. Ce r&#244;le est disponible sur Ansible Galaxy et le projet est disponible sur github &#233;galement. Installation... <a class="more-link" href="https://www.monlinux.net/2023/07/role-ansible-automysqlbackup/">Continue Reading &#8594;</a></p>
<p>L’article <a href="https://www.monlinux.net/2023/07/role-ansible-automysqlbackup/">Rôle Ansible Automysqlbackup</a> est apparu en premier sur <a href="https://www.monlinux.net">Mon linux</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">J&rsquo;ai créé ce rôle Ansible Automysqlbackup qui est compatible Debian, Ubuntu et la branche Redhat pour déployer <a href="https://www.monlinux.net/2023/05/automysqlbackup-sauvegarde-mysql/">le fork d&rsquo;Automysqlbackup</a> remis aux normes actuelles. Ce rôle est disponible sur <a href="https://galaxy.ansible.com/belgotux/automysqlbackup" target="_blank" rel="noreferrer noopener">Ansible Galaxy</a> et le projet est <a href="https://github.com/belgotux/ansible-role-automysqlbackup" target="_blank" rel="noreferrer noopener">disponible sur github</a> également.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Installation du rôle Ansible Automysqlbackup</h2>



<p class="wp-block-paragraph">Pour installer ce rôle de configuration sous Debian ou Ubuntu rien de plus simple : </p>



<pre class="wp-block-code"><code lang="bash" class="language-bash">ansible-galaxy install belgotux.automysqlbackup</code></pre>



<h3 class="wp-block-heading">Pré-requis</h3>



<p class="wp-block-paragraph">Il est préférable de créer un utilisateur spécifique pour automysqlbackup sur chaque serveur devant être sauvegardé. Pour cela les droits suivants sont nécessaire : </p>



<pre class="wp-block-code"><code lang="sql" class="language-sql">CREATE USER 'automysqlbackup'@'serverA' IDENTIFIED BY  '&lt;your_password_secret>';
GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER,USAGE ON *.* TO 'automysqlbackup'@'serverA' ;</code></pre>



<p class="wp-block-paragraph">Pour utiliser le rôle Ansible Automysqlbackup en local, les droits suivants : </p>



<pre class="wp-block-code"><code lang="sql" class="language-sql">CREATE USER 'automysqlbackup'@'localhost' IDENTIFIED BY  '&lt;your_password_secret>';
GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER,USAGE ON *.* TO 'automysqlbackup'@'localhost' ;</code></pre>



<h2 class="wp-block-heading">Configuration des variables Ansible</h2>



<h3 class="wp-block-heading">Nécessaires</h3>



<p class="wp-block-paragraph">Configuration du serveur : </p>



<ul class="wp-block-list">
<li><code>automysqlbackup_repo</code> répertoire où déposer le projet git (défaut <code>/opt</code>)</li>



<li><code>automysqlbackup_client</code> binaire sql client à utiliser, soit mariadb-client ou mysql-client (défaut <code>mariadb-client</code>)</li>



<li><code>automysqlbackup_bin</code> répertoire où copier le script (défaut <code>/usr/local/bin</code>)</li>



<li><code>automysqlbackup_conf</code> répertoire des configurations (défaut <code>/etc/automysqlbackup</code>)</li>



<li><code>automysqlbackup_backupdir</code> répertoire des sauvegardes</li>
</ul>



<p class="wp-block-paragraph">Configuration du client SQL</p>



<ul class="wp-block-list">
<li><code>automysqlbackup_default_user</code> utilisateur MySQL utilisé par défaut pour les serveurs (défaut <code>automysqlbackup</code>)</li>



<li><code>automysqlbackup_default_passwd</code> mot de passe MySQL utilisé par défaut pour les serveurs</li>



<li><code>automysqlbackup_configurations</code> liste des serveurs à sauvegarder. Prend la valeur de <code>automysqlbackup_default_user</code>, <code>automysqlbackup_default_passwd</code>, etc si <code>user</code>, <code>passwd</code>, etc n&rsquo;est pas défini</li>
</ul>



<pre class="wp-block-code"><code class="">automysqlbackup_configurations:
- name: server1
  server: xxx.yourdomain.tld
  port: 3306            # default use 3306
  user: test            # default use `automysqlbackup_default_user`
  passwd: testpwd       # default use `automysqlbackup_default_passwd`
  cron: "0 23 * * *"    # default use `automysqlbackup_default_cron`
  montly: 01            # default use `automysqlbackup_monthly`
  weekly: 5             # default use `automysqlbackup_weekly`
  daily_to_keep: 5      # default use `automysqlbackup_daily_to_keep`
  weekly_to_keep: 4     # default use `automysqlbackup_weekly_to_keep`
  monthly_to_keep: 3    # default use `automysqlbackup_monthly_to_keep`
- name: server2
  server: 192.168.x.x
</code></pre>



<ul class="wp-block-list">
<li><code>automysqlbackup_default_db_exclude</code> liste des bases de données exclues par défaut si la variable <code>db_names</code> n&rsquo;est pas remplie sur la configuration serveur (défaut « <code>('information_schema' 'performance_schema' 'sys' )</code>« )</li>



<li><code>automysqlbackup_default_table_exclude</code> liste des tables à exclure au format db_name.table_name (défaut « <code>('mysql.event')</code>« )</li>



<li><code>automysqlbackup_default_cron</code> défini le cron par défaut à utiliser pour tous les serveurs, exemple <code>"0 23 * * *"</code></li>



<li><code>automysqlbackup_create_user</code> utilisateur système à créer par le rôle, <code>true</code> or <code>false</code> ? Crée <code>automysqlbackup_default_cron_user</code> (défaut <code>true</code>)</li>
</ul>



<h2 class="wp-block-heading">Facultatif</h2>



<h3 class="wp-block-heading" id="server-configuration-1">Server configuration</h3>



<ul class="wp-block-list">
<li><code>automysqlbackup_multicore</code> utilisation de compression multicore pigz pour gzip ou pbzip2 pour bzip2. Peut être <code>'yes'</code> ou <code>'no'</code> (défaut <code>'no'</code>)</li>



<li><code>automysqlbackup_multicore_threads</code> nombre de cpu à utiliser. Peut être un nombre ou <code>auto</code> pour laisser pigz ou pbzip2 choisir (défaut <code>auto</code>)</li>



<li><code>automysqlbackup_default_cron_user</code> utilisateur à utiliser pour exécuter le cron (default <code>automysqlbackup</code>)</li>



<li><code>automysqlbackup_default_cron_group</code> groupe à utiliser pour le dossier de backup (défaut <code>users</code>)</li>



<li><code>automysqlbackup_default_cron_path</code> répertoire cron (défaut <code>/etc/cron.d</code>)</li>
</ul>



<h3 class="wp-block-heading" id="sql-client-configuration-1">SQL client configuration</h3>



<ul class="wp-block-list">
<li><code>automysqlbackup_monthly</code> quelle jour faire le backup mensuel ? (01 à 31) mettre 0 pour désactivé le backup mensuel (défaut <code>01</code>)</li>



<li><code>automysqlbackup_weekly</code> uelle jour faire le backup hebdomadaire ? (1 à 7 ou 1 est lundi) mettre 0 pour désactivé le backup hebdomadaire (défaut <code>5</code>)</li>



<li><code>automysqlbackup_daily_to_keep</code> combien de backups journaliers à garder (défaut <code>6</code>)</li>



<li><code>automysqlbackup_weekly_to_keep</code> combien de backups hebdomadaires à garder (défaut <code>28</code>)</li>



<li><code>automysqlbackup_monthly_to_keep</code> combien de backups mensuels à garder (défaut <code>180</code>)</li>



<li><code>automysqlbackup_no_tablespaces</code> le droits sql PROCESS est nécessaire depuis MySQL 5.7.31 et 8.0.21, l&rsquo;option &#8211;no-tablespaces permet d&rsquo;éviter d&rsquo;avoir l&rsquo;erreur. Peut être <code>'yes'</code> ou <code>'no'</code> (défaut <code>'yes'</code>)</li>



<li><code>automysqlbackup_dump_usessl</code> Utiliser le chiffrement SSL avec mysqldump ? Peut être <code>'yes'</code> ou <code>'no'</code> (défaut <code>'no'</code>)</li>



<li><code>automysqlbackup_dump_single_transaction</code> Lors de l&rsquo;utilisation de cette option, il est important de noter que seules les tables InnoDB sont sauvegardées dans un état cohérent. Par exemple, toutes les tables MyISAM ou MEMORY sauvegardées lors de l&rsquo;utilisation de cette option peuvent encore changer d&rsquo;état. Peut être <code>'yes'</code> ou <code>'no'</code> (défaut <code>'no'</code>)</li>



<li><code>automysqlbackup_dump_dbstatus</code> Statut de sauvegarde de table(s) dans un fichier texte. Cela est très utile lors de la restauration des sauvegardes, car cela donne une idée des changements survenus entre-temps. Peut être <code>'yes'</code> ou <code>'no'</code> (défaut <code>'no'</code>)</li>



<li><code>automysqlbackup_dump_create_database</code> Inclure la commande CREATE DATABASE dans le backup. Peut être <code>'yes'</code> ou <code>'no'</code> (défaut <code>'no'</code>)</li>



<li><code>automysqlbackup_dump_use_separate_dirs</code> séparer le répertoire de backup pour chaque base de données. Peut être <code>'yes'</code> ou <code>'no'</code> (défaut <code>'yes'</code>)</li>



<li><code>automysqlbackup_dump_compression</code> choisir une compression du type <code>gzip</code> or <code>bzip2</code> (défaut <code>gzip</code>)</li>



<li><code>automysqlbackup_dump_latest</code> Stocker une copie supplémentaire (lien physique) de la dernière sauvegarde dans un emplacement standard afin qu&rsquo;elle puisse être téléchargée par des scripts tiers. Peut être <code>'yes'</code> ou <code>'no'</code> (défaut <code>'yes'</code>)</li>



<li><code>automysqlbackup_dump_latest_clean_filenames</code> Supprimer toutes les informations de date et d&rsquo;heure des noms de fichiers dans le dossier le plus récent. (défaut yes)</li>



<li><code>automysqlbackup_mailcontent</code> Que souhaitez-vous recevoir par courrier électronique : <code>log</code> (envoi les log), <code>files</code> (envoie les logs et fichiers sql en attaché), <code>stdout</code> (affiche les log dans la sortie standard utile pour l&rsquo;exécution manuelle), <code>quiet</code> (envoie les log uniquement si une erreur apparait) (défaut <code>log</code>)</li>



<li><code>automysqlbackup_mail_address</code> addresse mail du destinataire</li>



<li><code>automysqlbackup_dryrun</code> Simulation de ce qui sera fait, ne fait rien en réalité. <code>0</code> mode inactif, <code>1</code> mode actif (défaut <code>0</code>)</li>
</ul>
<p>L’article <a href="https://www.monlinux.net/2023/07/role-ansible-automysqlbackup/">Rôle Ansible Automysqlbackup</a> est apparu en premier sur <a href="https://www.monlinux.net">Mon linux</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.monlinux.net/2023/07/role-ansible-automysqlbackup/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AutoMySQLBackup &#8211; sauvegarde MySQL</title>
		<link>https://www.monlinux.net/2023/05/automysqlbackup-sauvegarde-mysql/</link>
					<comments>https://www.monlinux.net/2023/05/automysqlbackup-sauvegarde-mysql/#comments</comments>
		
		<dc:creator><![CDATA[belgotux]]></dc:creator>
		<pubDate>Sun, 21 May 2023 19:32:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>
		<guid isPermaLink="false">https://www.monlinux.net/?p=1858</guid>

					<description><![CDATA[<p>Vous vous souvenez surement avoir utilis&#233; il y a encore quelques ann&#233;es AutoMySQLBackup sur SourceForge ? Il &#233;tait rapide &#224; mettre en place pour g&#233;rer la sauvegarde mysql. Mais il est en d&#233;su&#233;tude depuis longtemps, il n&#8217;y a plus de... <a class="more-link" href="https://www.monlinux.net/2023/05/automysqlbackup-sauvegarde-mysql/">Continue Reading &#8594;</a></p>
<p>L’article <a href="https://www.monlinux.net/2023/05/automysqlbackup-sauvegarde-mysql/">AutoMySQLBackup &#8211; sauvegarde MySQL</a> est apparu en premier sur <a href="https://www.monlinux.net">Mon linux</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Vous vous souvenez surement avoir utilisé il y a encore quelques années <a href="https://sourceforge.net/projects/automysqlbackup/" target="_blank" rel="noreferrer noopener">AutoMySQLBackup sur SourceForge</a> ? Il était rapide à mettre en place pour gérer la sauvegarde mysql. Mais il est en désuétude depuis longtemps, il n&rsquo;y a plus de support. J&rsquo;ai décidé de reprendre ce script en hébergeant <a href="https://github.com/belgotux/automysqlbackup" target="_blank" rel="noreferrer noopener">AutoMySQLBackup sur github</a>.</p>



<p class="wp-block-paragraph">L&rsquo;utilisation est presque la même, hormis l&rsquo;utilisation préférable d&rsquo;un fichier my.cnf pour ne plus avoir les identifiants MySQL dans la ligne de commande&#8230; Le mot de passe est stocké dans un fichier à devoir remplir dans la variable <code>CONFIG_mysql_mycnf_file</code> . </p>



<p class="wp-block-paragraph">D&rsquo;autres bugfix ont été réglés pour des arguments actuellement dépréciés &#8211;ssl, ainsi que des problèmes lié à un accès refusé pour les tablespaces.</p>



<p class="wp-block-paragraph">Pour ceux qui ne connaissent pas, AutoMySQLBackup permet un fonctionnement en mode whitelist ou blacklist des bases de données à sauvegarder. Souvent, on va lui dire que tout sauvegarder sauf <code>information_schema, performance_schema, sys</code>. C&rsquo;est donc une sauvegarde MySQL automatique ! Et toute nouvelle base de données ajoutée sur le serveur mutualisé sera automatiquement sauvegardée ! Il permet de gérer une rétention différente pour les backups journaliers, hebdomadaires ou mensuels.</p>



<h2 class="wp-block-heading">Installation d&rsquo;AutoMySQLBackup</h2>



<p class="wp-block-paragraph">Voici les étapes d&rsquo;installation : </p>



<ul class="wp-block-list">
<li>Pré-requis de bonne pratique, créer un utilisateur dédié au dump MySQL pour AutoMySQLBackup</li>
</ul>



<pre class="wp-block-code"><code class="">CREATE USER 'automysqlbackup'@'localhost' IDENTIFIED BY  '&lt;MOT_DE_PASSE&gt;';
GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER,USAGE ON *.* TO 'automysqlbackup'@'localhost' ;</code></pre>



<ul class="wp-block-list">
<li>Copier le répertoire git OU directement le dernière version de l&rsquo;archive</li>
</ul>



<pre class="wp-block-code"><code class="">git clone https://github.com/belgotux/automysqlbackup.git
wget https://github.com/belgotux/automysqlbackup/archive/refs/heads/main.zip &amp;&amp; unzip main.zip</code></pre>



<ul class="wp-block-list">
<li>Installer le script et les fichiers de configuration</li>
</ul>



<pre class="wp-block-code"><code class="">sudo bash install.sh</code></pre>



<ul class="wp-block-list">
<li>Créer le fichier contenant les identifiants de connexion <code>/etc/automysqlbackup/votre-server.cnf</code></li>
</ul>



<pre class="wp-block-code"><code class="">[mysqldump]
user=automysqlbackup
password=""
[mysql]
user=automysqlbackup
password=""
[mysqlshow]
user=automysqlbackup
password=""</code></pre>



<ul class="wp-block-list">
<li>Créer le fichier de configuration <code>/etc/automysqlbackup/votre-server.conf</code> en vous basant sur le <a href="https://github.com/belgotux/automysqlbackup/blob/main/template.conf" target="_blank" rel="noreferrer noopener">template</a>. Les points importants sont : </li>
</ul>



<pre class="wp-block-code"><code class="">CONFIG_mysql_mycnf_file='/etc/automysqlbackup/votre-server.cnf'
CONFIG_mysql_dump_host='localhost'
CONFIG_backup_dir='/backup/db'
CONFIG_db_names=()  # laisser vide pour sauvegarder toutes les bases de données
CONFIG_db_month_names=() # idem
CONFIG_db_exclude=( 'information_schema' 'performance_schema' 'sys' ) # exclus ces bases
CONFIG_table_exclude=('mysql.event') # exclus cette table
CONFIG_do_monthly="01"
CONFIG_do_weekly="6"
CONFIG_rotation_daily=7
CONFIG_rotation_weekly=4
CONFIG_rotation_monthly=180
CONFIG_mysql_no_tablespaces='yes'
CONFIG_mysql_dump_use_separate_dirs='yes'
CONFIG_mysql_dump_compression='gzip'
CONFIG_mysql_dump_latest='yes'
CONFIG_mysql_dump_latest_clean_filenames='no'
CONFIG_mailcontent='quiet'
CONFIG_mail_address='root'</code></pre>



<ul class="wp-block-list">
<li>Créer le cron <code>/etc/cron.d/automysqlbackup</code></li>
</ul>



<pre class="wp-block-code"><code class="">0 21 * * *       root    /usr/local/bin/automysqlbackup /etc/automysqlbackup/votre-server.conf &gt; /dev/null</code></pre>



<ul class="wp-block-list">
<li>Tester manuellement une première fois pour vérifier la création des dossiers daily/weekly/monthly</li>
</ul>



<pre class="wp-block-code"><code class="">/usr/local/bin/automysqlbackup /etc/automysqlbackup/votre-server.conf</code></pre>



<p class="wp-block-paragraph">Voilà, vos sauvegardes MySQL sont maintenant automatisées, vous recevez un mail en cas de problème du script!</p>



<p class="wp-block-paragraph">Si vous utilisez une <a href="https://www.monlinux.net/2018/01/mysql-probleme-replication-master-slave/">architecture MySQL master-slave</a>, je vous conseille de le faire sur le slave, afin de ne pas faire durer un lock table sur le master. Une désynchronisation du slave est préférable, voir un slave dédié si vous ne pouvez vous permettre une désynchro de quelques secondes <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>L’article <a href="https://www.monlinux.net/2023/05/automysqlbackup-sauvegarde-mysql/">AutoMySQLBackup &#8211; sauvegarde MySQL</a> est apparu en premier sur <a href="https://www.monlinux.net">Mon linux</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.monlinux.net/2023/05/automysqlbackup-sauvegarde-mysql/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>MySQL rétablir la réplication d&#8217;un slave avec un dump du master</title>
		<link>https://www.monlinux.net/2018/02/mysql-retablir-replication-slave-dump-master/</link>
					<comments>https://www.monlinux.net/2018/02/mysql-retablir-replication-slave-dump-master/#respond</comments>
		
		<dc:creator><![CDATA[belgotux]]></dc:creator>
		<pubDate>Thu, 15 Feb 2018 21:32:31 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[mariadb]]></category>
		<category><![CDATA[mysql]]></category>
		<guid isPermaLink="false">http://www.monlinux.net/?p=1106</guid>

					<description><![CDATA[<p>J&#8217;ai fait un premier article pour r&#233;soudre les probl&#232;mes de r&#233;plication d&#8217;un serveur MySQL slave &#224; partir de binaire xtrabackup, mais cela peut aussi se faire &#224; partir d&#8217;un dump, voici la proc&#233;dure &#224; suivre &#240;&#159;&#153;&#130; Restaurer un slave via... <a class="more-link" href="https://www.monlinux.net/2018/02/mysql-retablir-replication-slave-dump-master/">Continue Reading &#8594;</a></p>
<p>L’article <a href="https://www.monlinux.net/2018/02/mysql-retablir-replication-slave-dump-master/">MySQL rétablir la réplication d&rsquo;un slave avec un dump du master</a> est apparu en premier sur <a href="https://www.monlinux.net">Mon linux</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>J&rsquo;ai fait un premier article pour<a href="https://www.monlinux.net/2018/01/mysql-probleme-replication-master-slave/"> résoudre les problèmes de réplication d&rsquo;un serveur MySQL slave à partir de binaire xtrabackup</a>, mais cela peut aussi se faire à partir d&rsquo;un dump, voici la procédure à suivre <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h2>Restaurer un slave via un dump du master</h2>
<p>Vous devez avoir créé un dump de votre base de données quand celui-ci est figée, il faut donc faire quelques préparations.</p>
<h3>1. Préparation sur le master</h3>
<p>Ouvrez 2 consoles SSH sur le master.</p>
<p>Dans la première, ouvrir une console MySQL pour mettre la base de données en read-only (pour ne pas arrêter le service carrément), cela va donc entrainer une interruption de service pour les écritures</p>
<pre class="lang:mysql decode:true ">FLUSH TABLES WITH READ LOCK;</pre>
<p>Dans l&rsquo;autre fenêtre, obtenir la position du log file via une nouvelle console MySQL et notez le :</p>
<pre class="lang:mysql decode:true ">show master status \G</pre>
<p>Fermez la console MySQL pour revenir en shell pour faire votre dump :</p>
<pre class="lang:mysql decode:true ">mysqldump  --add-drop-table --user=root -p DB_NAME | gzip -3 --stdout &gt; DB_NAME.sql.gz</pre>
<p>Une fois le dump fini, retournez dans la première console MySQL pour faire la commande de libération des tables :</p>
<pre class="lang:mysql decode:true ">unlock tables;</pre>
<p>Vérifiez que les tables sont bien libérées après avoir attendu une minute :</p>
<pre class="lang:mysql decode:true">show open tables;</pre>
<h3>2. Remettre la réplication MySQL en place sur le slave</h3>
<p>En premier, démarrez MySQL, injectez le dump (ce qui peut prendre du temps et vérifiez que vos bases de données sont bien là.</p>
<pre class="lang:sh decode:true ">zcat DB_NAME.sql.gz | mysql -u root -p VOTRE_DB</pre>
<p>Appliquez les commandes suivantes, en remplaçant les valeurs par celle de votre infrastructure :</p>
<ul>
<li>HOST : votre serveur master</li>
<li>USER : l&rsquo;utilisateur MySQL de réplication si vous en avez défini un sinon le root (je vous conseille un utilisateur dédié avec uniquement les droits nécessaires)</li>
<li>PASSWORD : le mot de passe</li>
<li>LOG_FILE et LOG_POS : les valeurs de la position du log file récupérée plus haut sur le master</li>
</ul>
<pre class="lang:mysql decode:true">reset slave;
CHANGE MASTER TO
MASTER_HOST='serveur_master.tld',
MASTER_USER='repl',
MASTER_PASSWORD='passwd',
MASTER_LOG_FILE='mysql-bin.002043',
MASTER_LOG_POS=106;
start slave;</pre>
<p>Attendez une minute et puis vérifiez le status du slave :</p>
<pre class="lang:mysql decode:true">show slave status \G</pre>
<p>Vous devriez avoir ceci parmi la réponse :</p>
<pre class="lang:mysql decode:true">Slave_IO_State: Waiting for master to send event
Slave_IO_Running: Yes
Slave_SQL_Running: Yes</pre>
<p>Votre réplication est donc correcte.</p>
<p>Pour vous rassurez la première fois, vous pouvez faire un « create database toto » sur le master, voir si la base de données apparait sur le slave et ensuite faire un « drop database toto » sur le master.</p>
<p>&nbsp;</p>
<p>L’article <a href="https://www.monlinux.net/2018/02/mysql-retablir-replication-slave-dump-master/">MySQL rétablir la réplication d&rsquo;un slave avec un dump du master</a> est apparu en premier sur <a href="https://www.monlinux.net">Mon linux</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.monlinux.net/2018/02/mysql-retablir-replication-slave-dump-master/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MySQL problème de réplication master slave</title>
		<link>https://www.monlinux.net/2018/01/mysql-probleme-replication-master-slave/</link>
					<comments>https://www.monlinux.net/2018/01/mysql-probleme-replication-master-slave/#respond</comments>
		
		<dc:creator><![CDATA[belgotux]]></dc:creator>
		<pubDate>Sat, 13 Jan 2018 13:23:58 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[mariadb]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[réplication]]></category>
		<guid isPermaLink="false">http://www.monlinux.net/?p=1102</guid>

					<description><![CDATA[<p>Plusieurs choses sont amen&#233;es &#224; provoquer un probl&#232;me de r&#233;plication de vos bases de donn&#233;es MySQL : Quelqu&#8217;un se connecte sur un slave et fait une modification&#8230; (des options readonly permettent de s&#8217;en pr&#233;munir) Mauvaise perte de connexion entre les... <a class="more-link" href="https://www.monlinux.net/2018/01/mysql-probleme-replication-master-slave/">Continue Reading &#8594;</a></p>
<p>L’article <a href="https://www.monlinux.net/2018/01/mysql-probleme-replication-master-slave/">MySQL problème de réplication master slave</a> est apparu en premier sur <a href="https://www.monlinux.net">Mon linux</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Plusieurs choses sont amenées à provoquer un problème de réplication de vos bases de données MySQL :</p>
<ul>
<li>Quelqu&rsquo;un se connecte sur un slave et fait une modification&#8230; (des options readonly permettent de s&rsquo;en prémunir)</li>
<li>Mauvaise perte de connexion entre les serveurs</li>
<li>Crash du master</li>
<li>&#8230;</li>
</ul>
<p>Pour commencer, je ne le répèterai jamais assez, pensez aux backups de vos bases de données MySQL. Je vais traiter le sujet dans un article sur la sauvegarde de grosse base de données MySQL via xtrabackup, mais <a href="https://sourceforge.net/projects/automysqlbackup/">autobackup</a> est parfait pour de petites base de données. Ce dernier est basé sur mysqldump, mais gère la journalisation des dumps. J&rsquo;explique la restauration master-slave à partir d&rsquo;un dump dans un autre article.</p>
<p>Vous avez maintenant votre roue de secours, on peut donc regarder pour solutionner votre problème de réplication MySQL. Dans la suite de cet article, je traite la restauration à partir des binaires ou d&rsquo;une sauvegarde <a href="https://www.monlinux.net/tag/xtrabackup/">Xtrabackup</a>.</p>
<p><span id="more-1102"></span></p>
<h2>Type d&rsquo;erreur</h2>
<p>Avec un show slave status, vous avez une erreur du type :</p>
<pre class="lang:mysql decode:true ">error ' Duplicate entry '2513' for key 1' on query 'INSERT INTO users VALUES('','400', 'user1', '(hidden)', 'Belgium')'</pre>
<p>&nbsp;</p>
<h2>Restaurer un slave via une copie binaire ou xtrabackup</h2>
<p>La première méthode permet de partir des fichiers binaires :</p>
<ul>
<li>soit via une sauvegarde <strong>xtrabackup</strong>, donc <strong>pas d&rsquo;arrêt de service</strong>. Xtrabackup sauvegarde le logfile et sa position, très utile pour rétablir la synchronisation.</li>
<li>soit via une copie<strong> rsync des données</strong> de /var/lib/mysql du master, mais le rsync doit être fait avec le <strong>serveur MySQL éteint</strong>! Ou en read-only avec des flush tables pour ne pas trop dégrader&#8230;</li>
</ul>
<h3>1. Préparation sur le slave</h3>
<p>Arrêtez le service MySQL.</p>
<p>Si vous avez xtrabackup, copiez la dernière sauvegarde et passez l&rsquo;étape suivante, rien à faire sur le master, direction point 3.</p>
<p>Si vous le faite via rsync, suivez l&rsquo;étape suivante.</p>
<h3>2. Préparation sur le master uniquement via rsync</h3>
<p>Ouvrez 2 consoles SSH sur le master.</p>
<p>Dans la première, ouvrir une console mysql pour mettre la base de données en read-only (pour ne pas arrêter le service MySQL carrément)</p>
<pre class="lang:mysql decode:true ">FLUSH TABLES WITH READ LOCK;</pre>
<p>Dans l&rsquo;autre fenêtre, obtenir la position du log file via une nouvelle console MySQL et notez le :</p>
<pre class="lang:mysql decode:true ">show master status \G</pre>
<p>Fermez la console MySQL pour revenir en shell.</p>
<p>Maintenant, copiez le répertoire /var/lib/mysql avec les options rsync -ahPl du master vers le slave.</p>
<p>Une fois la copie finie, retournez dans la première console MySQL pour faire la commande de libération des tables :</p>
<pre class="lang:mysql decode:true ">unlock tables;</pre>
<p>Vérifiez que les tables sont bien libérées après avoir attendu une minute :</p>
<pre class="lang:mysql decode:true ">show open tables;</pre>
<h3>3. Remettre la réplication MySQL en place sur le slave</h3>
<p>En premier, démarrez MySQL et vérifiez que vos bases de données sont bien là.</p>
<p>Appliquez les commandes suivantes, en remplaçant les valeurs par celle de votre infrastructure :</p>
<ul>
<li>HOST : votre serveur master</li>
<li>USER : l&rsquo;utilisateur MySQL de réplication si vous en avez défini un sinon le root (je vous conseille un utilisateur dédié avec uniquement les droits nécessaires)</li>
<li>PASSWORD : le mot de passe</li>
<li>LOG_FILE et LOG_POS : les valeurs de la position du log file récupérée plus haut sur le master</li>
</ul>
<pre class="lang:mysql decode:true ">reset slave;
CHANGE MASTER TO
MASTER_HOST='serveur_master.tld',
MASTER_USER='repl',
MASTER_PASSWORD='passwd',
MASTER_LOG_FILE='mysql-bin.002043',
MASTER_LOG_POS=106;
start slave;</pre>
<p>Attendez une minute et puis vérifiez le status du slave :</p>
<pre class="lang:mysql decode:true">show slave status \G</pre>
<p>Vous devriez avoir ceci parmi la réponse :</p>
<pre class="lang:mysql decode:true">Slave_IO_State: Waiting for master to send event
Slave_IO_Running: Yes
Slave_SQL_Running: Yes</pre>
<p>Votre réplication est donc correcte.</p>
<p>Pour vous rassurez la première fois, vous pouvez faire un « create database toto » sur le master, voir si la base de données apparait sur le slave et ensuite faire un « drop database toto » sur le master.</p>
<p>&nbsp;</p>
<p>L’article <a href="https://www.monlinux.net/2018/01/mysql-probleme-replication-master-slave/">MySQL problème de réplication master slave</a> est apparu en premier sur <a href="https://www.monlinux.net">Mon linux</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.monlinux.net/2018/01/mysql-probleme-replication-master-slave/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>[dossier] Sauvegarder les données de son site en 3 étapes &#8211; backup</title>
		<link>https://www.monlinux.net/2014/11/sauvegarder-les-donnees-site-en-3-etapes-backup/</link>
					<comments>https://www.monlinux.net/2014/11/sauvegarder-les-donnees-site-en-3-etapes-backup/#respond</comments>
		
		<dc:creator><![CDATA[belgotux]]></dc:creator>
		<pubDate>Fri, 07 Nov 2014 22:18:14 +0000</pubDate>
				<category><![CDATA[Général]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[mysql]]></category>
		<guid isPermaLink="false">http://www.monlinux.net/?p=672</guid>

					<description><![CDATA[<p>Vous n&#8217;avez jamais eu de probl&#232;me avec un h&#233;bergeur qui &#171;&#160;perd&#160;&#187; votre site ? Ou une mise &#224; jour foireuse de votre CRM ? Ca nous est d&#233;j&#224; tous arriv&#233;. Dans mon cas des plugins WordPress lors de mises &#224;... <a class="more-link" href="https://www.monlinux.net/2014/11/sauvegarder-les-donnees-site-en-3-etapes-backup/">Continue Reading &#8594;</a></p>
<p>L’article <a href="https://www.monlinux.net/2014/11/sauvegarder-les-donnees-site-en-3-etapes-backup/">[dossier] Sauvegarder les données de son site en 3 étapes &#8211; backup</a> est apparu en premier sur <a href="https://www.monlinux.net">Mon linux</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Vous n&rsquo;avez jamais eu de problème avec un hébergeur qui « perd » votre site ? Ou une mise à jour foireuse de votre CRM ? Ca nous est déjà tous arrivé. Dans mon cas des plugins WordPress lors de mises à jour&#8230; Heureusement j&rsquo;avais mon backup <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Bien évidement j&rsquo;avais prévu le coup et je n&rsquo;ai rien perdu si ce n&rsquo;est les logs WordPress de connexion des dernières 24h, ce qui n&rsquo;a jamais était mon souci. Les logs de mon hébergeur me donne déjà satisfaction.</p>
<p>Voici mon premier dossier consacré à la sauvegarde sécurisée des données de votre site web. Il y a 3 étapes à faire pour avoir un backup sur, simple, complet et surtout entièrement automatisé :</p>
<ol>
<li><a title="Exporter les bases de données MySQL dans la partie privée de son FTP via cron" href="https://www.monlinux.net/2014/11/exporter-les-bases-donnees-mysql-partie-privee-ftp-via-cron/">Exporter les bases de données MySQL dans la partie privée de son FTP via cron</a></li>
<li><a title="Cloner son répertoire FTP pour sauvegarder son site web" href="https://www.monlinux.net/2014/11/cloner-repertoire-ftp-sauvegarder-site-web/">Cloner le contenu de son FTP à distance pour avoir ses backups délocalisées</a></li>
<li><a title="Avoir un historique des données FTP en local via rdiff-backup" href="https://www.monlinux.net/2014/11/avoir-historique-donnees-ftp-en-local-via-rdiff-backup/">Mettre en place un backup des données FTP en local pour l&rsquo;historique via rdiff-backup</a></li>
</ol>
<p>Par après on pourrait imaginer de mettre ces données dans un backup externalisé de deuxième niveau <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>L’article <a href="https://www.monlinux.net/2014/11/sauvegarder-les-donnees-site-en-3-etapes-backup/">[dossier] Sauvegarder les données de son site en 3 étapes &#8211; backup</a> est apparu en premier sur <a href="https://www.monlinux.net">Mon linux</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.monlinux.net/2014/11/sauvegarder-les-donnees-site-en-3-etapes-backup/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Exporter les bases de données MySQL dans la partie privée de son FTP via cron</title>
		<link>https://www.monlinux.net/2014/11/exporter-les-bases-donnees-mysql-partie-privee-ftp-via-cron/</link>
					<comments>https://www.monlinux.net/2014/11/exporter-les-bases-donnees-mysql-partie-privee-ftp-via-cron/#respond</comments>
		
		<dc:creator><![CDATA[belgotux]]></dc:creator>
		<pubDate>Wed, 05 Nov 2014 20:14:17 +0000</pubDate>
				<category><![CDATA[Général]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[mysql]]></category>
		<guid isPermaLink="false">http://www.monlinux.net/?p=679</guid>

					<description><![CDATA[<p>C&#8217;est la premi&#232;re &#233;tape pour la sauvegarde de son site en 3 &#233;tapes et surement la plus importante pour votre CMS, WordPress, etc : La sauvegarde de la base de donn&#233;es. On va sauvegarder ses bases de donn&#233;es MySQL via... <a class="more-link" href="https://www.monlinux.net/2014/11/exporter-les-bases-donnees-mysql-partie-privee-ftp-via-cron/">Continue Reading &#8594;</a></p>
<p>L’article <a href="https://www.monlinux.net/2014/11/exporter-les-bases-donnees-mysql-partie-privee-ftp-via-cron/">Exporter les bases de données MySQL dans la partie privée de son FTP via cron</a> est apparu en premier sur <a href="https://www.monlinux.net">Mon linux</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>C&rsquo;est la première étape pour <a title="[dossier] Sauvegarder les données de son site en 3 étapes – backup" href="https://www.monlinux.net/2014/11/sauvegarder-les-donnees-site-en-3-etapes-backup/">la sauvegarde de son site en 3 étapes</a> et surement la plus importante pour votre CMS, WordPress, etc : La sauvegarde de la base de données.</p>
<p>On va sauvegarder ses bases de données MySQL via un script PHP qui pourra être interprété par la grande majorité des hébergeurs. Vous disposez d&rsquo;une fonction de tâche planifiée pour effectuer vos backups automatiquement. L&rsquo;hébergeur propose d&rsquo;envoyer par mail le retour du script, vous pourrez donc visionner le bon déroulement des backups. Ces dump MySQL seront placés dans<strong> la partie privée</strong> de votre FTP.</p>
<p>Voici le script PHP à mettre dans la partie privée de votre hébergement : <a href="https://www.monlinux.net/wp-content/uploads/backup_mysql.php_.txt">backup_mysql.php</a></p>
<ul>
<li>Pour le point backupdir : c&rsquo;est le répertoire utilisateur de votre compte chez l&rsquo;hébergeur. Si vous ne l&rsquo;avez pas, vous pouvez le savoir avec un &lsquo;pwd&rsquo; ou un &lsquo;echo $HOME&rsquo; mis dans un script dans une tâche planifiée. Mettez bien cela dans la <strong>partie privée du FTP</strong> de votre hébergement!</li>
<li>Pour mettre la tâche planifiée, cela dépend de votre interface d&rsquo;hébergeur. Mais tout hébergeur avec Cpanel le propose, ainsi qu&rsquo;OVH. Je vous conseille de faire un backup chaque jour de la base de données de votre site. S&rsquo;il est fort fréquenté, comme un blog WordPress avec commentaires, alors même plusieurs fois par jour&#8230;</li>
</ul>
<p><span id="more-679"></span></p>
<p>Voici le script en question :</p>
<pre class="lang:php decode:true">&lt;?php

$server='';		// serveur mysql
$login='';		//login mysql
$mdp='';		//mot de passe mysql
$backupdir='/home/a4327242/backup_db';		// pour savoir le répertoire local de votre hébergeur si c'est pas indiqué, faite la commande 'pwd' dans l'interface cron
$logfile='/home/a4327242/backup_db/backup_db.log';
$timezone='Europe/Brussels';	// pour les heures des fichier de logs

//un appel par base de données (souvent une seule pour un hébergeur)
backup_tables($server,$login,$mdp,$backupdir,$timezone,$logfile,'nom_base_de_donnees');


/* backup the db OR just a table */
function backup_tables($host,$user,$pass,$backupdir,$timezone,$log,$name,$tables = '*')
{
	$link = mysql_connect($host,$user,$pass);
	mysql_select_db($name,$link);
	
	//get all of the tables
	if($tables == '*')
	{
		$tables = array();
		$result = mysql_query('SHOW TABLES');
		while($row = mysql_fetch_row($result))
		{
			$tables[] = $row[0];
		}
	}
	else
	{
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
	
	//cycle through
	foreach($tables as $table)
	{
		$result = mysql_query('SELECT * FROM '.$table);
		$num_fields = mysql_num_fields($result);
		
		$return.= 'DROP TABLE '.$table.';';
		$row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
		$return.= "\n\n".$row2[1].";\n\n";
		
		for ($i = 0; $i &lt; $num_fields; $i++) 
		{
			while($row = mysql_fetch_row($result))
			{
				$return.= 'INSERT INTO '.$table.' VALUES(';
				for($j=0; $j&lt;$num_fields; $j++) 
				{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = ereg_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j&lt;($num_fields-1)) { $return.= ','; }
				}
				$return.= ");\n";
			}
		}
		$return.="\n\n\n";
	}
	
	//save file
	$date = new DateTime();
	$date-&gt;setTimeZone(new DateTimeZone($timezone));

	$filename=$backupdir.'/db-'.$name.'-'.$date-&gt;format('Y-m-d H:i').'-'.(md5(implode(',',$tables))).'.sql';
	$handle = fopen($filename,'w+');
	fwrite($handle,$return);
	fclose($handle);
	echo "File $filename create successful";
}

?&gt;</pre>
<p>Pour la 2e étape, <a title="Cloner son répertoire FTP pour sauvegarder son site web" href="https://www.monlinux.net/2014/11/cloner-repertoire-ftp-sauvegarder-site-web/">clonez le contenu de votre FTP chez vous comme backup</a>! Vos dump MySQL avec <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>L’article <a href="https://www.monlinux.net/2014/11/exporter-les-bases-donnees-mysql-partie-privee-ftp-via-cron/">Exporter les bases de données MySQL dans la partie privée de son FTP via cron</a> est apparu en premier sur <a href="https://www.monlinux.net">Mon linux</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.monlinux.net/2014/11/exporter-les-bases-donnees-mysql-partie-privee-ftp-via-cron/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Mise en cache de page à l’aide de Disk: Enhanced 
Mise en cache de la base de données de 45/54 requêtes en 0.020 secondes utilisant Disk

Served from: www.monlinux.net @ 2026-10-28 22:52:24 by W3 Total Cache
-->