Add Migrated
changelog event
This commit is contained in:
parent
ed46138c06
commit
af99b247f9
@ -24,8 +24,9 @@ import (
|
||||
type ChangelogState string
|
||||
|
||||
const (
|
||||
AllEventsUpToLockProcessed ChangelogState = "AllEventsUpToLockProcessed"
|
||||
GhostTableMigrated ChangelogState = "GhostTableMigrated"
|
||||
AllEventsUpToLockProcessed = "AllEventsUpToLockProcessed"
|
||||
Migrated ChangelogState = "Migrated"
|
||||
)
|
||||
|
||||
func ReadChangelogState(s string) ChangelogState {
|
||||
@ -215,6 +216,8 @@ func (this *Migrator) onChangelogStateEvent(dmlEvent *binlog.BinlogDMLEvent) (er
|
||||
changelogState := ReadChangelogState(changelogStateString)
|
||||
this.migrationContext.Log.Infof("Intercepted changelog state %s", changelogState)
|
||||
switch changelogState {
|
||||
case Migrated:
|
||||
// no-op event
|
||||
case GhostTableMigrated:
|
||||
{
|
||||
this.ghostTableMigrated <- true
|
||||
@ -534,21 +537,22 @@ func (this *Migrator) cutOver() (err error) {
|
||||
}
|
||||
}
|
||||
}
|
||||
if this.migrationContext.CutOverType == base.CutOverAtomic {
|
||||
|
||||
switch this.migrationContext.CutOverType {
|
||||
case base.CutOverAtomic:
|
||||
// Atomic solution: we use low timeout and multiple attempts. But for
|
||||
// each failed attempt, we throttle until replication lag is back to normal
|
||||
err := this.atomicCutOver()
|
||||
this.handleCutOverResult(err)
|
||||
return err
|
||||
}
|
||||
if this.migrationContext.CutOverType == base.CutOverTwoStep {
|
||||
err := this.cutOverTwoStep()
|
||||
this.handleCutOverResult(err)
|
||||
return err
|
||||
}
|
||||
err = this.atomicCutOver()
|
||||
case base.CutOverTwoStep:
|
||||
err = this.cutOverTwoStep()
|
||||
default:
|
||||
return this.migrationContext.Log.Fatalf("Unknown cut-over type: %d; should never get here!", this.migrationContext.CutOverType)
|
||||
}
|
||||
|
||||
this.handleCutOverResult(err)
|
||||
return err
|
||||
}
|
||||
|
||||
// Inject the "AllEventsUpToLockProcessed" state hint, wait for it to appear in the binary logs,
|
||||
// make sure the queue is drained.
|
||||
func (this *Migrator) waitForEventsUpToLock() (err error) {
|
||||
@ -1296,6 +1300,11 @@ func (this *Migrator) executeWriteFuncs() error {
|
||||
func (this *Migrator) finalCleanup() error {
|
||||
atomic.StoreInt64(&this.migrationContext.CleanupImminentFlag, 1)
|
||||
|
||||
this.migrationContext.Log.Infof("Writing changelog state: %+v", Migrated)
|
||||
if _, err := this.applier.WriteChangelogState(string(Migrated)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if this.migrationContext.Noop {
|
||||
if createTableStatement, err := this.inspector.showCreateTable(this.migrationContext.GetGhostTableName()); err == nil {
|
||||
this.migrationContext.Log.Infof("New table structure follows")
|
||||
|
Loading…
Reference in New Issue
Block a user