Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
technique:mysql [2019/01/24 22:47]
127.0.0.1 modification externe
technique:mysql [2019/11/22 10:30] (Version actuelle)
francoisa
Ligne 7: Ligne 7:
 <​code>​ <​code>​
 mysql ‐u nomutilisateur ‐p mysql ‐u nomutilisateur ‐p
 +
 </​code>​ </​code>​
  
Ligne 13: Ligne 14:
 <​code>​ <​code>​
 SHOW DATABASES; SHOW DATABASES;
 +
 </​code>​ </​code>​
  
Ligne 19: Ligne 21:
 <​code>​ <​code>​
 USE nomdelabdd; USE nomdelabdd;
 +
 </​code>​ </​code>​
  
Ligne 25: Ligne 28:
 <​code>​ <​code>​
 SHOW TABLES; SHOW TABLES;
 +
 </​code>​ </​code>​
  
Ligne 31: Ligne 35:
 <​code>​ <​code>​
 DESCRIBE nomdelatable;​ DESCRIBE nomdelatable;​
 +
 </​code>​ </​code>​
  
Ligne 39: Ligne 44:
 <​code>​ <​code>​
 CREATE DATABASE nomdelabdd; CREATE DATABASE nomdelabdd;
 +
 </​code>​ </​code>​
  
Ligne 45: Ligne 51:
 <​code>​ <​code>​
 DROP DATABASE nomdelabdd; DROP DATABASE nomdelabdd;
 +
 </​code>​ </​code>​
  
Ligne 52: Ligne 59:
  
 <​code>​ <​code>​
-CREATE TABLE nomdelatable ( nomcolonne1 INT , nomcolonne2 FLOAT , nomcolonne3 VARCHAR ( 50 ), nomcolonne3 CHAR ( 50 ) ); +CREATE TABLE nomdelatable ( nomcolonne1 INT , nomcolonne2 FLOAT , nomcolonne3 VARCHAR ( 50 ), nomcolonne3 CHAR ( 50 ) ); 
 </​code>​ </​code>​
  
Ligne 58: Ligne 66:
  
 <​code>​ <​code>​
-DROP TABLE nomdelatable ; +DROP TABLE nomdelatable ; 
 </​code>​ </​code>​
  
Ligne 66: Ligne 75:
  
 <​code>​ <​code>​
-ALTER TABLE nomdelatable ADD nomdecolonne INT ;  +ALTER TABLE nomdelatable ADD nomdecolonne INT ; 
-ALTER TABLE nomdelatable ADD nomdecolonne1 VARCHAR ( 50 ); +ALTER TABLE nomdelatable ADD nomdecolonne1 VARCHAR ( 50 ); 
 </​code>​ </​code>​
  
 <​code>​ <​code>​
-ALTER TABLE nomdelatable ADD COLUMN nomdelacolonne INT ; +ALTER TABLE nomdelatable ADD COLUMN nomdelacolonne INT ; 
 </​code>​ </​code>​
  
Ligne 77: Ligne 88:
  
 <​code>​ <​code>​
-ALTER TABLE nomdelatable DROP COLUMN nomdecolonne1 ; +ALTER TABLE nomdelatable DROP COLUMN nomdecolonne1 ; 
 </​code>​ </​code>​
  
Ligne 83: Ligne 95:
  
 <​code>​ <​code>​
-ALTER TABLE nomdelatable RENAME AS lenouveaunomdelatable ​+ALTER TABLE nomdelatable RENAME AS lenouveaunomdelatable 
 </​code>​ </​code>​
  
 <​code>​ <​code>​
-ALTER TABLE nomancientable RENAME TO nomnouveautable ; +ALTER TABLE nomancientable RENAME TO nomnouveautable ; 
 </​code>​ </​code>​
  
 <​code>​ <​code>​
-RENAME TABLE nomancientable TO nomnouveautable ; +RENAME TABLE nomancientable TO nomnouveautable ; 
 </​code>​ </​code>​
  
Ligne 97: Ligne 112:
  
 <​code>​ <​code>​
-ALTER TABLE nomdelatable CHANGE nomdelacolonne nouveaunomdelacolonne INT ; +ALTER TABLE nomdelatable CHANGE nomdelacolonne nouveaunomdelacolonne INT ; 
 </​code>​ </​code>​
  
