可能的原因:
1、MySQL表默认是InnoDB引擎且目前索引只支持B+树索引,在数据的增删改过程中,会导致表产生碎片,主从服务器上同张表的碎片率不同也会导致表空间相差很大
2、主从表结构不一致,如从库可能比主库多索引
3、主从表的行格式不一致,如主库为dynamic,从库为compressed
4、个别云数据库在从库上可能采用特殊的并行复制技术,导致在从库上有更高的碎片率(有个极端的案例,同一个表在主库只有6G,从库上则有将近150G)
解决方式:
1、保证主从表结构一致(包括page大小、索引、行格式等)
2、在业务低峰期使用pt-osc或gh-ost通过alter table xxx engine=innodb;重整表空间,消除碎片(切记:执行前要先检查有无未结束事务或其他未释放锁)