gh-ost測試

gh-ost測試

一、不支持沒有主鍵或者惟一索引的表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鎖產生的死鎖問題
相關文章
相關標籤/搜索