首页 > 其他分享 >使用binlog恢复数据

使用binlog恢复数据

时间:2023-10-08 16:02:17浏览次数:37  
标签:binlog hht -- 恢复 mysql Query prod 数据 id

目录

数据模拟

[root@db01 ~]# cat 6.sh 
#!/bin/bash


mysql -uroot -p123 -e "drop database if exists prod;"
mysql -uroot -p123 -e "create database if not exists prod;"
mysql -uroot -p123 -e "create table if not exists prod.t1(id int);"

num=1
while true;do
  mysql -uroot -p123 -e "insert into prod.t1 values($num);commit;"
  ((num++))
  sleep 1
done
mysql> create database hht;
Query OK, 1 row affected (0.00 sec)

mysql> create table hht.hht(id int);
Query OK, 0 rows affected (0.00 sec)

mysql> insert into hht.hht values(1);
Query OK, 1 row affected (0.01 sec)

mysql> insert into hht.hht values(2);
Query OK, 1 row affected (0.00 sec)

mysql> insert into hht.hht values(3);
Query OK, 1 row affected (0.00 sec)

mysql> update hht.hht set id=10 where id=1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from hht.hht;
+------+
| id   |
+------+
|   10 |
|    2 |
|    3 |
+------+
3 rows in set (0.00 sec)

mysql> delete from hht.hht where id=3;
Query OK, 1 row affected (0.00 sec)

mysql> select * from hht.hht;
+------+
| id   |
+------+
|   10 |
|    2 |
+------+
2 rows in set (0.00 sec)

mysql> drop table hht.hht;
Query OK, 0 rows affected (0.01 sec)

mysql> drop database hht;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from prod.t1;

mysql> drop database prod;
Query OK, 1 row affected (0.01 sec)

mysql> select * from prod.t1;
ERROR 1146 (42S02): Table 'prod.t1' doesn't exist

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000018 |    62052 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+

恢复到

# 数据恢复到这里
mysql> select * from hht.hht;
+------+
| id   |
+------+
|   10 |
|    2 |
|    3 |
+------+

# 生产数据恢复
1.1546--33715
mysqlbinlog --start-position=1546 --stop-position=33715 mysql-bin.000018 > /tmp/1.sql
2.33761--39609
mysqlbinlog --start-position=33761 --stop-position=39609 mysql-bin.000018 > /tmp/2.sql
3.39649--41888
mysqlbinlog --start-position=39649 --stop-position=41888 mysql-bin.000018 > /tmp/3.sql
4.42005--47525
mysqlbinlog --start-position=42005 --stop-position=47525 mysql-bin.000018 > /tmp/4.sql
5.47608--61960
mysqlbinlog --start-position=47608 --stop-position=61960 mysql-bin.000018 > /tmp/5.sql

# 查看/tmp目录
[root@db01 data]# ll /tmp/
-rw-r--r-- 1 root root 112073 Aug  1 19:51 1.sql
-rw-r--r-- 1 root root  21487 Aug  1 19:51 2.sql
-rw-r--r-- 1 root root   9032 Aug  1 19:51 3.sql
-rw-r--r-- 1 root root  20491 Aug  1 19:52 4.sql
-rw-r--r-- 1 root root  51307 Aug  1 19:52 5.sql

## 导入数据
mysql> source /tmp/1.sql
mysql> source /tmp/2.sql
mysql> source /tmp/3.sql
mysql> source /tmp/4.sql
mysql> source /tmp/5.sql

# 数据导入成功
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| hht                |
| prod               |
+--------------------+
mysql> select * from hht.hht;
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
+------+
mysql> select * from prod.t1;
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
|。。等 |
+------+

查找最初始的建prod表

mysqlbinlog --base64-output=decode-rows -vvv /app/mysql/data/mysql-bin.000018| grep 'create database if not exists prod' -B 5

drop database if exists prod
/*!*/;
# at 1546
#230801 17:59:42 server id 1  end_log_pos 1654 CRC32 0x0d4aa900 	Query	thread_id=7	exec_time=0	error_code=0
SET TIMESTAMP=1690883982/*!*/;
create database if not exists prod

查找updata语句

mysqlbinlog --base64-output=decode-rows -vvv /app/mysql/data/mysql-bin.000018| grep -i 'update' -C 10


# at 33715
#230801 18:02:32 server id 1  end_log_pos 33761 CRC32 0x2956997f 	Update_rows: table id 77 flags: STMT_END_F
### UPDATE `hht`.`hht`
### WHERE
###   @1=1 /* INT meta=0 nullable=1 is_null=0 */
### SET
###   @1=10 /* INT meta=0 nullable=1 is_null=0 */
# at 33761
#230801 18:02:32 server id 1  end_log_pos 33792 CRC32 0x4ff0a33b 	Xid = 859
COMMIT/*!*/;
# at 33792

查找delete语句

mysqlbinlog --base64-output=decode-rows -vvv /app/mysql/data/mysql-bin.000018| grep -i 'delete' -C 10

# at 39609
#230801 18:03:04 server id 1  end_log_pos 39649 CRC32 0xed321051 	Delete_rows: table id 77 flags: STMT_END_F
### DELETE FROM `hht`.`hht`
### WHERE
###   @1=3 /* INT meta=0 nullable=1 is_null=0 */
# at 39649
#230801 18:03:04 server id 1  end_log_pos 39680 CRC32 0xd3d3afcc 	Xid = 985
COMMIT/*!*/;
# at 39680

