首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySQL中使用mysqldump进行增量备份

问在MySQL中使用mysqldump进行增量备份
EN

Database Administration用户
提问于 2018-06-19 09:15:48
回答 1查看 12.3K关注 0票数 1

我想使用mysqldump对MySQL数据库进行增量备份。我已经创建了一个脚本并使用crontab进行了备份。它需要备份,而不是增量;它只需要一个完整的数据库备份。我没有找到任何方法来进行增量备份。

我的代码如下:

backup.sh脚本

代码语言:javascript
复制
#!/bin/bash
YEAR=$(date +%Y)
MONTH=$(date +%m)
DAY=$(date +%d)
HOUR=$(date +%H)
mkdir -p $YEAR/$MONTH/$DAY/$HOUR
mysqldump -uroot -pRedhat@123 mydb > $YEAR/$MONTH/$DAY/$HOUR/backup.sql

Crontab

代码语言:javascript
复制
crontab -e
# Minute   Hour   Day of Month       Month          Day of Week        Command
# (0-59)  (0-23)     (1-31)    (1-12 or Jan-Dec)  (0-6 or Sun-Sat)
30        *         *            *                1-6       exec  '/bin/bash /home/backup.sh'

列出

的备份文件

代码语言:javascript
复制
bash backup.sh

[root@master 17]# ls -lh backup.sql 
-rw-r--r--. 1 root root 49M Jun 15 17:05 backup.sql

[root@master 17]# ls -lh backup.sql 
-rw-r--r--. 1 root root 362M Jun 18 17:23 backup.sql

我希望它将只需要更改块备份,而不是像上面的例子那样的完全备份。

附加信息

我正在使用免费版本的MySQL。没有可用的企业功能。

EN

回答 1

Database Administration用户

发布于 2022-06-23 19:49:20

mysqldump是用于创建逻辑完全备份的实用程序。该工具不允许您进行增量备份,但需要它来优化增量备份。

基于

MySQL

的增量备份

二进制日志是一组日志文件,其中包含有关对MySQL数据库所做的所有更改的信息。使用此数据,可以将数据库中的数据还原到较早的日期。

通常,从创建数据库时起,binlog就不包含所有数据。从绑定日志恢复的起点是通过mysqldump创建的完整的备份。

也就是说,完全备份创建是创建增量备份的第一步。

代码语言:javascript
复制
mysqldump --flush-log --master-data=2 [other options]

--flush-log -初始化写入新的binlog文件

--master-data=2 -将新的binlog文件的名称写入.sql转储(它将是还原链中的第一个)

如果不使用复制,则--delete-master-log 选项也可能有用。它将删除在完全备份之前创建的二进制日志。

增量备份只是将新的binlog文件复制到归档文件并将它们发送到目标。

通常,binlog文件的存储目录由以下路径定位:

在Linux /opt/mysql/data中

在Windows C:\ProgramData\MySQL\MySQL Server 5.6\Data\中

主要的困难是您只需要复制新文件,而不是复制最后一个binlog文件。无论如何,这是可以做到的,下面是关于如何做在Windows上和在Linux上的更多细节。

从绑定日志

还原

首先,您需要恢复完整的备份。

代码语言:javascript
复制
mysql [connection settings] < full.sql

然后,您需要还原在创建完整备份之后创建的所有binlog文件。在完整备份中可以找到第一个binlog文件的编号,将有一个类似于以下内容的行:

-将母版改为MASTER_LOG_FILE='mysql-bin.002927',MASTER_LOG_POS=120;

您需要将binlog文件转换为SQL指令。这可以使用mysqlbinlog实用程序来完成。它以二进制日志文件的列表作为输入,备注顺序事项:

代码语言:javascript
复制
mysqlbinlog mysql-bin.002927 mysql-bin.002928 mysql-bin.002929 mysql-bin.002930 > inc.sql

现在您可以恢复增量备份:

代码语言:javascript
复制
mysql [connection settings] < inc.sql

附加信息

  1. 如果您更喜欢使用binlog进行备份,那么最好为binlog设置行格式。
  2. MySQL增量备份可以通过Percona XtraBackup实用程序执行。
  3. MySQL企业备份-也支持增量备份
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/210005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档