« MYSQL » : différence entre les versions

De TwisterWiki
Aucun résumé des modifications
 
(21 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
== Réaliser des dumps ==
== Réaliser des dumps ==
  mysqldump --extended-insert=FALSE --add-drop-table --user=$USER --password=$PASS $DATABASE > dump.sql
<source lang="bash">
  mysqldump --extended-insert=FALSE --add-drop-table --no-data --user=$USER --password=$PASS $DATABASE > dump_schema.sql
  mysqldump --extended-insert=FALSE --add-drop-table --triggers --routines --add-drop-database --user=$USER --password=$PASS $DATABASE > dump.sql
  mysqldump --extended-insert=FALSE --add-drop-table --triggers --routines --add-drop-database --no-data --user=$USER --password=$PASS $DATABASE > dump_schema.sql


mysqldump --opt --triggers --routines --add-drop-database --user=$USER --password=$PASS $DATABASE > dump.sql
</source>
<source lang="mysql">
mysqldump --defaults-file=/etc/mysql/debian.cnf  --master-data --add-drop-table --triggers --routines --all-databases |ssh {SLAVE_SERVER} "mysql --defaults-file=/etc/mysql/debian.cnf"
</source>
* Backup de tables commençant par une chaine de caractère
<source lang="mysql">
mysqldump -u USER -p DATABASE $(mysql -u USER -p -D DATABASE -Bse "show tables like 'PREFIX%'") > dump_file.sql
</source>


== Basculer un slave en master et le master en slave ==
== Basculer un slave en master et le master en slave ==


;faire passer le master en "read only"
;faire passer le master en "read only"
: <span style="color: blue;">mysql -u root -p</span>
<source lang="mysql">
: mysql> <span style="color: blue;">use DATABASE;</span>
mysql -u root -p
: mysql> <span style="color: blue;">flush tables with read lock;</span>
use DATABASE;
flush tables with read lock;
</source>
 


;stopper le slave
;stopper le slave
: <span style="color: blue;">mysql -u root -p</span>
<source lang="mysql">
: mysql> <span style="color: blue;">stop SLAVE;</span>
mysql -u root -p
stop SLAVE;
</source>
 


;noter la position du serveur en slave
;noter la position du serveur en slave
: <span style="color: blue;">mysql -u root -p</span>
<source lang="mysql">
: mysql> <span style="color: blue;">show master status\G</span>
mysql -u root -p
show master status\G
</source>
 


;sur le master (passage en slave)
;sur le master (passage en slave)
: mysql> <span style="color: blue;">CHANGE MASTER TO MASTER_HOST='', MASTER_USER='replic', MASTER_PASSWORD='PASSWORD', MASTER_PORT=3306 ,MASTER_LOG_FILE='FILE', MASTER_LOG_POS=POS;</span>
<source lang="mysql">
CHANGE MASTER TO MASTER_HOST='', MASTER_USER='replic', MASTER_PASSWORD='PASSWORD', MASTER_PORT=3306 ,MASTER_LOG_FILE='FILE', MASTER_LOG_POS=POS;
</source>
 


;repasser le slave en "read write"
;repasser le slave en "read write"
: mysql> <span style="color: blue;">use DATABASE;</span>
<source lang="mysql">
: mysql> <span style="color: blue;">unlock tables;</span>
use DATABASE;
unlock tables;
 


;Une fois toute ces opération réalisée le master est devenu le slave, Il reste à supprimer le fichier /var/lib/mysql/master.info
;Une fois toute ces opération réalisée le master est devenu le slave, Il reste à supprimer le fichier /var/lib/mysql/master.info
: <span style="color: blue;">mysql -u root -p</span>
<source lang="mysql">
: mysql> <span style="color: blue;">stop SLAVE;</span>
mysql -u root -p
: <span style="color: blue;">rm /var/lib/mysql/master.info</span>
 
: <span style="color: blue;"> mysql -u root -p</span>
stop SLAVE
: mysql><span style="color: blue;"> start SLAVE;</span>
rm /var/lib/mysql/master.info
 
mysql -u root -p
 
start SLAVE
</source>


== [http://www.dj-j.net/waka/Linux:Administration_MySQL Documentation sur MySQL]==
== [http://www.dj-j.net/waka/Linux:Administration_MySQL Documentation sur MySQL]==
Ligne 37 : Ligne 69 :


== Identifier les tables en innodb ==
== Identifier les tables en innodb ==
 
<source lang="mysql">
  use information_schema
  use information_schema
  SELECT CONCAT(`TABLE_SCHEMA`,".",`TABLE_NAME`) FROM TABLES WHERE ENGINE = "InnoDB";
  SELECT CONCAT(`TABLE_SCHEMA`,".",`TABLE_NAME`) FROM TABLES WHERE ENGINE = "InnoDB";
</source>


== les variables MySQL==
== les variables MySQL==
Ligne 68 : Ligne 101 :
  + tmp_table_size
  + tmp_table_size
  + ( max_connexion x (read_buffer_size + read_rnd_buffer_size + join_buffer_size + sort_buffer_size ))
  + ( max_connexion x (read_buffer_size + read_rnd_buffer_size + join_buffer_size + sort_buffer_size ))
== Commandes mysql utiles ==
=== Purge des logs binaires ===
<source lang="mysql">
FLUSH LOGS;
RESET MASTER;
</source>
Ou
<source lang="mysql">
PURGE BINARY LOGS TO 'mysql-bin.0002560';
PURGE BINARY LOGS BEFORE '2013-06-13 22:46:26';
</source>
=== Lister les index ===
<source lang="mysql">
SHOW INDEX FROM table.db;
SHOW INDEX FROM table [FROM db];
</source>
=== créer un index ===
<source lang="mysql">
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [index_type] ON tbl_name (index_col_name,...)
</source>
=== Activé le logs des erreurs tels que les erreurs de connexion ===
<source lang="mysql">
set global log_warnings = '2';
</source>
0 = pas de logs
1 = activation des logs
>1 = connexion annulées,et erreur d’accès (access-denied errors )
* Les erreurs sont inscritent dans /var/log/syslog


[[category:Basededonnées]]
[[category:Basededonnées]]
[[category:Linux]]
[[category:Linux]]

Dernière version du 12 juin 2014 à 07:16

Réaliser des dumps

 mysqldump --extended-insert=FALSE --add-drop-table --triggers --routines --add-drop-database --user=$USER --password=$PASS $DATABASE > dump.sql
 mysqldump --extended-insert=FALSE --add-drop-table --triggers --routines --add-drop-database --no-data --user=$USER --password=$PASS $DATABASE > dump_schema.sql

 mysqldump --opt --triggers --routines --add-drop-database --user=$USER --password=$PASS $DATABASE > dump.sql
mysqldump --defaults-file=/etc/mysql/debian.cnf  --master-data --add-drop-table --triggers --routines --all-databases |ssh {SLAVE_SERVER} "mysql --defaults-file=/etc/mysql/debian.cnf"


  • Backup de tables commençant par une chaine de caractère
mysqldump -u USER -p DATABASE $(mysql -u USER -p -D DATABASE -Bse "show tables like 'PREFIX%'") > dump_file.sql

Basculer un slave en master et le master en slave

faire passer le master en "read only"
mysql -u root -p
use DATABASE;
flush tables with read lock;


stopper le slave
mysql -u root -p
stop SLAVE;


noter la position du serveur en slave
mysql -u root -p
show master status\G


sur le master (passage en slave)
CHANGE MASTER TO MASTER_HOST='', MASTER_USER='replic', MASTER_PASSWORD='PASSWORD', MASTER_PORT=3306 ,MASTER_LOG_FILE='FILE', MASTER_LOG_POS=POS;


repasser le slave en "read write"
use DATABASE;
unlock tables;


;Une fois toute ces opération réalisée le master est devenu le slave, Il reste à supprimer le fichier /var/lib/mysql/master.info
<source lang="mysql">
mysql -u root -p

stop SLAVE
rm /var/lib/mysql/master.info

mysql -u root -p

start SLAVE

Documentation sur MySQL

Identifier les tables en innodb

 use information_schema
 SELECT CONCAT(`TABLE_SCHEMA`,".",`TABLE_NAME`) FROM TABLES WHERE ENGINE = "InnoDB";

les variables MySQL

  • Les globales
    • key_buffer
    • query_cache_size
    • query_cache_limit
    • table_cache
    • open_files_limit
    • max_connections
    • innodb_buffer_pool_size
    • innodb_log_buffer_size
    • max_heap_table_size
    • tmp_table_size
  • les variables de sessions (à multiplié par le max_connection)
    • read_buffer_size (par défaut à 128k)
    • read_rnd_buffer_size (par défaut à 256k)
    • join_buffer_size (par défaut à 256k)
    • sort_buffer_size (par défaut à 2M)

Calcul de la quantité de mémoire utilisée par mysql

key_buffer
+ query_cache_size
+ innodb_buffer_pool_size
+ innodb_log_buffer_size
+ max_heap_table_size
+ tmp_table_size
+ ( max_connexion x (read_buffer_size + read_rnd_buffer_size + join_buffer_size + sort_buffer_size ))


Commandes mysql utiles

Purge des logs binaires

FLUSH LOGS;
RESET MASTER;

Ou

PURGE BINARY LOGS TO 'mysql-bin.0002560';
PURGE BINARY LOGS BEFORE '2013-06-13 22:46:26';

Lister les index

SHOW INDEX FROM table.db;
SHOW INDEX FROM table [FROM db];

créer un index

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [index_type] ON tbl_name (index_col_name,...)

Activé le logs des erreurs tels que les erreurs de connexion

set global log_warnings = '2';
0 = pas de logs
1 = activation des logs
>1 = connexion annulées,et erreur d’accès (access-denied errors )
  • Les erreurs sont inscritent dans /var/log/syslog