如果您喜欢{Linux265},请告诉您身边的朋友,谢谢! 首页 > 资讯 > 如何使用Mysqldump备份和恢复MySQL数据库

如何使用Mysqldump备份和恢复MySQL数据库

来源:linux265.com 发布时间:2018-09-18

如何使用mysqldump备份和恢复MySQL数据库如何使用mysqldump备份和恢复MySQL数据库

本教程介绍如何使用mysqldump实用程序从命令行备份和还原MySQLMariaDB数据库。

mysqldump实用程序创建的备份文件基本上是一组可用于重新创建原始数据库的SQL语句。

如果不备份数据库,则软件错误或硬盘驱动器故障可能是灾难性的。 为了帮助您节省大量时间和挫折,强烈建议您采取预防措施,定期备份MySQL数据库。

您还可以使用mysqldump实用程序将MySQL数据库传输到另一个MySQL服务器。

Mysqldump命令语法

在讨论如何使用mysqldump命令之前,让我们先回顾一下基本语法。

mysqldump实用程序表达式采用以下形式:

mysqldump [options] > file.sql

备份单个MySQL数据库

要使用root用户创建名为database_name的数据库的备份并将其保存到名为database_name.sql的文件,您将运行以下命令:

mysqldump -u root -p database_name > database_name.sql

系统将提示您输入root密码。 输入它,按Enter键,转储过程将开始。 根据数据库大小,该过程可能需要一些时间。

如果您以用于执行导出的同一用户身份登录,并且该用户不需要密码,则可以省略-u和-p选项:

mysqldump database_name > database_name.sql

备份多个MySQL数据库

要使用一个命令备份多个MySQL数据库,您需要使用--database选项,后跟要备份的数据库列表。 每个数据库名称必须用空格分隔。

mysqldump -u root -p --database database_name_a database_name_b > databases_a_b.sql

上面的命令将创建一个包含两个数据库的转储文件。

备份所有MySQL数据库

要备份所有MySQL数据库,您将使用--all-databases选项:

mysqldump -u root -p --all-databases > all_databases.sql

与上一个示例相同,上面的命令将创建一个包含所有数据库的转储文件。

将所有MySQL数据库备份为单独的文件

mysqldump实用程序不提供将所有数据库备份为单独文件的选项,但我们可以通过简单的bash FOR循环轻松实现:

for DB in $(mysql -e 'show databases' -s --skip-column-names); do
    mysqldump $DB > "$DB.sql";
done

上面的命令将使用数据库名称作为文件名创建所有数据库的单独转储文件。

创建压缩的MySQL数据库备份

如果数据库大小非常大,那么压缩输出是个好主意。 为此,只需将输出管道传输到gzip实用程序,然后将其重定向到文件,如下所示:

mysqldump database_name > | gzip > database_name.sql.gz

使用时间戳创建备份

如果要在同一位置保留多个备份,则需要将日期添加到备份文件名:

mysqldump  database_name > database_name-$(date +%Y%m%d).sql

上面的命令将创建一个格式为database_name-20180617.sql的文件

如果您使用cronjob自动执行数据库备份,则还可以使用以下命令删除超过30天的任何备份:

find /path/to/backups -type f -name "*.sql" -mtime +30 -delete

当然,您需要根据备份位置和文件名调整命令。 要了解有关find命令的更多信息,请使用命令行指南检查我们如何在Linux中查找文件。

恢复MySQL转储

您可以使用mysql工具恢复MySQL转储。 在大多数情况下,您需要创建要导入的数据库。 如果数据库已经存在,则需要将其删除。

在以下示例中,第一个命令将创建名为database_name的数据库,然后将dump database_name.sql导入其中:

mysql -u root -p -e "create database database_name";
mysql -u root -p database_name < database_name.sql

从完整的MySQL转储中恢复单个MySQL数据库

如果使用-all-databases选项备份所有数据库,并且要从包含多个数据库的备份文件还原单个数据库,请使用--one-database选项,如下所示:

mysql --one-database database_name < all_databases.sql

在一个命令中导出和导入MySQL数据库

而不是从一个数据库创建转储文件,然后将备份导入另一个MySQL数据库,您可以使用以下单行:

mysqldump -u root -p database_name | mysql -h remote_host -u root -p remote_database_name

上面的命令会将输出传递给远程主机上的mysql客户端,并将其导入名为remote_database_name的数据库中。 在运行该命令之前,请确保远程服务器上已存在该数据库。

总结

本教程仅介绍基础知识,但对于想要学习如何使用mysqldump实用程序从命令行创建和恢复MySQL数据库的人来说,它应该是一个很好的开端。

您还可以查看有关如何重置MySQL root密码的教程,以防您忘记密码。

如果您有任何问题或反馈,请随时发表评论。

留言(0条)

我要发表看法

我要发表看法

«-必填

«-必填,不公开

«-我信任你,不会填写广告链接

若看不清,请点击更换

«- 点击按钮