一、不支持沒有主鍵或者惟一索引的表app
2018-08-24 09:53:33 FATAL No PRIMARY nor UNIQUE key found in table! Bailing out
二、不支持有外鍵約束的表(主表和子表都不支持)ide
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
三、不支持表上有觸發器測試
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
四、在gh-ost執行期間,同時進行ddl,最後發現ddl執行成功了,卻被覆蓋了this
因爲gh-ost對原表影響最小(沒有鎖),當執行時間比較長,在此期間,對該表進行任何的DDL都不會生效
五、表上存在大量寫入的時候,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;
六、當innodb_autoinc_lock_mode=1時,不會像pt-osc產生大量死鎖設計
因爲是單線程複製數據和應用binlog,不會因爲row lock和auto-inc鎖產生的死鎖問題