执行gh-ost,信息如下:
2018-06-21 21:43:26 INFO Listening on unix socket file: /tmp/gh-ost.hy_billing.hy_hyvertiser_daily_cost.sock 2018-06-21 21:43:26 INFO Migration min values: [2018-06-01,8] 2018-06-21 21:43:26 INFO Migration max values: [2018-06-21,999985668] 2018-06-21 21:43:26 INFO Waiting for first throttle metrics to be collected 2018-06-21 21:43:26 INFO First throttle metrics collected # Migrating `hy_billing`.`hy_hyvertiser_daily_cost`; Ghost table is `hy_billing`.`_hy_hyvertiser_daily_cost_gho` # Migrating 172.20.51.5:3306; inspecting 172.20.51.5:3306; executing on # Migration started at Thu Jun 21 21:43:26 +0800 2018 # chunk-size: 400; max-lag-millis: 2000ms; dml-batch-size: 10; max-lohy: Threhys_connected=3000; critical-lohy: Threhys_connected=5000; nice-ratio: 0.000000 # throttle-hyditional-flag-file: /tmp/gh-ost.throttle # panic-flag-file: /tmp/ghost.panic.flag # Serving on unix socket: /tmp/gh-ost.hy_billing.hy_hyvertiser_daily_cost.sock Copy: 0/3485150 0.0%; Applied: 0; Backlog: 34/1000; Time: 0s(total), 0s(copy); streamer: mysql-bin.017134:104412871; State: migrating; ETA: N/A Copy: 0/3485150 0.0%; Applied: 1640; Backlog: 947/1000; Time: 1s(total), 1s(copy); streamer: mysql-bin.017134:105206424; State: migrating; ETA: N/A Copy: 0/3485150 0.0%; Applied: 3000; Backlog: 1000/1000; Time: 2s(total), 2s(copy); streamer: mysql-bin.017134:105645974; State: migrating; ETA: N/A Copy: 0/3485150 0.0%; Applied: 4620; Backlog: 1000/1000; Time: 3s(total), 3s(copy); streamer: mysql-bin.017134:106148767; State: migrating; ETA: N/A Copy: 0/3485150 0.0%; Applied: 6330; Backlog: 1000/1000; Time: 4s(total), 4s(copy); streamer: mysql-bin.017134:106678437; State: migrating; ETA: N/A Copy: 0/3485150 0.0%; Applied: 8070; Backlog: 1000/1000; Time: 5s(total), 5s(copy); streamer: mysql-bin.017134:107219154; State: migrating; ETA: N/A Copy: 0/3485150 0.0%; Applied: 9870; Backlog: 1000/1000; Time: 6s(total), 6s(copy); streamer: mysql-bin.017134:107777731; State: migrating; ETA: N/A Copy: 0/3485150 0.0%; Applied: 11670; Backlog: 1000/1000; Time: 7s(total), 7s(copy); streamer: mysql-bin.017134:108335789; State: migrating; ETA: N/A Copy: 0/3485150 0.0%; Applied: 13470; Backlog: 1000/1000; Time: 8s(total), 8s(copy); streamer: mysql-bin.017134:108893997; State: migrating; ETA: N/A Copy: 0/3485150 0.0%; Applied: 15290; Backlog: 1000/1000; Time: 9s(total), 9s(copy); streamer: mysql-bin.017134:109458007; State: migrating; ETA: N/A
|
gh-ost生成的后台临时表一直没有数据,gh-ost后台命令一直运行,表添加字段一直没有执行完成。
问题原因是:
1、主键是联合主键(id、gt_date)
2、mysql实例的tps比较高,>2000,而gh-ost的chunk-size=400,一直追不上,日志信息Backlog: 1000/1000可以证明此。
解决办法:
1、实例cpu负载不高,加大chunk-size=1000
扫描二维码关注公众号,回复:
1725455 查看本文章
2、dml-batch-size值从10改成100
PS:类似主键带有分区字段gt_date的,一般是大数据的实例,可以拉维护,直接原生ddl操作。