1.mysql上先加个slave,使用binlog做同步,然后再最后同步快完的时候稍微停下站点,然后上新版本程序(程序需已支持分片),等待同步完成断开master slave,变成两个独立的master(也就是你分片针对的db)。最后对两个db做数据清洗,把不属于自己分片的数据去掉(这步可以在站点上线后做),最后站点上线正常提供服务。
2.程序修正,需保证双写db,单读老库,之后将老库数据历史数据导出后导入新库(需解决可能出现的冲突,如:新库已有数据的情况下就不要再导了),等导入完毕相当于两个库数据完全一致,然后变成单读新库,最后取消双写变成分片写,取消单读变成分片读即可。
忘了说了,第二种之后也要删除各库中不需要的数据。
当然如果你以前就是master slave的就更简单了,只需要稍微停下站点,把slave和master断开然后按1方法操作就完了。