Tag Archive for 'MySQL'

Concatenation de champs en MySQL avec la fonction CONCAT()

Problème:

La base de données MySQL musique contient la table titre.
La table titre contient les champs id_auteur, nom_titre.

Cette table titre contient donc des œuvres de musique comme suit:

id_auteur - nom_titre
102 - un_titre
27 - un_autre_titre
35 - encore_un_autre_titre

Tentons par exemple de modifier les Å“uvres de l’artiste 102, en lui ajoutant un titre.

Solution:
Nous utiliserons pour cela la fonction CONCAT().

UPDATE titre
SET nom_titre = CONCAT(nom_titre,'nouveau_titre_a_ajouter')
WHERE id_auteur = '102'

Les oeuvres de l’artiste 102 sont à présent les suivantes:

un_titre
nouveau_titre_ajouté


  Partager sur Wikio

Rotation des logs MySQL

La rotation des logs MySQL est installée par défaut sur Debian:

  • Durée de rétention: 7 jours
  • Fréquence de la rotation: tous les jours
  • Compression GZIP: oui

/etc/logrotate.d/mysql-server

/var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log {
daily
rotate 7
missingok
create 640 mysql adm
compress
sharedscripts
postrotate
test -x /usr/bin/mysqladmin || exit 0
# If this fails, check debian.conf!
export HOME=/etc/mysql/my.cnf
MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf"
if [ -z "`$MYADMIN ping 2>/dev/null`" ]; then
# Really no mysqld or rather a missing debian-sys-maint user?
# If this occurs and is not a error please report a bug.
if ps cax | grep -q mysqld; then
exit 1
fi
else
$MYADMIN flush-logs
fi
endscript
}

On peut vérifier que la rotation est effective.

ls -l /var/log/mysql*

donne:


-rw-r----- 1 mysql adm 0 2008-10-01 07:54 /var/log/mysql.log
-rw-r----- 1 mysql adm 20 2008-09-30 07:50 /var/log/mysql.log.1.gz
-rw-r----- 1 mysql adm 20 2008-09-29 08:01 /var/log/mysql.log.2.gz
-rw-r----- 1 mysql adm 20 2008-09-28 07:42 /var/log/mysql.log.3.gz
-rw-r----- 1 mysql adm 20 2008-09-27 07:43 /var/log/mysql.log.4.gz
-rw-r----- 1 mysql adm 20 2008-09-26 07:37 /var/log/mysql.log.5.gz
-rw-r----- 1 mysql adm 20 2008-09-25 07:40 /var/log/mysql.log.6.gz
-rw-r----- 1 mysql adm 20 2008-09-24 07:59 /var/log/mysql.log.7.gz


  Partager sur Wikio

forum.ubuntu-fr.org down

Détecté (début du problème) sur http://forum.ubuntu-fr.org/:
mercredi 24 Septembre à 15h45.

Fin: 16h30


  Partager sur Wikio

Quelques chiffres sur l’infrastructure de Facebook

Voici quelques chiffres clefs datant d’avril 2008 concernant la volumétrie de la plateforme:

  • Nombre de serveur MySQL - 1 800
  • Nombre d’administrateur MySQL (DBAs) - 2
  • Nombre de serveurs Web - 10 000
  • Nombre de serveurs Memcached - 805
Comme le souligne l’article le ratio 1 800 pour 2 ( nombre de serveurs MySQL / nombre  de personnes qui les administrent) est assez impressionant.

  Partager sur Wikio

Sauvegarder un blog wordpress sur une clef usb

Objectif

Sauvegarder/Restaurer un blog de type Wordpress:

  • sauvegarde des fichiers PHP
  • export SQL de la base de données

Langage de script utilisé: Bash

Script de Sauvegarde

wp-backupblog.sh

#!/bin/bash
# wp-backupblog.sh - Backup Wordpress Blog
# version: 0.1
# Author: Benjamin Baudouin
# http://www.benjaminbaudouin.com
DEVICE=/dev/sda1
SRCDIR=/var/www/wordpress
USBKEYDIR=/media/usbkey/
TMPDIR=/tmp/backupblog/
ARCHIVE=blog.$(date +%Y%m%d).tar.gz
ARCHIVE_SQL=blog.$(date +%Y%m%d).sql
MYSQL_USER=root
MYSQL_PASS=*****************
MYSQL_DB=wordpress
#creation du repertoire tmp
if [ ! -e ${TMPDIR} ]
then
mkdir ${TMPDIR}
fi
#evaluation de la taille du blog
echo -e “Taille du blog (non compresse):”
du -sh ${SRCDIR}
#creation de l’archive (fichiers sources)
echo -e “Creation de l’archive ${ARCHIVE} …”
cd ${SRCDIR}
tar cf - ${SRCDIR} | gzip > ${TMPDIR}${ARCHIVE}
echo -e “Taille du blog (archive compresse .tar.gz):”
du -sh ${TMPDIR}${ARCHIVE}
#creation de l’archive (fichier SQL)
echo -e “Creation de l’archive ${ARCHIVE_SQL} …”
mysqldump -u${MYSQL_USER} -p${MYSQL_PASS} ${MYSQL_DB} > ${TMPDIR}${ARCHIVE_SQL}
echo -e “Taille du blog (archive .sql):”
du -sh ${TMPDIR}${ARCHIVE_SQL}
echo -e “Taille total blog”
du -sh ${TMPDIR}
#si pas d’automount, montage manuel
mount ${DEVICE} ${USBKEYDIR}
#copy
cp -rf ${TMPDIR} ${USBKEYDIR}
echo -e “\nCopie sur la clef usb …”
#demontage
umount ${DEVICE}
if [ $? -eq 0 ]
then
echo -e “\nDone”
fi
exit 0

