GH-Ost Test
1. Tables without primary keys or with unique indexes are not supported.
2018-08-24 09:53:33 FATAL No PRIMARY nor UNIQUE key found in table! Bailing out
2. Tables with foreign key constraints are not supported (neither the primary table nor the subtable are supported)
2018-08-24 10:03:09 ERROR Found 1 parent-side foreign keys on `darren`.`t1`. Parent-side foreign keys are not supported. Bailing out2018-08-24 10:03:09 INFO Tearing down inspector2018-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. Table triggers are not supported.
2018-08-24 10:14:47 ERROR Found triggers on `darren`.`test`. Triggers are not supported at this time. Bailing out2018-08-24 10:14:47 INFO Tearing down inspector2018-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. During GH-Ost execution, DDL is performed at the same time. Finally, it is found that the DDL execution is successful, but it is overwritten.
Since GH-Ost has the least impact on the original table (no lock), when the execution time is relatively long, any DDL operation on the table will not take effect during this period.
5. gh-Ost may never be able to complete a large number of writes to a table.
Tested: when more than qps5000 is written, GH-Ost cannot complete the task because apply BINLOG is a single thread and can be understood as slave, when the volume of data written to the original table is large (QPS = 5000 or above), logs are always applied, while GH-Ost is designed to apply BINLOG with a higher priority than row copy, so we can see that the row copy progress remains unchanged, in this way, GH-Ost DDL cannot be completed if the original table has been under such high pressure. After testing on s3710, if the QPS written to the original table is greater than 5000, this situation is likely to occur. If the QPS is less than 5000, it will be okay. 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. When innodb_autoinc_lock_mode = 1, a large number of deadlocks will not be generated like Pt-Osc.
Because data is replicated in a single thread and BINLOG is applied, the row lock and auto-Inc locks do not cause deadlocks.
GH-Ost Test