Scripts bash pour convertir rapidement toutes vos tables MyISAM vers le moteur InnoDB.
Pour toutes les tables de toutes les bases
Version séquentielle
La conversion de la table suivante ne sera faite que si la précédente est finie (ignorez les erreurs pour les tables déjà en InnoDB 😉).
##!/usr/bin/env bash
for db in `mysql --batch --skip-column-names -e "show databases;" | egrep -v "mysql|information_schema|performance_schema|lost"`; do
echo "# "$db
for table in `echo "show tables" | mysql --batch --skip-column-names $db`; do
echo "-- "$table
mysql $db -e "ALTER TABLE $table ENGINE = InnoDB;"
done
done
" Version " Bourrin
##!/usr/bin/env bash
for db in `mysql --batch --skip-column-names -e "show databases;" | egrep -v "mysql|information_schema|performance_schema|lost"`; do
echo "# "$db
for table in `echo "show tables" | mysql --batch --skip-column-names $db`; do
echo "-- "$table
mysql $db -e "ALTER TABLE $table ENGINE = InnoDB;" &
done
done
Pour toutes les tables d’une base
Vous pouvez le faire de manière soft (Table par table)
##!/bin/bash
DATABASENAME="votrebdd"
for i in `echo "show tables" | mysql --batch --skip-column-names $DATABASENAME`; do
mysql $DATABASENAME -e "ALTER TABLE `$i` ENGINE = InnoDB;"
done
Ou en version “Multithread” (Bourrin)
##!/bin/bash
DATABASENAME="votrebdd"
for i in `echo "show tables" | mysql --batch --skip-column-names $DATABASENAME`; do
mysql $DATABASENAME -e "ALTER TABLE `$i` ENGINE = InnoDB;" &
done
Catégories : Linux