Script de Restauration

wp-restoreblog.sh

#!/bin/bash
# wp-restoreblog.sh - Restore Wordpress Blog
# version: 0.1
# Author: Benjamin Baudouin
# http://www.benjaminbaudouin.com
DEVICE=/dev/sdb1
USBKEYDIR=/media/usbkey
BACKUPDIR=/media/usbkey/backupblog/
SRCDIR=/var/www/wordpress
SQLFILE=`find ${BACKUPDIR}*.sql`
MYSQL_USER=root
MYSQL_PASS=
#meme si pas d'automount, montage manuel
if [ ! -e ${USBKEYDIR} ]
then
mkdir ${USBKEYDIR}
fi
mount ${DEVICE} ${USBKEYDIR}
cp ${BACKUPDIR}*.tar.gz /
tar xzf /*.tar.gz
chown www-data:www-data ${
SRCDIR}
mysql -u${MYSQL_USER} -p${MYSQL_PASS} < ${SQLFILE}
umount ${DEVICE}


Accéder à la page projet


  Partager sur Wikio

MySQL - Convertir une base ISO8859-1 en UTF-8

1) Exporter la base mysql à convertir avec mysqldump

2) Créer une nouvelle base encodée en UTF-8

3) Remplacer dans le fichier de dump les lignes

"CHARSET=xxx"

par

"DEFAULT CHARACTER SET UTF-8 COLLATE UTF-8"

4) Convertir la base avec la commande *nix : iconv

iconv -f ISO8859-1 -t UTF-8 fichier_iso8859.txt > fichier_utf8.txt

5) Importer le dump dans la nouvelle base


  Partager sur Wikio

Exporter et Importer une table dans MySQL - mysqldump et LOAD DATA INFILE

Pré-requis

dbname: nom de la base de données
tablename: nom de la table à exporter

Exporter les données d’une base mysql en CSV séparée par des virgules:

mysqldump -uroot -p --tables dbname tablename --tab=dirname --fields-terminated-by=',' > tablename.txt

Importer le fichier tablename.txt:

echo "TRUNCATE dbname.tablename;LOAD DATA INFILE '/path_to_file/dirname/tablename.txt' INTO TABLE dbname.tablename FIELDS TERMINATED BY ',' (id, field1, field2, field3, field4, field5, field6);" | mysql -uroot -p


  Partager sur Wikio

MySQL - Outil de modélisation

DBDesigner

Pour une archi AMD 64bits sous Debian :
dbdesigner-fork, tar -zxfv du *.bin-i386-linux.tar.gz,
puis cd bin && ./startdbd_usingAMD64


  Partager sur Wikio

MySQL - Créer un utilisateur MySQL

A l’aide du client mysql :

  • Création d’un nouvelle base ainsi qu’un nouvel utilisateur ayant les pleins droits sur celle-ci :
    mysql -uroot -p
    <enter_mysql_root_pass>
    CREATE DATABASE <DB_NAME>;
    GRANT ALL PRIVILEGES ON <DB_NAME>.* TO 'my_user'@'localhost' IDENTIFIED BY 'my_password' WITH GRANT OPTION;
  • Élargir les droits utilisateur aux autres bases :
    GRANT ALL PRIVILEGES ON *.* TO 'my_user'@'localhost' IDENTIFIED BY 'my_password' WITH GRANT OPTION;
  • Élargir les droits utilisateur pour un accès distant (autre que localhost)
    GRANT ALL PRIVILEGES ON <DB_NAME>.* TO 'my_user'@'%' IDENTIFIED BY 'my_password' WITH GRANT OPTION;

Source


  Partager sur Wikio

MySQL - Modifier le mot de passe root

Etant vide par défaut (snif), voici 2 façons pour modifier le mot de passe root de mysql :

  • SET PASSWORD FOR

mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');

  • mysqladmin

mysqladmin -u root password "newpass"


  Partager sur Wikio