MySql 备份最近 updated/inserted 数据
MySql take backup of recently updated/inserted data
我有大小为 500mb 的数据库,要进行备份需要大量时间来获取完整的转储文件,我只想知道有什么方法可以进行备份查询对于从日期时间到日期时间之间的日期,以便我可以在特定时间间隔内取回。
我知道我们可以使用
进行整个数据库备份
`$ > mysqldump -u username -p db_name > path/file.sql`
提前致谢:)
接受任何建议:)
您可以使用 mysqldump 的 --where
选项来获取行的子集。例如:
mysqldump --where "updated_at > '2020-06-14 00:00:00'" ...other options...
但是,这会将 WHERE 条件添加到它转储的每个 table 中。所以你必须在每个 table 中有一个 updated_at
列。 MySQL 不需要这样的列存在,因此这取决于您和您的 table 设计约定。
另一种方法是使用二进制日志。您可以将二进制日志的内容转储为一系列 SQL 重现增量更改的语句。
mysqlbinlog --start-datetime "2020-06-14 00:00:00" ...other options...
有关使用此命令的完整文档,请参阅 https://dev.mysql.com/doc/refman/8.0/en/mysqlbinlog.html。
我有大小为 500mb 的数据库,要进行备份需要大量时间来获取完整的转储文件,我只想知道有什么方法可以进行备份查询对于从日期时间到日期时间之间的日期,以便我可以在特定时间间隔内取回。
我知道我们可以使用
进行整个数据库备份`$ > mysqldump -u username -p db_name > path/file.sql`
提前致谢:)
接受任何建议:)
您可以使用 mysqldump 的 --where
选项来获取行的子集。例如:
mysqldump --where "updated_at > '2020-06-14 00:00:00'" ...other options...
但是,这会将 WHERE 条件添加到它转储的每个 table 中。所以你必须在每个 table 中有一个 updated_at
列。 MySQL 不需要这样的列存在,因此这取决于您和您的 table 设计约定。
另一种方法是使用二进制日志。您可以将二进制日志的内容转储为一系列 SQL 重现增量更改的语句。
mysqlbinlog --start-datetime "2020-06-14 00:00:00" ...other options...
有关使用此命令的完整文档,请参阅 https://dev.mysql.com/doc/refman/8.0/en/mysqlbinlog.html。