查找删除语句

mysqlbinlog --base64-output=decode-rows -vvv /app/mysql/data/mysql-bin.000018| grep -i 'drop' -C 10
# at 41888
#230801 18:03:16 server id 1  end_log_pos 42005 CRC32 0x3d773fc1 	Query	thread_id=20	exec_time=0	error_code=0
SET TIMESTAMP=1690884196/*!*/;
SET @@session.pseudo_thread_id=20/*!*/;
DROP TABLE `hht`.`hht` /* generated by server */
/*!*/;
# at 42005
#230801 18:03:16 server id 1  end_log_pos 42073 CRC32 0x1e9d2a68 	Query	thread_id=223	exec_time=0	error_code=0
SET TIMESTAMP=1690884196/*!*/;
BEGIN
/*!*/;
# at 42073
# at 47525
#230801 18:03:45 server id 1  end_log_pos 47608 CRC32 0xc29b7ccb 	Query	thread_id=20	exec_time=0	error_code=0
SET TIMESTAMP=1690884225/*!*/;
drop database hht
/*!*/;
# at 47608
#230801 18:03:46 server id 1  end_log_pos 47676 CRC32 0xec075fc3 	Query	thread_id=253	exec_time=0	error_code=0
SET TIMESTAMP=1690884226/*!*/;
BEGIN
/*!*/;
# at 47676
# at 61960
#230801 18:05:05 server id 1  end_log_pos 62052 CRC32 0x94bcde20 	Query	thread_id=291	exec_time=0	error_code=0
SET TIMESTAMP=1690884305/*!*/;
SET @@session.pseudo_thread_id=291/*!*/;
drop database prod
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

标签:binlog,hht,--,恢复,mysql,Query,prod,数据,id
From: https://www.cnblogs.com/xiutai/p/17749312.html

相关文章

  • MySQL数据备份
    目录MySQL数据备份binlog存在问题binlog作用为什么要备份备份类型备份方式备份策略(每天一次全备,每小时一次增备)MySQL逻辑备份工具mysqldump所有库备份备份单个库备份时刷新binlog打点备份参数快照备份实用扩展选项额外扩展选项(很好用的)完整备份语句mysqldump的恢复(binlog日志临时......
  • 创建数据库全量备份脚本
    创建用户账号和密码配置文件#创建一个backup的登录路径mysql_config_editorset--login-path=backup--host=localhost--user=username--password在上述命令中,将backup替换为适合您的环境和需求的登录路径名称,localhost、username和--password替换为实际的数据库主机......
  • 完整创建数据库,shell脚本
    #1.安装依赖[root@db03~]#yuminstall-yautoconflibaio-devel#1.解压[root@db02~]#tarxfmysql-5.6.50-linux-glibc2.12-x86_64.tar.gz#2.创建app目录[root@db02~]#mkdir/app#3.移动目录[root@db02~]#mv/root/mysql-5.6.50-linux-glibc2.12-x86_64/a......
  • 图形化登录,数据库设置
    #创建库root@localhost[tu]>createdatabasetu;##进入库usetu;#创建表结构CREATETABLE`tiao`(`ip`int(10)unsignedzerofillNOTNULLAUTO_INCREMENTCOMMENT'ip区分',`name`varbinary(5)NOTNULLCOMMENT'用户昵称',`password`varbina......
  • 数据结构的关键码序列的理解概述
    1、关键码序列的理解所谓关键码序列,就是出现在二叉排序树中的,对二叉排序树的各个结点进行排序的一个结点序列。依据左子树的各个结点的值都小于父结点的值,右子树的各个结点的值都大于父结点的值的条件进行排序。2、习题解决一般都是给我们一个二叉排序树的图,让我们去判断选......
  • 学生管理系统使用集合保存,不是用数据库的(仅供参考,网上找的,记录用)
    packagecom.ima;importcom.itheima.Student;importjava.util.ArrayList;importjava.util.Scanner;/*学生管理系统*/publicclassStudentManager{publicstaticvoidmain(String[]args){//创建集合对象,用于存储学生数据ArrayList<Student>a......
  • 关于数据库的复习
    数据库分位关系数据库和非关系数据库关系数据库中有Oracle、DB2、SQLServer、MySQL等。非关系数据库就是NOSQL。这老师MySQL的官网下载地址https://dev.mysql.com/downloads/windows/installer/8.0.html接下来就是使用图形客户端navicat来操作数据库了。再就是SQL语句:数据查......
  • jmeter 两个"csv数据文件设置"遍历数据,实现多用户购买多个商品
    目标使用jmeter构造基础数据,需要实现多个用户购买多个商品的场景。 数据准备1号数据txt文件,包含token和userId,用于用户登录(有10个用户的登录信息);2号数据txt文件,包含goodsId,用户购买商品(有6个商品的Id); jmeter设置1.添加--配置元件--“CSV数据文件设置“用于读取token和u......
  • es针对nested类型数据无法进行过滤查询的问题记录
    问题描述es中存在有一个名为task_data_1的索引,其字段映射关系如下所示:{"task_data_1":{"mappings":{"dynamic_templates":[{"dates":{"match_mapping_type":......
  • 295. 数据流的中位数
    中位数是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。例如arr=[2,3,4]的中位数是3。例如arr=[2,3]的中位数是(2+3)/2=2.5。实现MedianFinder类:MedianFinder()初始化MedianFinder对象。voidaddNum(intnu......