mysql数据通过binlog恢复

2025-10-21 12:52:10

1、首先要确保数据库启动mysqlbinlog

mysql> show variables like 'log_bin';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| log_bin       | ON    |

+---------------+-------+

1 row in set (0.00 sec)

mysql> 

只有log_bin状态时ON的情况下才是开启状态。

mysql数据通过binlog恢复

2、数据库备份时,需要加上 --flush-logs --hex-blob --master-data=2参数,这样每次备份时都会重新生成新的mysqlbinlog,有利于后续的备份恢复。

[root@localhost mysql-t1]# ll -th mysql-bin.*

-rw-r----- 1 mysql mysql 1.9K 7月  24 21:05 mysql-bin.000001

-rw-r----- 1 mysql mysql   19 7月  24 20:23 mysql-bin.index

[root@localhost mysql-t1]# mysqldump -h192.168.10.235 -uroot -p --all-databases  --skip-lock-tables --single-transaction --flush-logs --hex-blob --master-data=2 >/data/app/bin/b.sql

Enter password: 

[root@localhost mysql-t1]# ll -th mysql-bin.*

-rw-r----- 1 mysql mysql   38 7月  24 21:10 mysql-bin.index

-rw-r----- 1 mysql mysql  154 7月  24 21:10 mysql-bin.000002

-rw-r----- 1 mysql mysql 2.0K 7月  24 21:10 mysql-bin.000001

mysql数据通过binlog恢复

3、在服务器恢复后,先将当天的数据库binlog日志倒入到sql文件。(方法任选一个)

mysqlbinlog  /data/app/mysql-t1/mysql-bin.000002 >/root/a.sql

如果只是需要恢复该文件中的部分数据,那么可以

mysqlbinlog --start-position=292 --stop-position=709 /data/app/mysql-t1/mysql-bin.000002>/root/a.sql

另外建议先将今天的这个binlog备份在别的地方,以防操作失误导致恢复起来费劲。

mysql数据通过binlog恢复

4、数据恢复:

将备份数据导入数据库,然后再将binlog的sql导入数据库即可完成数据库恢复。

mysql备份时的数据

mysql> select * from base_roles;

+---------+-----------+--------------------+

| role_id | role_name | role_desc          |

+---------+-----------+--------------------+

|       1 | Admin     | Administrator      |

|      10 | User      | Authenticated User |

|      50 | ag_editor | Alert Group Editor |

|     111 | 233       | Authenticated User |

|   10000 | Anonymous | Anonymous User     |

+---------+-----------+--------------------+

5 rows in set (0.00 sec)

恢复binlog日志

mysql> source /root/a.sql;

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected, 1 warning (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

mysql> select * from base_roles;

+---------+-----------+--------------------+

| role_id | role_name | role_desc          |

+---------+-----------+--------------------+

|       1 | Admin     | Administrator      |

|      10 | User      | Authenticated User |

|      50 | ag_editor | Alert Group Editor |

|     111 | 233       | Authenticated User |

|     121 | 222       | Authenticated User |

|   10000 | Anonymous | Anonymous User     |

+---------+-----------+--------------------+

6 rows in set (0.00 sec)

完成数据恢复

mysql数据通过binlog恢复

mysql数据通过binlog恢复

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