MySQL导入数据小技巧:在不影响业务的前提下,如何平稳迁移数据?

生产案例:产品经理要求把B库里的表迁移到A库里。

问:在不影响业务的前提下,如何平稳迁移数据?

答:可以做限速,以每秒1MB的速度导入数据,这样CPU和磁盘IO不受影响。

shell> pv -a -p -t -L 1m test1.sql | mysql -S /tmp/mysql.sock -p123456 test


这条命令的限速思路是:

1) pv通过监控test1.sql的读取流量起到限速的目的

2) 它每秒只读取流量限制内的数据量(1MB)

3) 由于下游mysql只能以pv提供的数据为基础导入

4) 所以整个恢复速度就是pv限定的读取速度

5) 从而间接在导入端实现了限速控制

也就是说:pv通过控制文件读取速度,间接限定了mysql导入的速度。