mysql - 备份和恢复部分数据库

标签 mysql database backup

我解释我的场景。我有几个站点(例如 Wordpress,但我的问题是一般性的)具有自动更新功能,一些插件具有自动更新功能,管理员(标准 pc 用户)写帖子,创建页面,.. 每天我都会对每个站点的文件和数据库进行完整备份,并将其存储在存储设备上 6 个月。

让我们假设在第 1 天一切正常。 在第 2 天,我的网站成功进行了自动更新。 第 3 天,管理员插入了很多内容,例如许多页面和帖子。 第 4 天,管理员注意到插件停止正常工作(可能是由于更新)。 在第 5 天,管理员就插件问题向维护网站的人(我)提出建议。

问题:使用第 1 天的备份恢复数据库,但从第 3 天的备份中插入内容。 在 Wordpress 上,我可能可以通过恢复第 1 天的数据库手动解决问题,并将 wp_post 表替换为第 3 天的数据库之一。

到目前为止,我的问题比较笼统:如何每天(或每小时)只修改、添加或保存在 SQL 文件(或其他格式)中删除数据库的行? 所以在解释的场景中,我应该有这样的备份文件:

day1diffs.sql
day2diffs.sql
...

我怎样才能得到这个结果?或者更好的是,遵循这条线会有用吗?

最佳答案

这是一个很难的问题。当我们只讨论 InnoDB 表时,您有两个原因:

首先:

使用 xtrabackup,你可以在每次 ie 上进行增量备份。每月 1 日,您可以在每个星期日进行 1 级备份(完整)。这只是 0 级与其他日子的 2 级备份和每小时 3 级备份之间的区别。所以你有非常小的部分,可以回到每个时间点。 此备份不会停止或阻止服务器(仅在很短的时间内)从每个 Tablediff 生成二进制副本,然后保存二进制日志。

第二个:

每周制作一次 mysqldump 或任何你想要的东西,并将二进制日志保存一周以上。您可以使用 rsync 复制它以将其存档。所以你也可以去每个时间点,但你必须恢复备份,然后你必须将二进制日志从备份点插入到你想要的点。如果您的 mysqldump 已存在 5 天,那么您必须全部导入!!!二进制日志从转储日期开始到您想要的日期。这可能需要很长时间。

关于mysql - 备份和恢复部分数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32637632/

相关文章:

mysql - 使用 CodeIgniter 中的事件记录类在一个查询中计数、分组、排序?

mysql - 自连接查询

MySQL 8 创建新用户,密码不起作用

java - Room 无法检索以下列

file - Bash 脚本创建一个意外的文件

mysql - mysql中的autoincrement可以递增2吗?

php - 如何在magento 1.8.1中添加产品图片销售订单网格?

大型/巨大表上的 MySQL 数据库性能选择

linux - 无法使用 expdp 导出,无法打开日志等等

cron - 需要在 Google 计算引擎 (gce) 上运行 cron 作业,以使用服务帐户执行 gcloud 快照