1. 同一个 MySQL 实例中大表迁移
有两种方法,应用在不同的场景下:
-- 1. 重命名实现大表完整迁移
mysql> RENAME TABLE src_db.big_table TO dst_db.big_table;
-- 2. 大表部分迁移
mysql> CREATE TABLE dst_db.big_table AS SELECT * FROM src_db.big_table WHERE id > 100000 and id < 900000;
-- 如果数据量比较大的话,可以写一个程序批量处理:
mysql> INSERT INTO dst_db.big_table SELECT * FROM src_db.big_table WHERE id > 100000 and id < 110000;
2. 跨实例的大表迁移
先用mysqldump
导出sql,然后在执行:
-- 导出完整表数据:
mysqldump -umyuser -pmy_passwd --single-transaction src_db big_table > src_db.big_table.sql
-- 导出部分数据(不导出建表语句):
mysqldump -umyuser -pmy_passwd -t src_db big_table --single-transaction --where="id > 100000 and id <= 1000000000" > big_table-100000-1000000000.sql
-- 导入数据:
mysql -umyuser -pmy_passwd dst_db < big_table.sql
转载于:https://my.oschina.net/ydsakyclguozi/blog/3009598