Commit Graph

  • ec34a5ef75 master_pos_wait is now OK to return NULL. We only care if it returns with -1 Shlomi Noach 2016-05-18 15:08:47 +0200
  • 079f1c0f98 Merge pull request #40 from github/fix-single-row-copy Shlomi Noach 2016-05-18 14:53:52 +0200
  • 9f56a84b57 Fixing single-row table migration - BuildUniqueKeyRangeEndPreparedQuery supports includeRangeStartValues argument - applier sends this.migrationContext.GetIteration() == 0 as argument Shlomi Noach 2016-05-18 14:53:09 +0200
  • 45371d9374 Merge pull request #36 from github/master-pos-wait-fix Shlomi Noach 2016-05-18 12:21:22 +0200
  • 55e463350b Merge pull request #38 from github/credentials-config-cli Shlomi Noach 2016-05-17 15:37:04 +0200
  • df0a7513f5 - user/password provided in CLI override those in config file - user no longer defaults to . - config is now part of Context, and is protected by mutex Shlomi Noach 2016-05-17 15:35:44 +0200
  • fbfe0c71ff Merge pull request #37 from github/postpone-swap-tables-flag-file v0.7.2 Shlomi Noach 2016-05-17 14:42:12 +0200
  • 879b2b425e - Support for --postpone-swap-tables-flag-file: while this file exists, final table swap does not take place, and the ghost table keeps being synchronized - Fixed version printing - rowCopyCompleteFlag is a hint that allows us to escape the infinite loop of rowcopy once we are sure we have reached the end Shlomi Noach 2016-05-17 14:40:37 +0200
  • 065d9c40ec some messagages are now Info instead of Debug Shlomi Noach 2016-05-17 11:57:43 +0200
  • 9a3c607665 Merge pull request #35 from github/app-version Shlomi Noach 2016-05-17 11:51:55 +0200
  • 41b0a4f317 supporting --version Shlomi Noach 2016-05-17 11:51:21 +0200
  • c6a371e6db Merge pull request #34 from github/rename-gh-ost v0.7.1 Shlomi Noach 2016-05-16 11:11:55 +0200
  • 21f6ae9dca renaming to gh-ost Shlomi Noach 2016-05-16 11:10:12 +0200
  • 9d055dbda7 renaming to gh-ost Shlomi Noach 2016-05-16 11:09:17 +0200
  • 92d09dbcf6 Merge pull request #31 from github/fix-out-of-order-dml-apply Shlomi Noach 2016-05-16 11:03:50 +0200
  • 1e10f1f29e Solved various race conditions: - Operation would terminate after events lock noticed but before applying all events: race condition where the event would be captured asynchronously. The event is now handled sequentially with the DML events, hence now safe. - Multiple rowcopy operations would still write to rowCopyComplete channel. This is still the case, but now we only wait for the first and then just flush (read and discard) any others, to avoid blocking - Events DML listener is only added after table creation: the problem was that with very busy tables, the events func buffer would fill up, and the "tables-created" event would be blocked. - waitForEventsUpToLock() unifies the waiting on all variants of complete-migration - With --test-on-replica, now stopping replication "nicely", using master_pos_wait() - With --test-on-replica, not throttling on replication after replication is stopped (duh) - More debug output Shlomi Noach 2016-05-16 11:03:15 +0200
  • 134bf385fd initial, simple solution to our-of-order applying of DML events Shlomi Noach 2016-05-05 17:14:55 +0300
  • 619be65524 Merge pull request #29 from github/status-eta v0.7 Shlomi Noach 2016-05-05 09:19:11 +0300
  • 6528010742 Adding ETA starting at 2% progress Shlomi Noach 2016-05-05 09:18:19 +0300
  • ee673e2f2e Merge pull request #28 from github/fix-statistics-query Shlomi Noach 2016-05-04 09:50:31 +0300
  • 800c1109b0 fixed statistics query: getting the correct column names by unique key Shlomi Noach 2016-05-04 09:50:00 +0300
  • dfdac964f1 Merge pull request #27 from github/exact-rowcount Shlomi Noach 2016-05-04 08:26:17 +0300
  • 74d8b06db1 exact-rowcount implices updating number of rows as we make progress Shlomi Noach 2016-05-04 08:23:34 +0300
  • 567cd32ef0 Merge pull request #24 from github/initially-dropping-tables Shlomi Noach 2016-05-03 12:58:35 +0300
  • bd741371d0 Merge pull request #23 from github/cnf-file Shlomi Noach 2016-05-03 12:55:59 +0300
  • 36905d82e3 - supporting --initially-drop-old-table - supporting --initially-drop-ghost-table - validating existence of old and ghost before beginning operation Shlomi Noach 2016-05-03 12:55:17 +0300
  • 627e412b6b fixed password assignment Shlomi Noach 2016-05-03 11:56:53 +0300
  • 86fd2b617a initial support for config file Shlomi Noach 2016-05-03 10:28:48 +0300
  • 93ac641455 Merge pull request #22 from github/throttle-control-replicas Shlomi Noach 2016-05-01 21:37:12 +0300
  • 07063a4181 - added throttle-control-replicas flag, a list of control replicas - when --test-on-replica, the tested replica is implicitly a control replica - added replication-lag-query, an alternate query to SHOW SLAVE STATUS to get replication lag - throttling takes both the above into consideration Shlomi Noach 2016-05-01 21:36:36 +0300
  • 128658579a Merge pull request #21 from github/lossless-swap-tables Shlomi Noach 2016-05-01 21:32:46 +0300
  • 421ab0fc83 woohoo, logic complete - Introduced SwapTablesTimeoutSeconds; RENAME is limited by this timeout - If RENAME fails (due to the above), we throttle and retry - SwapTablesAtomic() sets lock_wait_timeout and notifies with connection id - GrabVoluntaryLock() intentionally grabs (and later releases) voluntary lock. It notifies when it is taken and awaits instructions as for when it could be released. - IssueBlockingQueryOnVoluntaryLock() does what it says. It notifies with its connection_id so that it can be easily traced - stopWritesAndCompleteMigrationOnMasterViaLock() does the thang. Oh dear this was agonizing and the code is a pain to look at, though under the limitations I do believe it is as clean as I could hope for. Shlomi Noach 2016-04-22 19:46:34 -0700
  • 1ed1b0d156 - quick-and-bumpy-swap-tables uses quicker swap tables, at the expense of a period where the table does not exist (non atomic renames) - refactored lock-and-swap code, in preparation for atomic swap Shlomi Noach 2016-04-22 13:41:20 -0700
  • 54c6d059b5 - quick-and-bumpy-swap-tables uses quicker swap tables, at the expense of a period where the table does not exist (non atomic renames) - refactored lock-and-swap code, in preparation for atomic swap Shlomi Noach 2016-04-22 13:18:56 -0700
  • fbe226ebb2 Merge pull request #20 from github/noop-replica-and-stuff Shlomi Noach 2016-04-19 04:26:22 -0700
  • 3c85298b77 - Better, fewer NOOP checks around the code - Keeping track of TotalDMLEventsApplied Shlomi Noach 2016-04-19 04:25:32 -0700
  • 4efbfd6e0f Merge pull request #19 from github/oops-leftovers Shlomi Noach 2016-04-18 10:59:58 -0700
  • 9dce88e6c0 oops, leftover file Shlomi Noach 2016-04-18 10:59:34 -0700
  • bb264fdc2b Merge pull request #18 from github/ongoing-initial-work-3 Shlomi Noach 2016-04-18 10:58:59 -0700
  • eeffa701d6 - Added ok-to-drop-table flag - Added switch-to-rbr flag; applying binlog format change if needed - Using dedicated db instance for locking & renaming on applier (must be used from within same connection) - Heartbeat now uses time.RFC3339Nano - Swap tables works! Caveat: short table outage - --test-on-replica works! - retries: using panicAbort: from any goroutine, regardless of context, it is possible to terminate the operation - Reintroduced changelog events listener on streamer. This is the correct implementation. Shlomi Noach 2016-04-18 10:57:18 -0700
  • 75c3fe0bee Merge pull request #16 from github/ongoing-initial-work-2 Shlomi Noach 2016-04-14 13:39:48 +0200
  • a4ee80df13 - Building and applying queries from binlog event data! - INSERT, DELETE, UPDATE statements - support for --noop - initial support for --test-on-replica. Verifying against --allow-on-master - Changelog events no longer read from binlog stream, because reading it may be throttled, and we have to be able to keep reading the heartbeat and state events. They are now being read directly from table, mapping already-seen-events to avoid confusion Changlelog listener pools table in 2*frequency of heartbeat injection Shlomi Noach 2016-04-14 13:37:56 +0200
  • 0d25d11b40 added types_test Shlomi Noach 2016-04-11 19:06:47 +0200
  • 04525887f3 - Throttling-check is now an async routine running once per second - Throttling variables protected by mutex - Added --throttle-additional-flag-file: operation pauses when this file exists; hint: keep default, use for throttling multiple gh-osc operations - ColumnList is not a struct which contains ordinal mapping - More implicit write changelog + audit changelog - builder now builds DELETE and INSERT queries from data it will eventually get from DML event - Sanity check for binlog_row_image - Restarting replication to be sure binlog settings apply - Prepare for accepting SIGHUP (reloading configuration) Shlomi Noach 2016-04-11 17:27:16 +0200
  • 80163b35b6 extracted on-throttle functions outside loop Shlomi Noach 2016-04-08 14:44:36 +0200
  • a1a34b8150 ongoing development: - accepts --max-load - accepts multiple conditions in --max-load - throttle includes reason - chunk-size sanity check - change log state writes both in appending (history) mode and in replacing (current) mode - more atomic checks - inspecting ghost table columns, unique key - comparing unique keys between tables; sanity - intersecting columns between tables - prettify status - refactored throttle() and retries() Shlomi Noach 2016-04-08 14:35:06 +0200
  • 4652bb7728 Merge pull request #14 from github/ongoing-initial-work Shlomi Noach 2016-04-08 10:35:57 +0200
  • 75f68c0752 - row copy and row events are now handled by a single routine which prioritizes events over rowcopy - Supporting --throttle-file-flag - Printing status - Supporting transactional table syntax - code cleanup; refactoring - proper use of atomic where required - iterations are in changelog (erm... maybe too much) - LOCK TABLES, UNLOCK TABLES working Shlomi Noach 2016-04-08 10:34:44 +0200
  • 0e7b23e6fe - Creating an populating Changelog table - Using heartbeat - Throttling works based on heartbeat - Refactored binlog_reader stuff. Now streaming events (into golang channel, which makes for nice buffering and throttling) - Binlog table listeners work - More Migrator logic; existing logic for waiting on state events (e.g. TablesCreatedState) Shlomi Noach 2016-04-07 15:57:12 +0200
  • 4dd5a93ed7 - More work on go-mysql reader: now properly notes binlog coordinates as it makes progress - Properly creating multiple BinlogEntry-ies when reading multi statement binlog event (Still todo: transactions) Shlomi Noach 2016-04-06 18:44:54 +0200
  • 5deff2adb6 - working POC of row-copy iteration cycle - initial work on table columns - initial work on events streamer Shlomi Noach 2016-04-06 13:05:58 +0200
  • f771016bd5 . Shlomi Noach 2016-04-06 13:05:21 +0200
  • d8fefb3d6f exploded args on range query building; iteration works Shlomi Noach 2016-04-05 19:50:49 +0200
  • 3583ab5dc5 beginning support for ranges and iteration. Still WIP Shlomi Noach 2016-04-05 09:14:22 +0200
  • ea0906f4e5 reading table (range) min/max values, right now according to hardcoded unique key Shlomi Noach 2016-04-04 18:19:46 +0200
  • 937491674c adding applier, instance_key, instance_key_map Shlomi Noach 2016-04-04 15:30:49 +0200
  • cf87d16044 detecting master (includes sanity checks). Introducing Applier. Creating and altering ghost table Shlomi Noach 2016-04-04 15:29:02 +0200
  • bba352922a Merge pull request #10 from github/initial-db-access Shlomi Noach 2016-04-04 12:29:35 +0200
  • c75cd998fb a bunch of 'inspector' initial tests on the replica Shlomi Noach 2016-04-04 12:27:51 +0200
  • 1b8c5ff286 preparing for db access Shlomi Noach 2016-04-01 16:05:54 +0200
  • f5b276415a initial work on context Shlomi Noach 2016-04-01 16:05:44 +0200
  • b461c320cc added BuildUniqueKeyRangeEndPreparedQuery() Shlomi Noach 2016-04-01 16:05:17 +0200
  • f0e37cde1c added vendor packages Shlomi Noach 2016-04-01 16:04:27 +0200
  • 5e5b868c5c Merge pull request #9 from github/build-range-prepared Shlomi Noach 2016-04-01 13:56:33 +0200
  • 41c3d15963 building prepared queries (with positional params) Shlomi Noach 2016-04-01 13:55:51 +0200
  • 9b368a7720 Merge pull request #8 from github/sql-queries-manipulations Shlomi Noach 2016-04-01 13:54:20 +0200
  • 20a74d578d Merge pull request #6 from github/experimenting-go-mysql Shlomi Noach 2016-04-01 13:54:07 +0200
  • 39ebc75c43 initial work on sql query building Shlomi Noach 2016-04-01 13:36:56 +0200
  • 8f3d13e071 still experimenting, yes? go-mysql binlog parser looks good Shlomi Noach 2016-03-30 15:43:40 +0200
  • e3210a9fa2 Merge pull request #4 from github/parsing-mysqlbinlog Shlomi Noach 2016-03-30 10:25:59 +0200
  • 30a472f741 begin work on positional columns. Incomplete Shlomi Noach 2016-03-24 22:27:39 +0100
  • 96a8fd50c3 minor refactoring; fixed license comments Shlomi Noach 2016-03-24 15:11:56 +0100
  • fb04eb232f simplified appendBinlogEntry() Shlomi Noach 2016-03-24 14:52:49 +0100
  • 8aa6a9750c adjusted automaton to accept multi-statement entries; added tests Shlomi Noach 2016-03-24 14:25:52 +0100
  • 1768b55b3b mysqlbinlog_reader is now a simple state machine Shlomi Noach 2016-03-23 15:25:45 +0100
  • e088a3abac Merge pull request #2 from github/initial-code Shlomi Noach 2016-03-23 13:53:30 +0100
  • e36bb51b69 initial seems-to-be-working parser for binary logs, which reads log pos, end log pos, statement type, schema and table. Performs some validations along the way. Reads in chunks of up to 32M per chunk Shlomi Noach 2016-03-23 12:40:17 +0100
  • 1576119576 adding build file Shlomi Noach 2016-03-23 12:39:24 +0100
  • 09046c8f6e initial binlog package Shlomi Noach 2016-03-22 15:12:51 +0100
  • bb1c6dae30 adding initial bunch of code Shlomi Noach 2016-03-21 15:57:01 +0100
  • 295d98c5b2 Initial commit Shlomi Noach 2016-03-21 11:08:52 +0100