Ligne 103: Ligne 119:
  
 <​code>​ <​code>​
-ALTER TABLE nomdelatable ADD PRIMARY KEY ( nomcolonne ); +ALTER TABLE nomdelatable ADD PRIMARY KEY ( nomcolonne ); 
 </​code>​ </​code>​
  
 <​code>​ <​code>​
-ALTER TABLE nomdelatable ADD CONSTRAINT pk_nomdelacontrainte PRIMARY KEY ( nomcolonne ); +ALTER TABLE nomdelatable ADD CONSTRAINT pk_nomdelacontrainte PRIMARY KEY ( nomcolonne ); 
 </​code>​ </​code>​
  
Ligne 113: Ligne 131:
  
 <​code>​ <​code>​
-ALTER TABLE nomdelatable DROP PRIMARY KEY ; +ALTER TABLE nomdelatable DROP PRIMARY KEY ; 
 </​code>​ </​code>​
  
Ligne 119: Ligne 138:
  
 <​code>​ <​code>​
-ALTER TABLE nomdelatable ADD CONSTRAINT fk_nomdelacontrainte FOREIGN KEY ( nomcolonne ) REFERENCES tabledereference ( nomcolonne ); +ALTER TABLE nomdelatable ADD CONSTRAINT fk_nomdelacontrainte FOREIGN KEY ( nomcolonne ) REFERENCES tabledereference ( nomcolonne ); 
 </​code>​ </​code>​
  
Ligne 125: Ligne 145:
  
 <​code>​ <​code>​
-ALTER TABLE nomdelatable DROP CONSTRAINT fk_nomdelacontrainte ; +ALTER TABLE nomdelatable DROP CONSTRAINT fk_nomdelacontrainte ; 
 </​code>​ </​code>​
  
Ligne 133: Ligne 154:
  
 <​code>​ <​code>​
-SELECT nomcolonne FROM nomtable ; +SELECT nomcolonne FROM nomtable ; 
 </​code>​ </​code>​
  
Ligne 139: Ligne 161:
  
 <​code>​ <​code>​
-SELECT DISTINCT nomcolonne FROM nomtable ; +SELECT DISTINCT nomcolonne FROM nomtable ; 
 </​code>​ </​code>​
  
Ligne 145: Ligne 168:
  
 <​code>​ <​code>​
-SELECT nomcolonne FROM nomtable WHERE nomcolonne = '​1'​ ;  +SELECT nomcolonne FROM nomtable WHERE nomcolonne = '​1'​ ; 
-SELECT nomcolonne FROM nomtable WHERE nomcolonne LIKE '​%.com'​ ; +SELECT nomcolonne FROM nomtable WHERE nomcolonne LIKE '​%.com'​ ; 
 </​code>​ </​code>​
  
Ligne 152: Ligne 176:
  
 <​code>​ <​code>​
-SELECT colonne1 , colonne2 , colonne3 ​ FROM table1 INNER JOIN table2 ON table1 . colonne1 = table2 . colonne3 WHERE colonne1 = '​cequejecherche' ​+SELECT colonne1 , colonne2 , colonne3 ​ FROM table1 INNER JOIN table2 ON table1 . colonne1 = table2 . colonne3 WHERE colonne1 = '​cequejecherche'​ 
 </​code>​ </​code>​
  
Ligne 158: Ligne 183:
  
 <​code>​ <​code>​
-UPDATE nomtable SET nomcolonne1 = '​mavaleur'​ , nomcolonne2 = '​mavaleur2' ​+UPDATE nomtable SET nomcolonne1 = '​mavaleur'​ , nomcolonne2 = '​mavaleur2'​ 
 </​code>​ </​code>​
  
Ligne 164: Ligne 190:
  
 <​code>​ <​code>​
-UPDATE nomtable SET nomcolonne1 = '​mavaleur'​ , nomcolonne2 = '​mavaleur2'​ WHERE nomcolonne3 = '​0' ​+UPDATE nomtable SET nomcolonne1 = '​mavaleur'​ , nomcolonne2 = '​mavaleur2'​ WHERE nomcolonne3 = '​0'​ 
 </​code>​ </​code>​
  
