xillon posteets tagged mysql  [ Profile ]

Sort by: Date / Title /

  1. 11 months ago and saved by 2 others
    1. SELECT count(*), colonne1, colonne2 FROM matable GROUP BY colonne1, colonne2 HAVING count(*) > 1
  2. 11 months ago and saved by 1 other
    1. <?php
    2.  
    3.    mysql_query("INSERT INTO table (nom_table) values ('ex')");
    4.    $dernier_idmysql_insert_id();
    5.    echo $dernier_id;
    6.  
    7. ?>
  3. 1 year ago and saved by 1 other
    Faire un backup du serveur maître sur l'esclave.
    
    Sur le maitre :
     GRANT REPLICATION SLAVE ON *.* TO repl@'%' IDENTIFIED BY '<password>';
    
    Dans my.ini : (section mysqld)
     log-bin
     server-id=1
    
    
    Sur l'esclave :
    Dans my.ini : (section mysqld)
    
     server-id=2
     # nom d'hote du maitre
     master-host=serveur_maitre
     # port sur lequel écoute le serveur maitre
     master-port=3306
     # nom utilisé pour se connecter au maitre
     master-user=repl
     # mot de passe pour se connecter au maître
     master-password=<password>
    
    Dans un client mysql :
    
     SLAVE START ;
  4. sponsorised links
  5. 1 year ago and saved by 3 others
    1. #
    2. #Fichier de configuration (backup-mysql.conf)
    3. #
    4.  
    5. ###########################################################
    6. # Fichier de configuration pour le script backup-mysql.sh #
    7. ###########################################################
    8.  
    9.  
    10. #Serveur à backuper
    11. SERVER='localhost'
    12.  
    13. #Utilisateur MySQL
    14. DBUSER='login'
    15.  
    16. #Mot de passe MySQL
    17. DBPASS='mdp'
    18.  
    19. #On specifie les bases a backuper ("all" pour tout backuper)
    20. DB='all'
    21.  
    22. #Date format
    23. DATE_FORMAT='+%d-%m-%Y'
    24.  
    25. #Repertoire de backup
    26. BACKUP_DIR='/var/backup/mysql/'
    27.  
    28. #Repertoire du jour
    29. TODAY_DIR=$(date $DATE_FORMAT)
    30.  
    31. #Nomre de backups a conserver (en jours)
    32. HISTORY='7'
    33.  
    34. #Type de compression (bzip2/gzip)
    35. COMP_TYPE='bzip2'
    36.  
    37. #Creer un repertoire pour chaque base de donnees (yes/no)
    38. SEP_DB='yes'
    39.  
    40. #Separer les tables en differents fichiers (yes/no)
    41. SEP_TABLE='yes'
    42.  
    43. #Options pour le dump
    44. #Utiliser 'man mysqldump' ou aller sur la configuration pour plus de details
    45. OPTS='--default-character-set=latin1 --skip-extended-insert'
    46.  
    47. #Fichier de logs
    48. LOG_FILE='/tmp/backup.log'
    49.  
    50. #Adresse mail pour les logs d'execution du script
    51. MAIL_ADDR='admin@domain.tld'
    52.  
    53. #
    54. #Script de backup MySQL
    55. #
    56.  
    57. #!/bin/bash
    58.  
    59. CONF_PATH='/etc'
    60. CONF_FILE='backup-mysql.conf'
    61.  
    62. if [ ! -d "$CONF_PATH" ] || [ ! -f "$CONF_PATH/$CONF_FILE" ]; then
    63.         echo "File : $CONF_PATH/$CONF_FILE missing !"
    64.         exit 1;
    65. else
    66.         . "$CONF_PATH/$CONF_FILE"
    67. fi
    68.  
    69. send-mail () {
    70.         cat "$LOG_FILE" | mail -s "Rapport d'execution du script $(basename $0) sur $HOSTNAME" $MAIL_ADDR
    71.         rm "$LOG_FILE"
    72. }
    73.  
    74. check_dirs () {
    75.         #On verifie si le repertoire de backup existe
    76.         if [ ! -d "$BACKUP_DIR" ]; then
    77.                 echo "$BACKUP_DIR n'existe pas." >> "$LOG_FILE"
    78.                 send-mail
    79.                 exit 1;
    80.         fi
    81.         #On verifie si le repertoire du jour existe
    82.         if [ ! -d "$BACKUP_DIR/$TODAY_DIR" ]; then
    83.                 mkdir "$BACKUP_DIR/$TODAY_DIR"
    84.         fi
    85.         #On supprime le backup le plus ancien
    86.         TO_DELETE=$(date --date "$HISTORY days ago" $DATE_FORMAT)
    87.         if [ -d "$BACKUP_DIR/$TO_DELETE" ]; then
    88.                 rm -r "$BACKUP_DIR/$TO_DELETE"
    89.         fi
    90. }
    91.  
    92. backup () {
    93.         if [ -z "$1" ]; then
    94.                 echo 'Liste des bases non transmise' >> $LOG_FILE
    95.                 send-mail
    96.                 exit 1;
    97.         else
    98.                 if [ "$SEP_DB" == 'yes' ]; then
    99.                         for DB_TO_BACKUP in $1; do
    100.                                 #On cree le repertoire pour separer les bases
    101.                                 mkdir "$BACKUP_DIR/$TODAY_DIR/$DB_TO_BACKUP"
    102.                                 if [ "$SEP_TABLE" == 'yes' ]; then
    103.                                         for TABLE_TO_BACKUP in $(mysql -h$SERVER -u$DBUSER -p$DBPASS --skip-column-names $DB_TO_BACKUP -e "show tables"); do
    104.                                                 mysqldump -h"$SERVER" -u"$DBUSER" -p"$DBPASS" $OPTS "$DB_TO_BACKUP" "$TABLE_TO_BACKUP" | "$COMP_TYPE" > "$BACKUP_DIR/$TODAY_DIR/$DB_TO_BACKUP/$DB_TO_BACKUP-$TABLE_TO_BACKUP-$TODAY_DIR.$FILE_EXT"
    105.                                         done
    106.                                 else
    107.                                         mysqldump -h"$SERVER" -u"$DBUSER" -p"$DBPASS" $OPTS "$DB_TO_BACKUP" "$TABLE_TO_BACKUP" | "$COMP_TYPE" > "$BACKUP_DIR/$TODAY_DIR/$DB_TO_BACKUP/$DB_TO_BACKUP-$TODAY_DIR.$FILE_EXT"
    108.                                 fi
    109.                         done
    110.                                
    111.                 else
    112.                         if [ "$SEP_TABLE" == 'yes' ]; then
    113.                                 for DB_TO_BACKUP in $1; do
    114.                                         for TABLE_TO_BACKUP in $(mysql -h$SERVER -u$DBUSER -p$DBPASS --skip-column-names $DB_TO_BACKUP -e "show tables"); do
    115.                                         mysqldump -h"$SERVER" -u"$DBUSER" -p"$DBPASS" $OPTS "$DB_TO_BACKUP" "$TABLE_TO_BACKUP" | "$COMP_TYPE" > "$BACKUP_DIR/$TODAY_DIR/$DB_TO_BACKUP-$TABLE_TO_BACKUP-$TODAY_DIR.$FILE_EXT"
    116.                                         done
    117.                                 done
    118.                         else
    119.                                 mysqldump -h"$SERVER" -u"$DBUSER" -p"$DBPASS" $OPTS --all-databases | "$COMP_TYPE" > "$BACKUP_DIR/$TODAY_DIR/$TODAY_DIR.$FILE_EXT"
    120.                         fi
    121.                 fi
    122.         fi
    123. }
    124.  
    125. # On cree le fichier de log
    126. touch "$LOG_FILE"
    127. # on verifie que les bases a backuper sont bien renseignees
    128. if [ -z "$DB" ]; then
    129.         echo 'variable $DB vide.' >> "$LOG_FILE"
    130.         send-mail
    131.         exit 1;
    132. elif [ "$DB" == "all" ]; then
    133.         DB_LIST=$(mysql -h$SERVER -u$DBUSER -p$DBPASS --skip-column-names -e "show databases" | xargs)
    134. else
    135.         DB_LIST="$DB"
    136. fi     
    137. # On verifie que la compression est correcte
    138. if [ "$COMP_TYPE" == 'bzip2' ]; then
    139.         FILE_EXT='sql.bz2'
    140. elif [ "$COMP_TYPE" == 'gzip' ]; then
    141.         FILE_EXT='sql.gz'
    142. else
    143.         echo '$COMP_TYPE non spécifié.' >> "$LOG_FILE"
    144.         send-mail
    145.         exit 1;
    146. fi
    147.  
    148. check_dirs
    149. backup "$DB_LIST"
    150.  
    151. #On verifie si le fichier de logs existe et qu'il est vide
    152. if [ -f "$LOG_FILE" ] && [ "$(cat $LOG_FILE | wc -l)" -eq 0 ]; then
    153.         #Si il est vide on efface
    154.         rm "$LOG_FILE"
    155. else
    156.         #Sinon on envoie le rapport
    157.         send-mail
    158. fi
  6. 1 year ago
    1. function selectTable($nomtable, $where = NULL, $order = NULL)
    2.          {
    3.             $sql = "SELECT * FROM $nomtable";
    4.             if ( $where !== NULL ) $sql .= " WHERE $where";
    5.             if ($order !== NULL)$sql.=" ORDER BY $order ";
    6.            
    7.             $query=mysql_query($sql);
    8.            
    9.             $ret = array();
    10.             while ( $donnee = mysql_fetch_assoc($query))
    11.             {
    12.                $ret[] = $donnee;
    13.             }
    14.             return $ret;
    15.          }
    16.          
    17.          function sqlSelect($sqlDonnee, $nomCol, $valCol)
    18.          {
    19.             for($i = 0 ; $i<count($sqlDonnee) ; $i++)
    20.             {
    21.                $selectDonee["name"][$i] = $sqlDonnee[$i][$nomCol];
    22.                $selectDonee["value"][$i] = $sqlDonnee[$i][$valCol];
    23.             }
    24.          return $selectDonee;
    25.          }
    26.          
    27.          function htmlSelect($nom, $options, $selected = NULL, $css = NULL)
    28.          {
    29.             $select  = "<select name=\"".htmlentities($nom)."\"";
    30.             if ( $css !== NULL )
    31.                $select .= " $css>";
    32.             else
    33.                $select .= ">";
    34.  
    35.             for($i = 0 ; $i<count($options["name"]) ; $i++)
    36.             {
    37.                if ( $selected !== NULL && $selected == $options["value"][$i] )
    38.                   $select .= "<option value=\"".$options["value"][$i]."\" selected=\"selected\">".$options["name"][$i]."</option>\n";
    39.                else
    40.                   $select .= "<option value=\"".$options["value"][$i]."\">".$options["name"][$i]."</option>\n";
    41.             }
    42.             $select .= "</select>\n";
    43.  
    44.             return $select;
    45.          }
    46.  
    47. /*** Exemple utilisation ***/
    48. /* <option selected> par defaut pour le pays ayant l'id 72 */
    49.          $paysSelect = isset($_POST["pays"]) ? ($_POST["pays"]) : ("72");
    50.          
    51.          $selectPays=selectTable("pays");
    52.          $pays=sqlSelect($selectPays,"nom","id");         
    53.          echo htmlSelect("id", $pays, $paysSelect); // on construit notre <select>
  7. 1 year ago and saved by 1 other
    1. #!/bin/bash
    2.  
    3. #paramètres de configuration du script
    4. #completer ici par le nom d'un utilisateur autorisé à dumper toutes vos bases :
    5. strMysqlUser=""
    6. #completer ici par le mot de passe de cet utilisateur :
    7. strPassword=""
    8. # completer ici par le chemin vers le repertoire de travail où va se trouver le dump
    9. # il est possible de préfixer le répertoire  :
    10. # "/rep/de/travail/prefix_" donnera alors /rep/de/travail/prefix_20070505
    11. repTravail=""
    12.  
    13.  
    14. #mémorisation de la date du jour et de la date d'il y a 7 jours
    15. dateActuelle=$(date +%Y%m%d)
    16. datePassee=$(date --date '7 days ago' +%Y%m%d)
    17.  
    18. #Suppression de la sauvegarde d'il y a 7 jours
    19. echo "["$(date +%F\ %X)"] Suppression des dump du "$datePassee
    20. repTravailPasse=$repTravail$datePassee
    21. rm -R $repTravailPasse
    22.  
    23. # début du dump
    24. echo "["$(date +%F\ %X)"] Dump du : "$dateActuelle
    25. repTravailActuel=$repTravail$dateActuelle
    26. mkdir $repTravailActuel
    27. # récupération de la liste des bdd
    28. listDatabase=$(mysql --user=$strMysqlUser --password=$strPassword --exec="SHOW DATABASES;" --silent --column-names=FALSE )
    29.  
    30. #dump de chaque base dans un fichier
    31. for lineDatabase in $listDatabase
    32. do
    33.     echo "["$(date +%F\ %X)"] Debut du dump de la base "$lineDatabase" vers "$repTravailActuel
    34.     mysqldump --user="$strMysqlUser" --password="$strPassword" "$lineDatabase" | gzip > "$repTravailActuel"/"$lineDatabase".sql.gz
    35.     echo "["$(date +%F\ %X)"] Dump compressé dans "$repTravailActuel"/"$lineDatabase".sql.gz"
    36. done
    37. echo "["$(date +%F\ %X)"] Fin de la sauvegarde"
    38. exit 0

First / Previous / Next / Last / Page 1 of 1 (6 posteets)