MySQL导入数据小技巧:在不影响业务的前提下,如何平稳迁移数据?
生产案例:产品经理要求把B库里的表迁移到A库里。
问:在不影响业务的前提下,如何平稳迁移数据?
答:可以做限速,以每秒1MB的速度导入数据,这样CPU和磁盘IO不受影响。
shell> pv -a -q -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导入的速度。