通配符备份 MySQL 数据库

Rya*_*yan 2 mysql

网上关于如何基于通配符进行备份的讨论很多table name,但是通配符database name呢?

例如

如果我有名为的数据库

foo1
foo2
foo3
 .
 .
fooN
bar1
Run Code Online (Sandbox Code Playgroud)

我只想备份名称前缀foo为 的数据库,这可能吗?

Hex*_*Hex 6

您从数据库中的tables表中选择数据库名称information_schema。您可以使用过滤器按您的前缀过滤。使用输出的数据库名称使用 mysqldump 导出。一个实际例子如下:

mysqldump -u root -pPASSWORD --databases $(
  mysql -uroot -p -N information_schema \
    -e "SELECT DISTINCT(TABLE_SCHEMA)
        FROM tables
        WHERE TABLE_SCHEMA LIKE 'prefix%'"
) > /tmp/backup.sql
Run Code Online (Sandbox Code Playgroud)