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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
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日志并进行多维度分析。
相关文章
|
4月前
|
存储 关系型数据库 MySQL
【TiDB原理与实战详解】5、BR 物理备份恢复与Binlog 数据同步~学不会? 不存在的!
BR(Backup & Restore)是 TiDB 分布式备份恢复的命令行工具,适用于大数据量场景,支持常规备份恢复及大规模数据迁移。BR 通过向各 TiKV 节点下发命令执行备份或恢复操作,生成 SST 文件存储数据信息与 `backupmeta` 文件存储元信息。推荐部署配置包括在 PD 节点部署 BR 工具,使用万兆网卡等。本文介绍 BR 的工作原理、部署配置、使用限制及多种备份恢复方式,如全量备份、单库/单表备份、过滤备份及增量备份等。
|
存储 SQL 关系型数据库
MySQL中 redo log、undo log、bin log的理解
MySQL中 redo log、undo log、bin log的理解
109 1
|
存储 SQL 机器学习/深度学习
MySQL 日志体系解析:保障数据一致性与恢复的三位英雄:Redo Log、Undo Log、Bin Log
MySQL 日志体系解析:保障数据一致性与恢复的三位英雄:Redo Log、Undo Log、Bin Log
273 0
|
存储 SQL 缓存
详解MySQL非常重要的日志—bin log
详解MySQL非常重要的日志—bin log
511 1
详解MySQL非常重要的日志—bin log
|
SQL 存储 关系型数据库
MySQL通过bin log恢复数据|手撕MySQL|对线面试官
作为《手撕MySQL》系列的第二篇文章,今天介绍一下MySQL的二进制日志(bin log)进行数据恢复的功能,并且配合实例演示,让你更懂MySQL。
256 0
MySQL通过bin log恢复数据|手撕MySQL|对线面试官
《PolarDB-X 2.0 全局 Binlog 与备份恢复能》电子版地址
PolarDB-X 2.0 全局 Binlog 与备份恢复能力解读
276 0
《PolarDB-X 2.0 全局 Binlog 与备份恢复能》电子版地址
|
存储 SQL 关系型数据库
【redo log、bin log、undolog、purge操作、group commit】
【redo log、bin log、undolog、purge操作、group commit】
209 0
|
缓存 监控 安全
谈谈MySQL bin log的写入机制、以及线上的参数是如何配置的
上一篇文章提到了生产环境中你可以使用binlog做数据的恢复、审计、以及搭建主从架构的MySQL集群。那你使用这些特性优势的时候有没有问自己一下,你使用的binlog是安全的吗?会不会少记录了一部分数据呢?因为使用一个有问题的binlog去做数据恢复、审计、搭建主从MySQL集群的结果肯定是错误的! ​ 下面,我们一起来看一下MySQL执行事物的过程中 binlog 的落盘机制。MySQL是如何保证你使用的binlog是安全的!
387 0
|
SQL 存储 消息中间件
PolarDB-X 2.0 全局 Binlog 和备份恢复能力解读
PolarDB-X 2.0 针对数据孤岛问题提供了全局 Binlog 能力,该能力为下游生态提供了与 MySQL Binlog 完全一致的增量日志消费体验。针对数据损坏问题提供了实例级、表级、SQL 级和行级等不同粒度的数据恢复能力,包括一致性备份恢复、表回收站、SQL 闪回、Flashback Query 等。
2405 0