gh-ost icon indicating copy to clipboard operation
gh-ost copied to clipboard

expected features

Open shlomi-noach opened this issue 9 years ago • 12 comments

Throwing around all ideas, in no particular order, lest we forget.

shlomi-noach avatar Apr 01 '16 14:04 shlomi-noach

  • [x] prefer connecting to replica. Auto detect master
  • [x] automatically converting binlog_format to row
    • [x] unless server has replicas, in which case bail out
  • [ ] Catch Ctrl-C to restore settings
  • [ ] if binlog_row_image='minimal' the PK may not be changed
  • [ ] if PK is changed, will auto convert to binlog_row_image='full'
    • [ ] and restore settings upon exit
  • [x] support --test-on-replica, which expects host to be a replica, and converts the table on the replica. This is for experimental alters for gaining trust in the tool. Once the table is altered, no switch take place. The replica can be stopped and the two tables (original & ghost) can be compared and verifies to be identical.
  • [x] accept list of replicas as control servers
  • [x] accept max allowed lag as throttling threshold
  • [x] accept --max-load
  • [x] respect pause-file. When this file exists, the tool pauses
  • [x] respect a terminate-file. When this file is brought to existence, the tool quits in orderly fashion
  • [ ] accept --auto-suggest-credentials: the tool generates a GRANT statement with new credentials and a random password, and asks the user to create these credentials, then polls until it is satisfied it can connect with these credentials
  • [x] verify privileges are sufficient via SHOW GRANTS FOR CURRENT_USER()

shlomi-noach avatar Apr 01 '16 14:04 shlomi-noach

  • [x] support --exact-rowcount which actually issues SELECT COUNT(*) FROM original_table instead of estimating number of rows in table. This should only be allowed on the replica.

shlomi-noach avatar Apr 01 '16 17:04 shlomi-noach

  • [x] dynamic changing of parameters, such as chunk-size or max-load. This is an essential operational feature.

shlomi-noach avatar Apr 04 '16 07:04 shlomi-noach

  • [x] verify no foreign keys exist on table (neither "parent" nor "child")

shlomi-noach avatar Apr 04 '16 12:04 shlomi-noach

  • [x] a --noop flag, or rather the contrary, noop by default and a --execute to actually make things happen (similarly to existing pt-osc)

shlomi-noach avatar Apr 04 '16 13:04 shlomi-noach

  • [ ] estimates for completion time based on how close the copy job gets to current value of auto-increment

jonahberquist avatar Apr 04 '16 17:04 jonahberquist

  • [x] multiple max-load conditions. We may wish to throttle on threads_running AND on thread_connected AND on something else...

shlomi-noach avatar Apr 05 '16 06:04 shlomi-noach

  • [ ] handle ROLLBACK events in binary log (I think this would be irrelevant on replicas, but relevant on master)

shlomi-noach avatar Apr 06 '16 12:04 shlomi-noach

  • [x] support RENAME COLUMN

shlomi-noach avatar Apr 14 '16 12:04 shlomi-noach

  • [ ] phase 2: optionally (via config) do not INSERT INTO...SELECT on the master. Read the rows from replica via app, write them onto master. This removes the last coupling of OSC with the master. It removes the last concurrency consideration on the master.

shlomi-noach avatar Apr 18 '16 22:04 shlomi-noach

  • [ ] support data migrate model (data migrate is similar with the alter table process)

dozer47528 avatar Aug 05 '16 06:08 dozer47528

@dozer47528 Sorry, not following; how do you mean "support data migrate model"?

  • Do you wish for gh-ost to issue a large scale UPDATE for you, using chunking and throttling?

Also, please open a new Issue for a new feature request. This Issue was created in the very early days of gh-ost to lay out the general plan.

shlomi-noach avatar Aug 11 '16 08:08 shlomi-noach