MySQL - 在分区之间移动数据,也就是重新分区
MySQL - Move data between partitions aka re-partition
我有一个 mysql table 其分区如下所示
p2015h1 - Contains data where date < 2015-07-01 (Has data from 2016-06-01. Hence only month worth of data)
p2015h2 - Contains data where date < 2016-01-01
p2016h1 - Contains data where date < 2016-07-01
p2016h2 - Contains data where date < 2017-01-01
我希望新分区按季度进行,如下所示 -
p0 - Contains data where date < 2015-10-01
p1 - Contains data where date < 2016-01-01
p2 - Contains data where date < 2016-04-01
p3 - Contains data where date < 2016-07-01
我首先重组了第一个分区并执行了以下命令。一切顺利。
alter table `table1` reorganize partition `p2015half1` into (partition `p0` values less than ('2015-10-01'));
现在由于现有分区 p2015h2
的数据最多包含 2015-10-01
,我如何将这部分移动到分区 p0
中?在继续构建新分区时,我也需要对其他分区执行相同的操作。
我确实尝试完全删除 table 上的分区,但是,table 的大小为数十亿行,因此操作需要几天时间。 Post 我将不得不重建分区,这将再次花费数天时间。因此,我决定采用拆分分区的方法。
我卡在了这个时间点。请在这里提供任何指导,我将不胜感激。
mysql> alter table `table1` reorganize partition p0,p2015half2 into (partition p00 values less than ('2015-07-01'), partition p1 values less than ('2016-01-01'));
mysql> alter table `table1` reorganize partition p00 into (partition p0 values less than ('2015-07-01'));
mysql> alter table `table1` reorganize partition p2016half1,p2016half2 into (partition p2 values less than ('2016-04-01'), partition p3 values less than ('2016-07-01'),partition p4 values less than maxvalue);
我有一个 mysql table 其分区如下所示
p2015h1 - Contains data where date < 2015-07-01 (Has data from 2016-06-01. Hence only month worth of data)
p2015h2 - Contains data where date < 2016-01-01
p2016h1 - Contains data where date < 2016-07-01
p2016h2 - Contains data where date < 2017-01-01
我希望新分区按季度进行,如下所示 -
p0 - Contains data where date < 2015-10-01
p1 - Contains data where date < 2016-01-01
p2 - Contains data where date < 2016-04-01
p3 - Contains data where date < 2016-07-01
我首先重组了第一个分区并执行了以下命令。一切顺利。
alter table `table1` reorganize partition `p2015half1` into (partition `p0` values less than ('2015-10-01'));
现在由于现有分区 p2015h2
的数据最多包含 2015-10-01
,我如何将这部分移动到分区 p0
中?在继续构建新分区时,我也需要对其他分区执行相同的操作。
我确实尝试完全删除 table 上的分区,但是,table 的大小为数十亿行,因此操作需要几天时间。 Post 我将不得不重建分区,这将再次花费数天时间。因此,我决定采用拆分分区的方法。
我卡在了这个时间点。请在这里提供任何指导,我将不胜感激。
mysql> alter table `table1` reorganize partition p0,p2015half2 into (partition p00 values less than ('2015-07-01'), partition p1 values less than ('2016-01-01'));
mysql> alter table `table1` reorganize partition p00 into (partition p0 values less than ('2015-07-01'));
mysql> alter table `table1` reorganize partition p2016half1,p2016half2 into (partition p2 values less than ('2016-04-01'), partition p3 values less than ('2016-07-01'),partition p4 values less than maxvalue);