По сути это вольный перевод рецепта отсюда:
Для того, чтобы сделать дамп определенных таблиц у mysqldump’a следующей опцией, после указания базы идет как раз список таблиц.
Собственно таблицы нужно указывать друг за другом, последовательно, через пробелы. Но нельзя использовать шаблоны (например prefix_*).
mysqldump databasename table1 table2 table3
Также есть ключик --ignore-table
, работающий таким же образом. Иногда бывает проще исключить что-то и задампить все таблицы, кроме нескольких.
Другой способ состоит в том, чтобы получить список таблиц в файл с помощью чего-то такого:
mysql -N information_schema -e "select table_name from tables where table_schema = 'databasename' and table_name like 'bak_%'" > tables.txt
Данный запрос даст нам список всех таблиц, удовлетворяющих указанному условию. Имя каждой таблицы будет отдельной строкой в файле. Файл можно отредактировать руками, например, удалить что-то лишнее или добавить. В источнике написано ‘get all databases into one line’, не очень понял что именно автор имел в виду, так как дальнейшая операция
mysqldump dbname `cat tables.txt` > dump_file.sql
замечательно делает дамп всех нужных таблиц, взяв их имена из указанного файла. Ну и не забываем, если нужно, написать --opt
.
Чтобы дропнуть таблицы одной строкой (не рекомендуется так делать, естественно, если нету бэкапа и вы не уверены вообще в том, что делаете ), можно сделать так:
mysql -NB information_schema -e "select table_name from tables where table_name like 'bak_%'"| xargs -I"{}" mysql dbname -e "DROP TABLE {}"
Там (по ссылке в начале) есть еще варианты, но мне понравился именно этот.
Мне это пригодилось, решил сохранить в виде рецепта.