Archives pour la catégorie MySQL

[HowTo] Sauvegarder base MySQL avec snapshot LVM

Aller aujourd’hui un petit script pour sauvegarder nos bases de données à chaud sans utiliser l’utilitaire mysqldump (malheureusement gourmand en ressources sur des bases de données MySQL conséquentes).

#!/bin/bash

## VARIABLES ##
USER="usermysql"
PASSWORD="mypassword"
TMPMOUNTPOINT="/snapshot"
VGNAME="vg02"
LVNAME="mysql"
SNAPNAME="snapmysql"

## Check if /backup/mysql.tar.gz exists on the remote server ##
ssh root@remote-server "if [ -e /backup/mysql.tar.gz ] ; then rm -Rf /backup/mysql.tar.gz ; fi"

## Check if temp mount point not used ##
[ `mount | grep "$TMPMOUNTPOINT" | wc -l` -ne 0 ] && exit 1

## FUNCTIONS ##
function log() {
        logger -p local7.info "$1"
}

## BACKUP PROCESS ##
log "Locking databases"
mysql -u$USER -p$PASSWORD << EOF
        FLUSH TABLES WITH READ LOCK;
        system lvcreate -l +100%FREE --snapshot -n $SNAPNAME /dev/$VGNAME/$LVNAME;
        UNLOCK TABLES;
        quit
EOF

log "Databases unlocked"

## TAR AND SEND THROUGH SSH ##
log "Backing up databases"
mount /dev/$VGNAME/$SNAPNAME $TMPMOUNTPOINT
cd $TMPMOUNTPOINT
tar cfvz - --exclude=debian-5.1.flag --exclude=mysql_upgrade_info --exclude=mysql --exclude=phpmyadmin * | ssh root@remote-server "cat > /backup/mysql.tar.gz"
cd
umount $TMPMOUNTPOINT
lvremove -f /dev/$VGNAME/$SNAPNAME
log "Databases backed up"

Les différentes étapes sont les suivantes :

– On vérifie que la sauvegarde n’existe pas déjà sur le serveur distant
– On verrouille les tables MySQL en lecture seule
– On créé un snapshot LVM
– On lève les verrous des tables
– On monte le snapshot sur le dossier /snapshot
– On fait une archive (avec tar) qu’on transfert directement via SSH au serveur distant
– On démonte le point de montage du snapshot
– On supprime le snapshot LVM

Cette astuce est utilisable sur tout système Linux ayant LVM et MySQL installé.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Astuces pour optimiser WordPress

Deuxième article du jour pour vous présenter quelques astuces afin d’améliorer les performances de votre site. Pour cela nous allons voir plusieurs choses :

  • Installation d’un plugin
  • Modification du fichier wp-config.php
  • Nettoyage de la base de données

Dans un premier temps voici le nom du plugin à installer : « External Files Optimizer. Il va vous permettre d’agréger l’appel aux différents fichiers externes.

Ensuite, voici une modification à apporter au fichier wp-config.php afin d’éviter que WordPress enregistre toutes les révisions de vos articles :

define('WP_POST_REVISIONS', false);

Et maintenant pour supprimer toutes les révisions déjà en base, connectez-vous à Phpmyadmin, ou avec la méthode que vous préférez afin de supprimer toutes les informations présentent dans la table « posts » :

DELETE
FROM wp_posts
WHERE post_type = 'revision';

Vous gagnerez je l’espère un petit peu en performance avec ces astuces. Et n’oubliez pas pour gagner en performance et en sécurité, pensez à mettre à jour votre site, vos plugins et votre thème. Si vous n’utilisez pas certains plugins ou thèmes, supprimez-les, cela ne sert à rien de les garder.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Astuces en vrac (4)

Aujourd’hui, un nouveau petit mémo concernant 2 requêtes SQL pour récupérer des informations intéressantes sur votre supervision. Et un autre pour contrôler la synchronisation de votre serveur de temps.

La première requête permet de récupérer l’adresse IP/Nom DNS et le nom de tous les serveurs supervisés par un poller. Pour cela, il suffit juste d’exécuter la requête suivante sur la base Centreon :

SELECT host_name AS Name, host_address AS Adresse
FROM `host`, `ns_host_relation`, `nagios_server`
WHERE ns_host_relation.host_host_id=host.host_id
AND ns_host_relation.nagios_server_id=nagios_server.id
AND nagios_server.name='mypoller'
ORDER BY host_name;

Continuer la lecture de Astuces en vrac (4) 

Interdire l’accès à Phpmyadmin depuis l’extérieur

Aujourd’hui, un petit mémo rapide pour configurer Phpmyadmin en interdisant son accès depuis l’extérieur ou depuis tout autre réseau que celui de votre LAN

