2/28打卡每日一题~

如何维护一个按日期范围分区的订单表,每天生成一个分区。现在需要将3个月前的历史分区数据迁移到冷存储,并清理原表空间。请描述你的具体操作步骤,包括使用的命令和注意事项。

**操作步骤:**​
1.确认分区信息
SHOW CREATE TABLE orders; – 查看分区定义
SELECT * FROM INFORMATION_SCHEMA.PARTITIONS
WHERE TABLE_NAME=‘orders’; – 检查现有分区
2. 创建冷存储表(若不存在)
CREATE TABLE orders_archive LIKE orders; – 结构相同
ALTER TABLE orders_archive SET TBLPROPERTIES(“storage_policy”=“COLD”); – 标记为冷存储
3. 逐分区迁移数据
ALTER TABLE orders EXCHANGE PARTITION p20230101
WITH TABLE orders_archive; – 将分区p20230101迁移至冷表
4. 清理原分区
ALTER TABLE orders DROP PARTITION p20230101; – 释放空间

**注意事项:**​
时间窗口:选择业务低峰期操作,避免锁表影响线上查询。
备份验证:迁移前通过SELECT COUNT(*)核对分区数据完整性。
冷存储配置:确保冷存储已挂载且权限正确(如OSS/HDFS路径)。
监控资源:大分区迁移可能占用IO/网络带宽,需监控系统负载。
回收站机制:部分数据库支持回收站功能,误删后可恢复(如Oracle的FLASHBACK TABLE)。

2 个赞