Ligne 170: Ligne 197:
  
 <​code>​ <​code>​
-INSERT INTO nomtable ( colonne1 , colonne2 , colonne3 ) VALUES ( valeu1 , valeur2 , valeur3 ); +INSERT INTO nomtable ( colonne1 , colonne2 , colonne3 ) VALUES ( valeu1 , valeur2 , valeur3 ); 
 </​code>​ </​code>​
  
Ligne 176: Ligne 204:
  
 <​code>​ <​code>​
-DELETE FROM nomtable WHERE nomcolonne = '​lavaleur' ​+DELETE FROM nomtable WHERE nomcolonne = '​lavaleur'​ 
 </​code>​ </​code>​
  
Ligne 183: Ligne 212:
 Pour sauvegarder toutes les bases de données on utilise la commande suivante : Pour sauvegarder toutes les bases de données on utilise la commande suivante :
  
-<​code>​mysqldump --user=mon_user --password=mon_password --all-databases > fichier_destination.sql</​code>​+<​code>​ 
 +mysqldump --user=mon_user --password=mon_password --all-databases>​ fichier_destination.sql 
 + 
 +</​code>​
  
 Pour sauvegarder une base de données précise : Pour sauvegarder une base de données précise :
  
-<​code>​mysqldump --user=mon_user --password=mon_password --databases nom_de_la_base > fichier_destination.sql</​code>​+<​code>​ 
 +mysqldump --user=mon_user --password=mon_password --databases nom_de_la_base>​ fichier_destination.sql 
 + 
 +</​code>​
  
 Pour sauvegarder plusieurs bases de données : Pour sauvegarder plusieurs bases de données :
  
-<​code>​mysqldump --user=mon_user --password=mon_password --databases nom_de_la_base_1 nom_de_la_base_2 > fichier_destination.sql</​code>​+<​code>​ 
 +mysqldump --user=mon_user --password=mon_password --databases nom_de_la_base_1 nom_de_la_base_2>​ fichier_destination.sql 
 + 
 +</​code>​
  
 Pour sauvegarder une table précise : Pour sauvegarder une table précise :
  
-<​code>​mysqldump --user=mon_user --password=mon_password --databases nom_de_la_base --tables nom_de_la_table > fichier_destination.sql</​code>​+<​code>​ 
 +mysqldump --user=mon_user --password=mon_password --databases nom_de_la_base --tables nom_de_la_table>​ fichier_destination.sql 
 + 
 +</​code>​
  
 Pour sauvegarder plusieurs tables : Pour sauvegarder plusieurs tables :
  
-<​code>​mysqldump --user=mon_user --password=mon_password --databases nom_de_la_base --tables nom_de_la_table_1 nom_de_la_table_2 > fichier_destination.sql</​code>​+<​code>​ 
 +mysqldump --user=mon_user --password=mon_password --databases nom_de_la_base --tables nom_de_la_table_1 nom_de_la_table_2>​ fichier_destination.sql
  
-Pour tous ces types de sauvegarde mysql les fichiers générés sont en .sql. Cela dit on peut mettre l’extension que l’on veut comme .txt par exemple. Ca n’a pas d’importance. +</​code>​ 
-Les fichiers sont lisibles en clair et contiennent toutes les commandes SQL pour pouvoir faire une restauration mysql.+ 
 +Pour tous ces types de sauvegarde mysql les fichiers générés sont en .sql. Cela dit on peut mettre l’extension que l’on veut comme .txt par exemple. Ca n’a pas d’importance. Les fichiers sont lisibles en clair et contiennent toutes les commandes SQL pour pouvoir faire une restauration mysql.
  
 Cela dit les fichiers .sql sont volumineux. Pour gagner de la place, on va les compresser à la volée lors de la sauvegarde. Cela dit les fichiers .sql sont volumineux. Pour gagner de la place, on va les compresser à la volée lors de la sauvegarde.
  
 ==== Compresser la sauvegarde mysql ==== ==== Compresser la sauvegarde mysql ====
- 
  
 Pour compresser les données, nous allons utiliser gunzip après avoir invoqué mysqldump. Pour compresser les données, nous allons utiliser gunzip après avoir invoqué mysqldump.
