使用bin log进行备份恢复一例

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 创建数据use scott;CREATE TABLE `person` (

创建数据:

use scott;
CREATE TABLE `person` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(8) DEFAULT NULL,
  `birthday` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
)  ;


插入一条记录

insert into person(name) values (‘li’);


备份数据库scott

# mysqldump -uroot -pdingjia -lF --log-error=./mydump.err -B scott > dbscott.sql


由于使用了-F选项,当备份工作刚开始时系统会刷新log日志,产生新的binlog日志来记录备份之后的数据库“增删改”操作,查看一下:


mysql> show master status
    -> ;
+----------------------+----------+--------------+------------------+-------------------+
| File                 | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------------+----------+--------------+------------------+-------------------+
| localhost-bin.000018 |      154 |              |                  |                   |
+----------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
mysql> use scott;
Database changed
mysql>  insert into person(name) values ('zhang');
Query OK, 1 row affected (0.01 sec)
mysql> flush logs;
Query OK, 0 rows affected (0.07 sec)

从前面的操作中可以看出在二进制日志( localhost-bin.000018)中,只有插入“zhang”的这条记录。


灾难发生

# rm /var/lib/mysql/scott/person.*


再查看表,发现已经没有了。


mysql> use scott;
Database changed
mysql> show tables;
Empty set (0.00 sec)


恢复数据库

# mysql -uroot -pdingjia -v < dbscott.sql;

查看,已经恢复了一条记录


mysql> select * from scott.person;
+----+------+----------+
| id | name | birthday |
+----+------+----------+
|  1 | li   | NULL     |
+----+------+----------+
1 row in set (0.01 sec)


恢复二进制日志

# mysqlbinlog /var/lib/mysql/localhost-bin.000018 | mysql -uroot -pdingjia scott -v


再查看,两条记录都恢复了。

mysql>  select * from scott.person;
+----+-------+----------+
| id | name  | birthday |
+----+-------+----------+
|  1 | li    | NULL     |
|  2 | zhang | NULL     |
+----+-------+----------+
2 rows in set (0.00 sec)


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
10月前
|
存储 SQL 关系型数据库
MySQL中 redo log、undo log、bin log的理解
MySQL中 redo log、undo log、bin log的理解
|
存储 SQL 机器学习/深度学习
MySQL 日志体系解析:保障数据一致性与恢复的三位英雄:Redo Log、Undo Log、Bin Log
MySQL 日志体系解析:保障数据一致性与恢复的三位英雄:Redo Log、Undo Log、Bin Log
237 0
|
存储 SQL 缓存
详解MySQL非常重要的日志—bin log
详解MySQL非常重要的日志—bin log
307 1
详解MySQL非常重要的日志—bin log
|
SQL 存储 关系型数据库
MySQL通过bin log恢复数据|手撕MySQL|对线面试官
作为《手撕MySQL》系列的第二篇文章,今天介绍一下MySQL的二进制日志(bin log)进行数据恢复的功能,并且配合实例演示,让你更懂MySQL。
218 0
MySQL通过bin log恢复数据|手撕MySQL|对线面试官
|
存储 SQL 关系型数据库
【redo log、bin log、undolog、purge操作、group commit】
【redo log、bin log、undolog、purge操作、group commit】
180 0
《PolarDB-X 2.0 全局 Binlog 与备份恢复能》电子版地址
PolarDB-X 2.0 全局 Binlog 与备份恢复能力解读
263 0
《PolarDB-X 2.0 全局 Binlog 与备份恢复能》电子版地址
|
缓存 监控 安全
谈谈MySQL bin log的写入机制、以及线上的参数是如何配置的
上一篇文章提到了生产环境中你可以使用binlog做数据的恢复、审计、以及搭建主从架构的MySQL集群。那你使用这些特性优势的时候有没有问自己一下,你使用的binlog是安全的吗?会不会少记录了一部分数据呢?因为使用一个有问题的binlog去做数据恢复、审计、搭建主从MySQL集群的结果肯定是错误的! ​ 下面,我们一起来看一下MySQL执行事物的过程中 binlog 的落盘机制。MySQL是如何保证你使用的binlog是安全的!
332 0
|
SQL 存储 消息中间件
PolarDB-X 2.0 全局 Binlog 和备份恢复能力解读
PolarDB-X 2.0 针对数据孤岛问题提供了全局 Binlog 能力,该能力为下游生态提供了与 MySQL Binlog 完全一致的增量日志消费体验。针对数据损坏问题提供了实例级、表级、SQL 级和行级等不同粒度的数据恢复能力,包括一致性备份恢复、表回收站、SQL 闪回、Flashback Query 等。
2342 0
|
存储 SQL 架构师
你还精通MySQL,竟然连bin log、redo log都不知道!
mysql不是每次数据更改都立刻写到磁盘,而是会先将修改后的结果暂存在内存中,当一段时间后,再一次性将多个修改写到磁盘上,减少磁盘io成本,同时提高操作速度。