暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

POLARDB · 引擎特性 · PolarDB备份与恢复介绍(二)

ZzzMickey 2024-12-26
224

库表备份与恢复

库表恢复是指仅恢复指定的部分库或部分表到原集群,而不是恢复整个实例。例如游戏业务中有时仅需恢复某个或某些玩家的数据,此时可使用库表恢复方式。PolarDB 5.6、5.8及8.0均支持表粒度的恢复数据。

库表备份

库表的备份和实例级别的备份是一样的,前面已经介绍过,这里不再展开介绍。

库表恢复

库表恢复和实例级别恢复的区别时,再选取数据集时只使用相应库表的数据,恢复redo数据时,只恢复相应库表及一些元信息的redo日志。相对整个实例的恢复,恢复选择更灵活,恢复时间更短。

表回收站

由于DDL语句无法回滚,如果误删除了表(例如DROP TABLE),可能会导致数据丢失。PolarDB提供了表回收站的功能,删除的表会被临时转移到表回收站,因此您可以从表回收站恢复误删的表。

表回收站使用

表回收站不仅保留被删除表的表结构,而且表中的数据也被保留。恢复时不仅可以恢复到原db原table,还可以指定新db和新table来做恢复。 在PolarDB MySQL引擎8.0版本,且内核小版本为8.0.1.1.2及以上时,支持表回收站功能。

参数及操作

参数介绍

recycle_bin : ON为打开回收站,OFF为关闭 recycle_bin_retention : 误删表的时间点在表回收站内数据的最长保留周期,取值1~365243600单位秒,默认一周

打开关闭表回收站

set session recycle_bin=ON; set session recycle_bin=OFF;

查看回收站临时保存表

CALL DBMS_RECYCLE.show_tables() 恢复表(如果后面两个参数省略,则恢复到原db和table) CALL DBMS_RECYCLE.restore_table(‘RECYCLE_TABLE’,’DEST_DB’,’DEST_TABLE’);

举例参考

image.png

可参考PolarDB官方文档https://www.alibabacloud.com/help/zh/polardb-for-mysql/latest/restore-a-table-from-recycle-bin

表回收站原理

表回收站的实现本质上是使用表rename操作,将表移动到__recycle_bin__库下面进行管理(记录、恢复或者删除)。在打开表回收站功能时,创建了库“recycle_bin”,如果有drop table或者drop database的操作就不再是直接删除,将表移动到__recycle_bin__库下面,并为该表命名一个新的名字__innodb_XXX。被删除的表在移动到__recycle_bin__库时,会记录下ORIGIN_SCHEMA(原库名)、ORIGIN_TABLE(原表名)、RECYCLED_TIME (伪删除表时间)、PURGE_TIME(实际删除时间)等信息,用来做表恢复或者表数据的彻底删除。表恢复就是将表再做一次rename操作。

文章转载自ZzzMickey,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论