Ligne 213: Ligne 255:
 Cela donnera des commandes du type : Cela donnera des commandes du type :
  
-<​code>​mysqldump <​commandes>​ | gzip > fichier_destination.sql.gz</​code>​+<​code>​ 
 +mysqldump <​commandes>​ | gzip> fichier_destination.sql.gz
  
-Exemple avec la commande de sauvegarde complète :+</​code>​
  
-<​code>​mysqldump --user=mon_user --password=mon_password --all-databases | gzip > fichier_destination.sql.gz</​code>​+Exemple avec la commande de sauvegarde complète :<​code>​ 
 + 
 +mysqldump --user=mon_user --password=mon_password --all-databases | gzip> fichier_destination.sql.gz 
 + 
 +</​code>​
  
 A noter qu’avec cette méthode, la commande de sauvegarde mysql produit un seul fichier compressé. le fichier source n’existe plus. A noter qu’avec cette méthode, la commande de sauvegarde mysql produit un seul fichier compressé. le fichier source n’existe plus.
 +
 ==== Restauration MySql ==== ==== Restauration MySql ====
  
- +Pour la restauration mysql on n’utilise plus la commande mysqldump. On utilise la commande mysql. La commande mysql va aller lire un fichier puis le restaurer en fonction de son contenu et de ses instructions.
-Pour la restauration mysql on n’utilise plus la commande mysqldump. On utilise la commande mysql. +
-La commande mysql va aller lire un fichier puis le restaurer en fonction de son contenu et de ses instructions.+
  
 La restauration mysql peut se faire pour toutes les bases de données ou pour un base de données précise. La restauration mysql peut se faire pour toutes les bases de données ou pour un base de données précise.
  
-Exemple sans distinction de base de données :+Exemple sans distinction de base de données :<​code>​
  
-<​code>​mysql --user=mon_user --password=mon_password < fichier_source.sql</​code>​+mysql --user=mon_user --password=mon_password <​fichier_source.sql 
 + 
 +</​code>​
  
 Autre exemple pour restaurer dans une base de données précise : Autre exemple pour restaurer dans une base de données précise :
  
-<​code>​mysql --user=mon_user --password=mon_password nom_de_la_base < fichier_source.sql</​code>​+<​code>​ 
 +mysql --user=mon_user --password=mon_password nom_de_la_base <​fichier_source.sql 
 + 
 +</​code>​ 
 +==== Backup complet SQL des bases ==== 
 + 
 +Pour toutes les bases : 
 + 
 +<​code>​ 
 +mysqldump --user=root --password=XXX --all-databases>​ alldatabases-`date +%Y%m%d-%H%M`.sql 
 + 
 +</​code>​ 
 + 
 +Script complet de backup à adapter : 
 + 
 +<​code>​ 
 +#​!/​usr/​bin/​env bash 
 + 
 +SQL_USER="​root"​ 
 +SQL_PASS="​XXX"​ 
 +SQL_HOST="​localhost"​ 
 + 
 +FILE_PREFIX="​backup_db"​ 
 + 
 +FILE_DATE=`date +%Y-%m-%d-%H-%M-%S` 
 +TARGET_FILE_PATH="/​root/​Backups/"​ 
 +mkdir -p "​$TARGET_FILE_PATH"​ 
 + 
 +DATABASES=$(mysql -h $SQL_HOST -u $SQL_USER --password=$SQL_PASS -e "SHOW DATABASES;"​ | tr -d " | " | grep -v -e Database -e _schema -e mysql) 
 + 
 +for DB_NAME in "​$DATABASES";​ do 
 +        mysqldump -h $SQL_HOST -u $SQL_USER --password=$SQL_PASS --single-transaction --skip-lock-tables "​$DB_NAME">​ "​$TARGET_FILE_PATH""​$FILE_PREFI$ 
 +        gzip "​$TARGET_FILE_PATH""​$FILE_PREFIX"​."​$DB_NAME"​."​$FILE_DATE"​.sql 
 +done 
 + 
 +</​code>​
  
technique/mysql.txt · Dernière modification: 2019/11/22 10:30 par francoisa