Pour cela, il suffit juste de modifier le fichier /etc/apache2/conf.d/phpmyadmin.conf par les lignes 4, 5 et 6 :

<Directory /usr/share/phpmyadmin>
        Options FollowSymLinks
        DirectoryIndex index.php
        Order Deny,Allow
        Allow from 192.168.1.0/24
        Deny from All

        <IfModule mod_php5.c>
                AddType application/x-httpd-php .php

                php_flag magic_quotes_gpc Off
                php_flag track_vars On
                php_flag register_globals Off
                php_admin_flag allow_url_fopen Off
                php_value include_path .
                php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
                php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/
        </IfModule>

</Directory>

Cela signifie qu’on interdit tout autre personne que ceux du réseau local 192.168.1.0/24 à accéder à la page Phpmyadmin.

1 Star2 Stars3 Stars4 Stars5 Stars (3 votes, average: 3,67 out of 5)
Loading...

HowTo : PHP & MySQL sur Freenas

Bonjour à tous,

Je vais vous expliquer la technique afin d’installer PHP et MySQL sur la distribution Freenas. Avant toute chose, il est nécessaire de se rendre sur l’interface web de votre Nas et de créer un groupe et un utilisateur « mysql« .

Etant donné, que seule une partition de 1Go pour l’OS a été créée, il va être nécessaire de créer des liens symboliques vers votre partition de données :

$ mkdir -p /mnt/data/db/mysql
$ ln -s /mnt/data/db/mysql /var/db/mysql
$ chown -R mysql:mysql /mnt/data/db/mysql
$ chmod 777 /tmp
$ chmod 777 /var/tmp

On installe ensuite MySQL :

$ pkg_add -r mysql50-server
$ rehash
$ mysql_install_db
$ ln -s /mnt/data/db/mysql/mysql /usr/local/libexec/

Puis, pour qu’il se lance à chaque démarrage :

$ echo 'mysql_enable="YES"' >> /etc/rc.conf

Ensuite pour le PHP, installer les paquets suivants :

$ pkg_add -r php5
$ pkg_add -r php5-extensions
$ pkg_add -r php5-xmlrpc
$ pkg_add -r php5-gettext
$ pkg_add -r php5-mcrypt
$ pkg_add -r php5-mysql
$ pkg_add -r php5-mbstring
$ pkg_add -r xmlstarlet

Pour finir, il est nécessaire de remplacer le PHP installé avec Freenas, par celui que nous venons d’installer :

$ mv /usr/local/bin/php /usr/local/bin/php-cli
$ cp /usr/local/bin/php-cgi /usr/local/bin/php

Il ne reste plus qu’à redémarrer votre serveur, et MAGIE, MySQL fonctionne.

1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 4,00 out of 5)
Loading...

Script pour sauvegarder une base de données

Petit post pour présenter un script que j’ai écrit afin de sauvegarder une base de données et l’archiver.

#!/bin/sh

DBUSER=<user>
DBPASS=<password>
DBNAME=<database>
DATEFORMAT=`date +%d-%m`
COMPRESS=1
BACKUPDIR=/data/Soft/Linux/mydb
LOG=/var/log/backup_db.log
PROG=`/usr/local/bin/mysqldump --opt -Q`

# Sauvegarde de la base de donnees
echo "Backup SQL commencee le : `date`" >> $LOG
if test -f $BACKUPDIR/$DATEFORMAT-$DBNAME.sql ; then
     rm -f $BACKUPDIR/$DATEFORMAT-$DBNAME.sql
fi

$PROG -u $USER -p$DBPASS $DBNAME > $BACKUPDIR/$DATEFORMAT-$DBNAME.sql

if [ $? -eq 0 ] ; then
     echo "DATABASE $DBNAME : SAVED" >> $LOG
     if [ $COMPRESS -eq 1 ]; then
          if test -f $BACKUPDIR/$DATEFORMAT-$DBNAME.sql.gz ; then
          rm -f $BACKUPDIR/$DATEFORMAT-$DBNAME.sql.gz
     fi
     gzip $BACKUPDIR/$DATEFORMAT-$DBNAME.sql
     if [ $? -eq 0 ] ; then
          echo "COMPRESSION OF $DATEFORMAT-$DBNAME.sql : SUCCESS" >> $LOG
     else
          echo "COMPRESSION OF $DATEFORMAT-$DBNAME.sql : FAILURE" >> $LOG
          rm -f $BACKUPDIR/$DATEFORMAT-$DBNAME.sql
     fi
fi
else
     echo "SAVING DATABASE $DBNAME: FAILURE" >> $LOG
     rm -f $BACKUPDIR/$DATEFORMAT-$DBNAME.sql
fi

On ajoute cela dans une crontab qui s’exécute tous les soirs à 19h et le tour est joué :

00 19   * * *   root    /root/save_database.sh > /dev/null 2>&1

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...