Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann man alle Innodb-Tabellen selektiv in einer MySQL-Datenbank sichern?

Wenn dies eine einmalige Operation wäre, würde ich Folgendes tun:

use DB;
show table status name where engine='innodb';

und führen Sie eine rechteckige Kopie/Einfügung aus der Spalte Name aus:

+-----------+--------+---------+------------+-
| Name      | Engine | Version | Row_format |
+-----------+--------+---------+------------+-
| countries | InnoDB |      10 | Compact    |
| foo3      | InnoDB |      10 | Compact    |
| foo5      | InnoDB |      10 | Compact    |
| lol       | InnoDB |      10 | Compact    |
| people    | InnoDB |      10 | Compact    |
+-----------+--------+---------+------------+-

in einen Texteditor und konvertieren Sie es in einen Befehl

mysqldump -u USER DB countries foo3 foo5 lol people > DUMP.sql

und importieren Sie dann, nachdem Sie alle Instanzen von ENGINE=InnoDB ersetzt haben mit ENGINE=MyISAM in DUMP.sql

Wenn Sie die Magie des rechteckigen Kopierens/Einfügens vermeiden möchten, können Sie Folgendes tun:

use information_schema;
select group_concat(table_name separator ' ') from tables 
    where table_schema='DB' and engine='innodb';

was countries foo3 foo5 lol people zurückgibt