1. 程式人生 > >gh-ost測試

gh-ost測試

gh-ost測試

1、不支援沒有主鍵或者唯一索引的表

2018-08-24 09:53:33 FATAL No PRIMARY nor UNIQUE key found in table! Bailing out

2、不支援有外來鍵約束的表(主表和子表都不支援)

2018-08-24 10:03:09 ERROR Found 1 parent-side foreign keys on `darren`.`t1`. Parent-side foreign keys are not supported. Bailing out
2018-08-24 10:03:09 INFO Tearing down inspector
2018-08-24 10:03:09 FATAL 2018-08-24 10:03:09 ERROR Found 1 parent-side foreign keys on `darren`.`t1`. Parent-side foreign keys are not supported. Bailing out

3、不支援表上有觸發器

2018-08-24 10:14:47 ERROR Found triggers on `darren`.`test`. Triggers are not supported at this time. Bailing out
2018-08-24 10:14:47 INFO Tearing down inspector
2018-08-24 10:14:47 FATAL 2018-08-24 10:14:47 ERROR Found triggers on `darren`.`test`. Triggers are not supported at this time. Bailing out

4、在gh-ost執行期間,同時進行ddl,最後發現ddl執行成功了,卻被覆蓋了

由於gh-ost對原表影響最小(沒有鎖),當執行時間比較長,在此期間,對該表進行任何的DDL都不會生效

5、表上存在大量寫入的時候,gh-ost可能永遠也完成不了

經過測試:當寫入QPS5000以上,gh-ost無法完成任務,其原因是apply binlog是單執行緒,可以理解為slave,當原表寫入量巨大時(QPS=5000以上),
一直在應用日誌,而gh-ost設計是binlog應用優先順序高於row copy,所以我們看到row copy進度一直沒變,這樣如果原表一直壓力這麼大,那麼gh-ost DDL將無法完成。
經過在s3710機器上測試如果原表寫入的QPS大於5000將大概率出現此情況,小於5000的話沒問題。

Copy: 0/9705089 0.0%; Applied: 183480; Backlog: 1000/1000; Time: 1m24s(total), 1m24s(copy); streamer: tjtx-126-164.001588:441763689; 
Copy: 0/9705089 0.0%; Applied: 185490; Backlog: 1000/1000; Time: 1m25s(total), 1m25s(copy); streamer: tjtx-126-164.001588:442986068; 
Copy: 0/9705089 0.0%; Applied: 207590; Backlog: 1000/1000; Time: 1m30s(total), 1m30s(copy); streamer: tjtx-126-164.001588:455843331;

6、當innodb_autoinc_lock_mode=1時,不會像pt-osc產生大量死鎖

由於是單執行緒複製資料和應用binlog,不會由於row lock和auto-inc鎖產生的死鎖問題