切换产品类型
您可以点击下拉框切换本产品的不同产品类型,帮助您更高效地阅读文档。
- 最新动态
- 功能总览
- 服务公告
- 产品介绍
- 快速入门
- 内核介绍
- 用户指南
- 最佳实践
- 性能白皮书
-
API参考
- 使用前必读
- API概览
- 如何调用API
-
API(推荐)
- 查询数据库引擎的版本
- 查询数据库规格
-
实例管理
- 创建数据库实例
- 重启数据库实例
- 删除/退订数据库实例
- 创建只读节点
- 删除/退订只读节点
- 包年/包月实例存储扩容
- 修改实例名称
- 重置数据库密码
- 变更实例规格
- 查询专属资源池列表
- 查询专属资源信息详情
- 设置实例秒级监控
- 查询实例秒级监控
- 节点重启
- 内核版本升级
- 开关SSL
- 绑定弹性公网IP地址
- 解绑弹性公网IP地址
- 手动主备倒换
- 设置可维护时间段
- 修改安全组
- 修改内网地址
- 修改实例端口
- 修改实例备注
- 申请内网域名
- 修改内网域名
- 查询内核版本信息
- 设置自动变配
- 查询自动变配
- 资源预校验
- 查询实例列表
- 查询实例详情信息
- 批量查询实例详情
- 设置回收站策略
- 查询回收站策略
- 查询回收站实例信息
- 批量修改节点名称
- 查询自动变配历史记录
- 设置Serverless配置策略
- 修改节点故障倒换优先级
- 查询弹性公网IP
- 备份管理
- 参数模板管理
- 配额管理
- 数据库代理
- 日志管理
- 标签管理
- 数据库用户管理
- 数据库管理
- SQL限流
- 任务中心
- 智能诊断
-
HTAP-标准版
- 恢复StarRocks数据同步
- 暂停StarRocks数据同步
- HTAP数据同步表配置校验
- 创建StarRocks实例
- 查询StarRocks实例
- 删除StarRocks实例
- 重启StarRocks实例
- 重启StarRocks节点
- StarRocks资源检查
- HTAP引擎资源查询
- 获取HTAP实例存储类型
- HTAP查询规格信息
- 查询HTAP实例列表
- 创建StarRocks数据同步
- 删除StarRocks数据同步
- 查询StarRocks数据同步状态信息
- HTAP数据同步库配置校验
- 查询StarRocks数据同步配置信息
- 查询StarRocks数据同步的库参数配置
- 查询StarRocks数据库
- 查询数据库账户
- 创建数据库账号
- 删除数据库账户
- 修改数据库账号密码
- 修改数据库账号权限
- StarRocks实例规格变更
- 查询参数
- 修改参数
- StarRocks实例开启行列分流
- 参数对比
- HTAP-轻量版
- 多租特性
- API(即将下线)
- 权限策略和授权项
- 附录
- SDK参考
- 场景代码示例
-
故障排除
- 备份恢复
- 连接类
-
SQL类
- 建表时timestamp字段默认值无效
- 索引长度限制导致修改varchar长度失败
- delete大表数据后,再查询同一张表时出现慢SQL
- 更新emoji表情数据报错Error 1366
- 存储过程和相关表字符集不一致导致执行缓慢
- 报错ERROR [1412]的解决方法
- 存在外键的表无法删除
- GROUP_CONCAT结果不符合预期
- 创建二级索引报错Too many keys specified
- distinct与group by优化
- 为什么有时候用浮点数做等值比较查不到数据
- 开通数据库代理后,还是有大量select请求分发到主节点
- 表空间膨胀问题
- MySQL创建用户提示服务器错误(ERROR 1396)
- 执行alter table xxx discard/import tablespace报错
- 数据库报错Native error 1461的解决方案
- 创建表失败报错Row size too large的解决方案
- Order by limit分页出现数据重复问题
- 执行select * from sys.innodb_lock_waits报错
- 参数类
- 性能资源类
-
基本使用类
- 查看TaurusDB的存储容量
- 修改库名和修改表名
- 字符集和字符序的默认选择方式
- 自增字段值跳变的原因
- 表的自增AUTO_INCREMENT初值与步长
- 修改表的自增AUTO_INCREMENT值
- 自增主键达到上限,无法插入数据
- 自增字段取值
- 自增属性AUTO_INCREMENT为何未在表结构中显示
- 空用户的危害
- 慢日志显示SQL语句扫描行数为0
- 错误日志页面显示handle_sync_msg_from_slave my_net_read error:-1
- 执行SQL语句报错:ERROR 1290 (HY000): The MySQL server is running with the --sql-replica-on option so it cannot execute this statement的原因及解决方案
- 常见问题
- 视频帮助
- 文档下载
- 通用参考
链接复制成功!
TaurusDB表回收站
TaurusDB支持表回收站功能,启用此功能开关后,符合条件的DROP TABLE命令不会直接删除指定表,而是将表暂时存放到回收站中,达到最大保存时间后,后台会自动删除。
回收站功能支持修改被删除表在回收站中的保留时间,您也可以随时将表从回收站中恢复或彻底删除。
约束与限制
- TaurusDB实例的内核版本为2.0.57.240900及以上时支持使用表回收站功能。
- 如果TaurusDB实例内核版本低于2.0.57.240900,且用户手动创建了名为“__recyclebin__”的数据库,则实例升级到2.0.57.240900及以上版本时,可能出现升级预检查失败。请手动删除“__recyclebin__”数据库后重新升级。如需继续保留用户创建的“__recyclebin__”数据库作为普通数据库进行使用,请在管理控制台右上角,选择“工单 > 新建工单”,联系技术支持处理。
- 表回收站功能仅支持普通innodb表,不支持共享表空间、全文索引、临时表、非innodb表、存在Secondary Engine的表、系统表、隐藏表。
- 当前版本表回收站仅支持单条DROP TABLE语句中,全部表都支持表回收站功能的情况。如多表删除语句中部分表支持表回收站,部分表不支持表回收站,则根据实例参数“rds_recycle_bin_mode”判断语句执行失败报错,或彻底删除全部指定表。
- 当前版本表回收站仅支持通过DROP TABLE命令删除表,其他删除命令会将表直接删除,无法恢复。
- 如实例存在基于Binlog的复制链路(如DRS数据复制服务、灾备实例),且回收站Binlog记录模式为ORIGIN时,在源端清理或恢复回收站中的表,可能会导致复制异常或数据不一致。建议用户设置回收站Binlog记录模式为TRANSLATE。
- 当前版本DRS数据复制服务暂未完整支持回收站功能,如因开启回收站相关功能导致复制中断,请尝试重置链路,或在管理控制台右上角,选择“工单 > 新建工单”,联系技术支持处理。
- TaurusDB实例表回收站功能在2.0.57.240900版本仅支持表名由ASCII字符(如英文字母、数字、常见标点符号等)组成的表,其他表名字符类型(如拉丁字母、希腊字母、中文等)将在2.0.60.241200版本开放支持。
说明:
若在2.0.57.240900版本对其他暂不支持字符类型表名的表进行回收和恢复,可能出现连接卡住的情况,此时请重启数据库或执行主备倒换,实例恢复后关闭回收站,对相关表进行删除。
功能介绍
创建或者升级到大于等于2.0.57.240900的实例时,TaurusDB会初始化名为“__recyclebin__”的数据库。开启表回收站功能后,执行DROP TABLE语句不会直接删除表,而是暂时将指定表移入“__recyclebin__”库中,并将表重命名。
- 如果被删除的表为回收站不支持的类型,则DROP TABLE语句将直接删除指定表,而不会将表移入回收站。
- 如果实例打开回收站功能,短时间内删除有同名约束的表,可能会因为“__recyclebin__”数据库下存在同名约束导致移入回收站失败。如果移入回收站失败,请检查被删除的表是否存在约束,删除约束后重新执行DROP TABLE语句进行删除。
回收站中表名规则如下:
__<storage engine name>_<schema name>_<table name>_<id>
回收站中表的<id>保证唯一,相同表名的表被移入回收站后表名不会出现重复。如<schema name>或<table name>长度超过10个字符,将截取前10个字符拼接到回收站表的表名中,并在<id>后增加“_”字符表示原库名或原表名被截断。
- 开启表回收站
开启表回收站有如下两种方法:
- 您可以单击TaurusDB实例名称,进入实例概览页面。在左侧导航栏中选择“参数修改”,通过修改“rds_recycle_bin_mode”参数来开启表回收站功能。
- 通过命令在会话中设置表回收站功能。
set rds_recycle_bin_mode=PRIORITY_RECYCLE_BIN;
表1中提供了表回收站相关的一些功能参数,您可以根据需要进行设置。表1 表回收站参数说明 参数名称
级别
说明
rds_recycle_bin_mode
Global、Session
回收站功能开关。
取值范围如下:
- OFF(默认值):关闭回收站功能。
- PRIORITY_RECYCLE_BIN:当同一个DROP语句中既包含支持回收站功能的表,又包含不支持回收站的表,则删除失败报错。
- PRIORITY_DROP_TABLE:当同一个DROP语句中既包含支持回收站的表,又包含不支持回收站的表,则对全部相关表执行彻底删除,无法恢复。
rds_recycle_scheduler
Global
后台自动清理过期表的功能开关。
取值范围如下:
- OFF(默认值):表示关闭后台自动清理过期数据功能。后台自动清理过期数据的功能关闭后,回收站中的表将被长期保存。
- ON:表示打开后台自动清理过期数据功能。后台自动清理过期数据的功能开启后,TaurusDB后台会自动删除回收站中达到最大保存时间的表。
rds_recycle_bin_retention
Global
回收站中表的最长保存时间(单位为秒)。
默认最长保存时间为259200秒(3天),支持的修改范围为0~2592000秒。
如果将参数“rds_recycle_scheduler”设置为“ON”,表在回收站中保存的时间超过设置的最长保存时间后将被自动删除,无法恢复。
rds_recycle_bin_binlog_mode
Global、Session
回收站相关DDL语句在Binlog中的记录模式。
取值范围如下:
- ORIGIN(默认值):回收站相关语句会被直接记录到Binlog中。
- TRANSLATE:兼容社区语法,回收站相关语句会被转换为社区版MySQL支持的语句,并记录到Binlog中。
说明:
- 修改“rds_recycle_bin_retention”参数后,回收站将以表进入回收站的时间为起始时间,重新计算回收站中全部表的预计自动清理时间。
- 修改“rds_recycle_bin_binlog_mode”为“TRANSLATE”模式时,在Binlog中会将回收站操作的DROP TABLE及restore_table转换记录为RENAME TABLE。即使目标端为TaurusDB实例,对于通过Binlog复制到目标端数据库__recyclebin__中的表,也无法使用show_tables、restore_table、purge_table命令对其操作,目标端实例回收站后台自动清理功能也不会对其进行清理。目标端实例回收站中的表仅支持通过回放源端的restore_table、purge_table及后台自动清理进行恢复和清理。
- 查看回收站中的表
使用回收站提供的show命令,可以查看回收站中表的当前库名、当前表名、原库名、原表名、移入回收站时间、自动清理时间。
具体操作请参见使用示例。
- 恢复回收站中的表
使用回收站提供的restore命令,指定通过查询命令返回的表名,恢复回收站中的表到原库原表,或指定库的指定表。恢复成功后,回收站中的对应表将被删除,无法再次恢复。
具体操作请参见使用示例。
- 后台自动清理
开启后台自动清理功能后,在实例主机将创建后台清理线程,自动清理达到最大保存时间(默认保存3天)的表。后台清理的表将被彻底删除,无法恢复。
您可以通过如下方法开启后台自动清理功能:
单击TaurusDB实例,进入实例概览页面。在左侧导航栏中选择“参数修改”,将参数“rds_recycle_scheduler”的值修改为“ON”。
表2 参数说明 参数名称
级别
说明
rds_recycle_scheduler
Global
后台自动清理过期表的功能开关。
取值范围如下:
- OFF(默认值):关闭后台自动清理过期数据。
- ON:打开后台自动清理过期数据。
说明:
后台自动清理任务在RegionLessDB集群的从实例中不会执行自动清理。
- 手动清理指定表
使用回收站提供的purge命令,指定通过查询命令返回的表名,可手动清理回收站中的表。执行清理命令后,表将被彻底删除,无法恢复。
具体操作请参见使用示例。
- 回收站权限控制
“__recyclebin__”作为回收站临时存放被删除表的数据库,不允许对回收站中的表进行修改或删除。如需查看、恢复或者清理回收站中的表,可以通过回收站功能提供的命令对“__recyclebin__”下的表进行操作,并且操作账号需要同时对回收站中的表或恢复的目标表具有相应的操作权限,才可以进行操作,具体权限要求如下:
- 查看回收站中表的信息:对“__recyclebin__”中表的SELECT权限。
- 清理回收站中指定表:对“__recyclebin__”中表的DROP权限。
- 恢复回收站中指定表:对“__recyclebin__”中表的ALTER、DROP权限,以及对恢复的目标表的CREATE、INSERT权限。
说明:
- 回收站中的表将占用实例的存储空间,直到被清理。如需提前释放,请手动清理回收站中的表。
- 表被移入回收站后,表的触发器和外键将被彻底删除,无法恢复。
使用示例
表回收站功能提供以下命令用于操作回收站中暂存的表。
- 查看回收站中暂存的表
call dbms_recyclebin.show_tables();
返回结果格式如下:
+----------------+--------------------------+---------------+--------------+---------------------+---------------------+ | SCHEMA | TABLE | ORIGIN_SCHEMA | ORIGIN_TABLE | RECYCLED_TIME | PURGE_TIME | +----------------+--------------------------+---------------+--------------+---------------------+---------------------+ | __recyclebin__ | __innodb_test_db_t1_1069 | test_db | t1 | 2024-09-29 08:48:27 | 2024-10-02 08:48:27 | | __recyclebin__ | __innodb_test_db_t2_1070 | test_db | t2 | 2024-09-29 08:48:44 | 2024-10-02 08:48:44 | +----------------+--------------------------+---------------+--------------+---------------------+---------------------+
表3 字段说明 字段
说明
SCHEMA
回收站中表的当前库名。
TABLE
回收站中表的当前表名。
ORIGIN_SCHEMA
移入回收站前的原库名。
ORIGIN_TABLE
移入回收站前的原表名。
RECYCLED_TIME
表被移入回收站的时间。
PURGE_TIME
预计表被自动清理的时间。
- 恢复回收站中的表
- 手动创建与原表表结构相同的新表后,通过INSERT INTO ... SELECT ...语句将表中数据恢复到新表
查询回收站中原库名为db,原表名为t1的表:
call dbms_recyclebin.show_tables();
返回结果格式如下:
+----------------+--------------------------+---------------+--------------+---------------------+---------------------+ | SCHEMA | TABLE | ORIGIN_SCHEMA | ORIGIN_TABLE | RECYCLED_TIME | PURGE_TIME | +----------------+--------------------------+---------------+--------------+---------------------+---------------------+ | __recyclebin__ | __innodb_test_db_t1_1069 | db | t1 | 2024-09-29 08:48:27 | 2024-10-02 08:48:27 | | __recyclebin__ | __innodb_test_db_t2_1070 | db | t2 | 2024-09-29 08:48:44 | 2024-10-02 08:48:44 | +----------------+--------------------------+---------------+--------------+---------------------+---------------------+
通过以上查询结果,确定需要恢复的表在回收站中的当前表名为__innodb_test_db_t1_1069,执行INSERT INTO ... SELECT ...命令,将回收站中表__innodb_test_db_t1_1069的数据恢复到新创建的表t1中:
INSERT INTO `db`.`t1` SELECT * FROM `__recyclebin__`.`__innodb_test_db_t1_1069`;
说明:
通过INSERT INTO ... SELECT ...语句进行恢复不会移除回收站中暂存的数据,支持多次恢复,且生成的Binlog兼容性最佳。如实例存在基于Binlog的复制链路(如DRS数据复制服务、灾备实例),建议使用该方式对数据进行恢复,降低由于目标端不支持表回收站功能、用户权限不足等原因导致复制中断的风险。
- 恢复回收站中的表到原库原表
call dbms_recyclebin.restore_table('TABLE_NAME');
表4 参数说明 参数名称
说明
TABLE_NAME
回收站中表的当前表名。
示例:
将回收站中表__innodb_test_db_t1_1069恢复到原库test_db,并保留原表名t1。
call dbms_recyclebin.restore_table('__innodb_test_db_t1_1069');
- 恢复回收站中的表到指定库的指定表
call dbms_recyclebin.restore_table('TABLE_NAME', 'DEST_DB', 'DEST_TABLE');
表5 参数说明 参数名称
说明
TABLE_NAME
回收站中表的当前表名。
DEST_DB
指定表恢复到的数据库。
DEST_TABLE
指定表恢复后的表名。
示例:
将回收站中表__innodb_test_db_t1_1069恢复到指定库test_db2,并指定恢复后的表名为t3。
call dbms_recyclebin.restore_table('__innodb_test_db_t1_1069','test_db2','t3');
说明:
- 执行恢复操作前请确保目标库存在,否则恢复命令将执行失败。
- 执行恢复操作前请确认目标库下不存在同名表,否则恢复将执行失败。
- 表回收站相关命令指定的引号内的库名、表名前后不允许有多余空格。
- 手动创建与原表表结构相同的新表后,通过INSERT INTO ... SELECT ...语句将表中数据恢复到新表