aws-rds for mysql 5.7.34时间点恢复数据

AWS RDS自己带了一个基于时间点恢复数据到新实例的功能,

https://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/USER_PIT.html

测试使用后发现,它会和实际恢复时间差一点,

比如选择恢复时间点是15:00:00,它会恢复到14:59:59这个时间点,会往前推一秒,并不是你选择的时间点。

其实自己用备份恢复出来的实例也可以做时间点恢复

1、确定删除的位点或GTID

root@ip-172-31-30-45:~# mysqlbinlog -vv --base64-output=decode-rows -hczg.ckmuhrbhkmox.ap-east-1.rds.amazonaws.com -uroot -pchai123456 -P3306 -R  mysql-bin-changelog.000008 |grep -C 10 -E 'drop|DROP'

# at 4700
#210918  6:22:15 server id 2081322070  end_log_pos 4731 CRC32 0x521188a0        Xid = 1344
COMMIT/*!*/;
# at 4731
#210918  6:22:23 server id 2081322070  end_log_pos 4796 CRC32 0xaf9d03a7        GTID    last_committed=13       sequence_number=14      rbr_only=no
SET @@SESSION.GTID_NEXT= '6ba74488-1843-11ec-84ea-068e077e2970:42'/*!*/;
# at 4796
#210918  6:22:23 server id 2081322070  end_log_pos 4891 CRC32 0x663a9ac4        Query   thread_id=2     exec_time=0     error_code=0
SET TIMESTAMP=1631946143/*!*/;
SET @@session.pseudo_thread_id=2/*!*/;
drop database ceshi
/*!*/;
# at 4891
#210918  6:25:00 server id 2081322070  end_log_pos 4948 CRC32 0x6391db15        Rotate to mysql-bin-changelog.000009  pos: 4
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

看到drop database ceshi命令是在GTID位点【'6ba74488-1843-11ec-84ea-068e077e2970:42'】位点删除的,

对应是在 【4796】 这个pos位点删除的。

在接位点的时候不能接到这两个位点上,因为这两个位点上已经执行了DROP操作,必须要接到之前的位点上。
接GTID可以接到 【'6ba74488-1843-11ec-84ea-068e077e2970:41'】
接POS位点可以接到 【4700】

2、利用快照还原数据库(控制台操作)

RDS控制台----快照---选择快照---操作---还原快照 

3、连接新数据库接主从,同步到指定位点

CALL mysql.rds_set_external_master_with_auto_position('172.31.30.122',3306,'root','chai123456',0,0);
CALL mysql.rds_start_replication_until_gtid('6ba74488-1843-11ec-84ea-068e077e2970:41'); --这一步会自动启动同步
原文地址:https://www.cnblogs.com/nanxiang/p/15308999.html