Outils pour utilisateurs

Outils du site


linux:mysql (lu 64501 fois)

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
Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
linux:mysql [09-10-2019 10:55]
edmc73 [Sauvegarder]
linux:mysql [09-02-2020 21:14]
edmc73 [Sauvegarder]
Ligne 53: Ligne 53:
 Sauvegarder toutes les tables avec un prefix Sauvegarder toutes les tables avec un prefix
   mysqldump -h hostname -u user -p $(mysql nom_de_la_base -h hostname -u user -p -Bse 'show tables like"phpbb\_%"') > dump_phpbb_.sql   mysqldump -h hostname -u user -p $(mysql nom_de_la_base -h hostname -u user -p -Bse 'show tables like"phpbb\_%"') > dump_phpbb_.sql
 +
 +La bonne pratique en prod est d'utiliser les options suivantes:
 +
 +  mysqldump -u USER -p --single-transaction --quick --lock-tables=false --all-databases (or) DATABASE | gzip > OUTPUT.sql.gz
 +
 +  * --quick : This option is useful for dumping large tables. It forces mysqldump to retrieve rows for a table from the server a row at a time rather than retrieving the entire row set and buffering it in memory before writing it out
 +
 +  * --single-transaction : This option sets the transaction isolation mode to REPEATABLE READ and sends a START TRANSACTION SQL statement to the server before dumping data. It is useful only with transactional tables such as InnoDB, because then it dumps the consistent state of the database at the time when START TRANSACTION was issued without blocking any applications.
 +
 +  * --lock-tables=false : option stops MyISAM tables (if they exsit) being locked during the backup
  
 Restaurer  Restaurer 
Ligne 424: Ligne 434:
   mysqlbinlog --no-defaults --start-datetime="2019-09-09 12:15:00" /var/log/mysql/mysql-bin.[0-9]* | mysql -u root -p -f   mysqlbinlog --no-defaults --start-datetime="2019-09-09 12:15:00" /var/log/mysql/mysql-bin.[0-9]* | mysql -u root -p -f
  
 +===== Auto increment =====
 +
 +On peut réinitialiser la valeur de l'auto increment d'un id avec la requete
 +<code sql>
 +ALTER TABLE `users` AUTO_INCREMENT = 1;
 +</code>
 +Mysql prendra automatiquement le max(id) + 1
 +
 +Pour réinitialiser complètement une colonne d'id
 +<code sql>
 +ALTER TABLE `users` DROP `id`;
 +ALTER TABLE `users` AUTO_INCREMENT = 1;
 +ALTER TABLE `users` ADD `id` int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
 +</code>
 +
 +Si votre id est utilisé dans d'autres tables, il convient de définir les clés étrangères sur les autres tables avec l'option ''ON UPDATE CASCADE'' plutot que l'option par défaut ''ON UPDATE NO ACTION''
 +
 +<code sql>
 +SET @count = 0;
 +UPDATE `users` SET `users`.`id` = @count:= @count + 1;
 +ALTER TABLE `users` AUTO_INCREMENT = 1;
 +</code>
linux/mysql.txt · Dernière modification: 14-02-2023 11:39 de edmc73