安卓系统

如何使用mysqldump备份和还原mysql数据库

MySQL简单的备份恢复(mysqldump) [LinuxCast视频教程]

MySQL简单的备份恢复(mysqldump) [LinuxCast视频教程]

目录:

Anonim

本教程说明了如何使用mysqldump实用程序从命令行备份和还原MySQL或MariaDB数据库。

mysqldump实用程序创建的备份文件基本上是一组SQL语句,可用于重新创建原始数据库。 mysqldump命令还可以生成CSV和XML格式的文件。

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

Mysqldump命令语法

在开始使用mysqldump命令之前,让我们先回顾一下基本语法。

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

mysqldump > file.sql

  • options -mysqldump选项文件 file.sql 转储(备份)文件

要使用mysqldump命令,必须可访问并正在运行MySQL服务器。

备份单个MySQL数据库

mysqldump工具最常见的用例是备份单个数据库。

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

mysqldump -u root -p database_name > database_name.sql

系统将提示您输入root密码。 成功通过身份验证后,转储过程将开始。 根据数据库大小,此过程可能需要一些时间。

mysqldump database_name > database_name.sql

备份多个MySQL数据库

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

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

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

备份所有MySQL数据库

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

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

恢复MySQL转储

您可以使用 mysql 工具还原MySQL转储。 命令的一般语法如下:

mysqld database_name < file.sql

在大多数情况下,您需要创建一个要导入的数据库。 如果数据库已经存在,则首先需要将其删除。

在以下示例中,第一个命令将创建一个名为 database_name ,然后将转储 database_name.sql 导入其中:

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

从完整的MySQL转储还原单个MySQL数据库

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 的数据库中。 在运行命令之前,请确保数据库已在远程服务器上存在。

使用Cron自动执行备份

自动化备份数据库的过程就像创建cron作业一样简单,它将在指定时间运行mysqldump命令。

要使用cronjob设置MySQL数据库的自动备份,请执行以下步骤:

  1. 在用户主目录中创建一个名为 .my.cnf 的文件:

    sudo nano ~/.my.cnf

    将以下文本复制并粘贴到.my.cnf文件中。

    user = dbuser password = dbpasswd

    不要忘记用数据库用户和用户密码替换 dbuser dbpasswd

    限制凭据文件的权限,以便只有您的用户可以访问它:

    chmod 600 ~/.my.cnf

    创建一个目录来存储备份:

    mkdir ~/db_backups

    打开您的用户crontab文件:

    crontab -e

    添加以下cron作业,该作业将每天凌晨3点创建数据库名称 mydb 的备份:

    0 3 * * * /usr/bin/mysqldump -u dbuser mydb > /home/username/db_backups/mydb-$(date +%Y%m%d).sql

    不要忘记将用户名替换为您的实际用户名。

您还可以创建另一个cronjob来删除30天以上的所有备份:

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

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

结论

本教程仅介绍基础知识,但是对于任何想学习如何使用mysqldump实用工具从命令行创建和还原MySQL数据库的人来说,它都是一个不错的开始。

您还可以查看有关如何重置MySQL根密码的教程,以防万一忘记了它。

mysql mariadb备份mysqldump