如何从命令行备份和还原MariaDB数据库

MariaDB是MySQL的社区驱动型。 在本教程中,我将向您展示如何使用 mysqldump 效用。

mysqldump

mysqldump是我们将用来备份MariaDB数据库的实用程序。 专为备份目的而设计。 关于mysqldump的很酷的事情是您不需要停止MariaDB服务即可进行备份。 它可用于备份单个数据库,多个数据库和所有数据库。 默认情况下,它将创建一个转储文件,其中包含重新创建数据库所需的所有语句。

二进制日志

二进制日志将每个更改记录到数据库中。 二进制日志可以基于语句和基于行。 它的主要目的是允许复制和备份。 为了备份和以后还原数据库,必须启用二进制日志。

要启用二进制日志,请编辑MariaDB配置文件。 在不同的Linux发行版中,配置文件的名称可能有所不同。 通常位于 /etc/my.cnf 要么 /etc/mysql/my.cnf。 在ubuntu上,它也可以是 /etc/mysql/mariadb.conf.d/50-server.cnf

打开配置文件,在 [mysqld] 部分,找到以下行

#log_bin     = /var/log/mysql/mysql-bin.log

删除英镑符号。 保存并关闭文件。 如果找不到,请手动添加。 之后,重新启动MariaDB数据库服务器。

sudo systemctl restart mysql

要么

sudo service mysql restart

现在启用了二进制日志。

备份单个数据库

要备份单个数据库,请在shell提示符下发出以下命令

mysqldump -u root -p database_name > database_name.sql

用您的实际数据库名称替换database_name。 database_name.sql是转储文件。

备份多个数据库

要备份多个数据库,您需要在MySQLdump中添加–databases选项。

mysqldump -u root -p --databases db_name1 db_name2 ...  > multi_database.sql

备份所有数据库

要备份所有数据库,您需要在MySQLdump中添加–all-databases选项。

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

使用压缩备份MariaDB数据库

要压缩.sql文件,只需将mysqldump的输出通过管道传输到gzip,这可以大大减少备份文件的大小。

mysqldump -u root -p database_name | gzip > database_name.sql.gz

暗示

如果要自动记录备份数据库的时间,请在备份文件名中添加以下文本。

`date +"%Y-%m-%d"`

像这样

mysqldump -u root -p database_name > database_name_`date +"%Y-%m-%d"`.sql

还原单个数据库

首先使用mysql在目标机器上创建数据库

mysql -u root -p

create database database_name;

exit;

然后将备份还原到您的数据库

mysql -u root -p database_name < database_name.sql

还原多个数据库

mysql -u root -p < multi-databases.sql

目标计算机上的现有数据库将保持不变。

还原所有数据库

mysql -u root -p < all-databases.sql

all-databases.sql文件中的SQL语句将在MariaDB中重新创建所有数据库。 目标计算机上的现有数据库将保持不变。

通过电子邮件发送备份

您可以安装命令行邮件客户端 mutt

sudo apt install mutt

然后将备份作为附件发送。

echo "database backup" | EMAIL="[email protected]" mutt -s " database backup" -a database_name_`date +"%Y-%m-%d"`.sql.gz -- [email protected]

哪里:

  • 回声部分用作电子邮件正文。
  • EMAIL环境变量指定“发件人:”地址。
  • -s 指定主题。
  • -a 附加文件。
  • 双破折号用于将附件与收件人电子邮件地址分开。
  • Gmail当前最多可以接收50MB的附件。

使用Cron自动备份

编辑根目录的crontab文件。

sudo crontab -e

添加以下行以每天自动备份数据库。

@daily mysqldump -u root database_name | gzip > database_name_`date +"%Y-%m-%d"`.sql.gz

Cron中的百分号(%)是元字符,表示文件结尾。 我们需要使用反斜杠将其转义以使用其字面含义。

得到帮助

请注意 --opt 运行mysqldump时,默认情况下该选项处于启用状态。 此选项是一组其他选项的简写,包括:

  • –添加表
  • –添加锁
  • –create-options
  • –禁用键
  • –扩展插入
  • –锁表
  • -快
  • –set-charset

因此,当您运行mysqldump时,默认情况下上述所有选项均处于启用状态。 有关更多信息,请查看手册: man mysqldump

您不时需要检查备份是否正常工作。 在理想的世界中,技术是完美的。 但是实际上,它可能由于任何原因而失败。

Sidebar