对已有数据的mysql表进行分区的最佳实践
程序员文章站
2022-03-12 09:34:20
...
对已有数据的mysql表进行区分的最佳实践
网上对mysql表进行分区的文章很多,大家可以参考这篇文章Mysql数据库表分区深入详解,该文章详细介绍了各种不同分区的实现原理及方式,这里不再重复。
用作分区的字段必须包含在主键或者唯一索引中
本文主要从实操的角度讲解下如何对生产环境中现有的表进行分区的操作流程。
1第一种方式
经测试,对已有数据的表进行分区后,原有的数据会按照分区自动归类到不同的分区文件中,只是时间会稍微长一点。所以分区操作尽量选择在业务不忙的时候。
2第二种方式
先将原有的数据导出,然后修改原表名称,然后创建新的分区表(与原表名称一致,结构一致),最后将数据重新导入,导入后的数据将按照分区规则自动分类。
step1:测试环境(模拟生产环境已有数据)
数据库名称:test
表名称:part_test
表结构:create table part_test(id int not null,name varchar(200));
原有数据:INSERT INTO `part_test` VALUES (1,'aaaa'),(2,'aaaa'),(3,'aaaa'),(4,'aaaa'),(5,'aaaa'),(6,'aaaa'),(6,'aaaa'),(7,'aaaa');
step2:将现有数据导出
mysqldump -uroot test --no-create-info part_test > part_test.sql;
step3:修改原表名称
alter table part_test rename part_test_old;
step4:创建新的分区表
create table part_test(id int not null,name varchar(200)) partition by hash(id%10) partitions 10;
step5:导入数据
source /data/part_test.sql
step6:校验结果
select partition_name ,partition_expression ,table_rows from information_schema.partitions where table_name = 'part_test';