除了两个之外如何转储所有MySQL数据库

时间:2015-09-24 21:16:30

标签: mysql

这可能非常简单,但我会为实时服务器执行此操作,并且不想搞砸它。

有人可以告诉我除了mysql和performance_schema数据库之外我怎么能处理所有数据库,程序,触发器等的mysqldump?

3 个答案:

答案 0 :(得分:3)

是的,你可以同时转储几个模式:

mysqldump --user=[USER] --password=[PASS] --host=[HOST] --databases mydb1 mydb2 mydb3 [...] --routines > dumpfile.sql

OR

mysqldump --user=[USER] --password=[p --host=[HOST] --all-databases --routines > dumpfile.sql

关于最后一个命令,如果你不想转储performance_schema(编辑:正如@Barranka所提到的,默认情况下mysqldump不会转储它),mysql,phpMyAdmin架构等,你只需要确保[ USER]无法访问它们。

答案 1 :(得分:2)

mysqldump中没有可用于过滤数据库列表的选项,但您可以运行两个命令:

# DATABASES=$(mysql -N -B -e "SHOW DATABASES" | grep -Ev '(mysql|performance_schema)')
# mysqldump -B $DATABASES

答案 2 :(得分:2)

As stated in the reference manual:

  默认情况下,

mysqldump不会转储INFORMATION_SCHEMAperformance_schema数据库。要转储其中任何一个,请在命令行中明确命名,并使用--skip-lock-tables选项。您也可以使用--databases选项命名它们。

这样就可以解决您对转储这些数据库的担忧。

现在,要转储所有数据库,我认为您应该这样做:

mysqldump -h Host -u User -pPassword -A -R > very_big_dump.sql

要在不转储所有数据的情况下对其进行测试,可以添加-d标志以仅转储没有数据的数据库,表(和例程)定义。

正如Basile在他的回答中所提到的,省略转储mysql数据库的最简单方法是使用无法访问它的用户调用mysqldump。因此,重点是:使用或创建只能访问您要转储的数据库的用户。