首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从二进制日志恢复数据

如何从二进制日志恢复数据
EN

Database Administration用户
提问于 2012-11-28 06:44:18
回答 4查看 75.8K关注 0票数 16

如何从二进制文件恢复我的文件和照片?

EN

回答 4

Database Administration用户

发布于 2012-11-28 09:31:48

您是否知道需要从哪个binlog文件中还原以及有多少binlog文件?

使用mysqlbinlog实用程序,我们可以查看binlog文件内容。

如果是单个文件,则可以使用以下方法进行恢复:

代码语言:javascript
复制
mysqlbinlog /var/lib/mysql-bin.000016 | mysql –uroot –pReset123

如果是多个文件,那么只需将所有内容提取到一个.sql文件中,并直接还原它:

代码语言:javascript
复制
mysqlbinlog /var/lib/mysql-bin.000016 > /logs/allbinlog.sql

要将第二个binlog内容附加到allbinlof.sql文件中,请使用以下命令:

代码语言:javascript
复制
mysqlbinlog /var/lib/mysql-bin.000016 >> /logs/allbinlog.sql

还可以使用mysqlbinlog选项排除某些语句。尝试下面的选项:

代码语言:javascript
复制
mysqlbinlog --help
票数 10
EN

Database Administration用户

发布于 2012-11-28 09:29:09

使用以下步骤从二进制日志恢复数据,或使用此链接了解恢复过程:MySQL二进制日志恢复

首先,从最新的备份还原数据库。

代码语言:javascript
复制
mysql -u username -ppassword database_name < dump.sql

然后做以下任何一项:

  • 从二进制日志恢复其余的数据。如果要在MySQL服务器上执行多个二进制日志,则安全的方法是使用到服务器的单个连接来处理它们。mysqlbinlog mysql_bin.000001 \ mysqlbinlog -u root -ppassword database_name mysqlbinlog mysql_bin.000002 mysql -u root -ppassword database_name或:mysqlbinlog mysql_bin.000001 mysql_bin.000002 database_name mysql -u root -ppassword database_name
  • 根据时间mysqlbinlog -start-datetime=“2005-04-20 10:01:00”\
  • 根据mysqlbinlog -起始位置=368315-停止-位置=368312 mysql_bin.000001 \ -u mysql根-ppassword database_name恢复数据
票数 8
EN

Database Administration用户

发布于 2020-11-02 13:15:38

首先,应该注意的是,binlog文件包含一个时间间隔的数据库更改,但它们不包含所有数据,只还原binlog文件是没有意义的。通常,要还原数据库,您需要完全备份,以及在完全备份之后创建的所有binlog文件。若要从binlog文件还原数据,需要正确执行完整备份。

代码语言:javascript
复制
mysqldump -u root -ppassword --flush-logs --delete-master-logs  --all-databases > full-backup.sql

命令中有两个重要参数:

--flush-logs -这个参数开始写入一个新的binlog文件。

--delete-master-logs -删除旧的binlog文件

因此,在具有二进制日志的文件夹中,只有在完全备份后创建的binlog文件。

要恢复数据,首先必须恢复完全备份。

代码语言:javascript
复制
mysql -u root -ppassword  < full-backup.sql

然后通过mysqlbinlog实用程序恢复所有binlog文件,指定指向binlog文件的路径(顺序很重要)。

代码语言:javascript
复制
mysqlbinlog  mysql_bin.000023 mysql_bin.000024 mysql_bin.000025 | mysql -u root -ppassword

--

注意,如果您使用主\从复制,那么在主服务器上执行完全备份时不应该使用--delete-master-logs,因为这可以中断复制

但是在这种情况下,您必须记住创建了哪个特定的binlog文件-- --flush-log参数,对于恢复过程,要使用它和后来创建的所有binlog文件。

有关如何备份和还原增量备份的详细信息,请参阅这篇文章

票数 7
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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