如何备份除两个之外的所有MySQL数据库

14 浏览
0 Comments

如何备份除两个之外的所有MySQL数据库

这可能非常简单,但我将在一个实时服务器上执行此操作,不想搞砸。

请问有人可以告诉我如何对除了mysql和performance_schema数据库之外的所有数据库、存储过程、触发器等进行mysqldump吗?

0
0 Comments

问题的原因是:在mysqldump中没有可以用于过滤数据库列表的选项。但是可以通过运行两个命令来实现,一个命令用于获取数据库列表并过滤掉指定的数据库,另一个命令用于执行mysqldump命令。

解决方法是:

1. 使用以下命令获取数据库列表并过滤掉指定的数据库:

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

这个命令通过执行mysql命令获取数据库列表,并使用grep命令过滤掉mysql和performance_schema数据库。

2. 使用以下命令执行mysqldump命令,将过滤后的数据库导出:

# mysqldump -B $DATABASES

这个命令使用mysqldump命令导出过滤后的数据库。

需要注意的是,为了包括存储过程在导出中,需要添加-R选项。

以上就是解决问题的方法。

0
0 Comments

问题出现的原因:

根据MySQL的参考手册,mysqldump默认不会导出INFORMATION_SCHEMA和performance_schema数据库。要导出这两个数据库,需要在命令行中显式地指定它们,并且还需要使用--skip-lock-tables选项。也可以使用--databases选项指定它们。

解决方法:

为了导出所有数据库,可以使用以下命令:

mysqldump -h 主机名 -u 用户名 -p密码 -A -R > 导出文件名.sql

如果只想测试而不导出所有数据,可以添加-d选项,只导出数据库、表(和例程)的定义,不包含数据。

如Basile在他的回答中所提到的,忽略导出mysql数据库的最简单方法是使用没有访问权限的用户来调用mysqldump。因此,关键是使用或创建一个只有访问要导出的数据库的用户。

0
0 Comments

问题的原因:用户想要导出除了两个MySQL数据库之外的所有数据库,但不清楚如何实现。

解决方法:

用户可以使用以下命令来同时导出多个数据库:

mysqldump --user=[用户名] --password=[密码] --host=[主机] --databases 数据库1 数据库2 数据库3 [...] --routines > dumpfile.sql

或者可以使用以下命令来导出所有数据库:

mysqldump --user=[用户名] --password=[密码] --host=[主机] --all-databases --routines > dumpfile.sql

对于最后一个命令,如果不想导出performance_schema、mysql、phpMyAdmin等数据库,只需确保[用户名]无法访问它们即可。

用户喜欢在stackoverflow上看到不同用户的回答相互补充的情况,这正是stackoverflow的目的所在。

0