base

package
v0.8.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 7, 2016 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const (
	TableStatusRowsEstimate RowsEstimateMethod = "TableStatusRowsEstimate"
	ExplainRowsEstimate                        = "ExplainRowsEstimate"
	CountRowsEstimate                          = "CountRowsEstimate"
)

Variables

This section is empty.

Functions

func FileExists added in v0.7.2

func FileExists(fileName string) bool

func PrettifyDurationOutput

func PrettifyDurationOutput(d time.Duration) string

Types

type ContextConfig added in v0.7.16

type ContextConfig struct {
	Client struct {
		User     string
		Password string
	}
	Osc struct {
		Chunk_Size            int64
		Max_Lag_Millis        int64
		Replication_Lag_Query string
		Max_Load              string
	}
}

type CutOver added in v0.8.3

type CutOver int
const (
	CutOverTwoStep CutOver = 1
	CutOverVoluntaryLock
	CutOverUdfWait
)

type MigrationContext

type MigrationContext struct {
	DatabaseName      string
	OriginalTableName string
	AlterStatement    string

	CountTableRows           bool
	AllowedRunningOnMaster   bool
	SwitchToRowBinlogFormat  bool
	NullableUniqueKeyAllowed bool

	ConfigFile  string
	CliUser     string
	CliPassword string

	ChunkSize                           int64
	MaxLagMillisecondsThrottleThreshold int64
	ReplictionLagQuery                  string
	ThrottleControlReplicaKeys          *mysql.InstanceKeyMap
	ThrottleFlagFile                    string
	ThrottleAdditionalFlagFile          string
	ThrottleCommandedByUser             int64
	MaxLoad                             map[string]int64
	PostponeCutOverFlagFile             string
	SwapTablesTimeoutSeconds            int64

	ServeSocketFile string
	ServeTCPPort    int64

	Noop                    bool
	TestOnReplica           bool
	OkToDropTable           bool
	InitiallyDropOldTable   bool
	InitiallyDropGhostTable bool
	CutOverType             CutOver

	TableEngine               string
	RowsEstimate              int64
	UsedRowsEstimateMethod    RowsEstimateMethod
	OriginalBinlogFormat      string
	OriginalBinlogRowImage    string
	InspectorConnectionConfig *mysql.ConnectionConfig
	ApplierConnectionConfig   *mysql.ConnectionConfig
	StartTime                 time.Time
	RowCopyStartTime          time.Time
	LockTablesStartTime       time.Time
	RenameTablesStartTime     time.Time
	RenameTablesEndTime       time.Time

	CurrentLag            int64
	TotalRowsCopied       int64
	TotalDMLEventsApplied int64

	OriginalTableColumns             *sql.ColumnList
	OriginalTableUniqueKeys          [](*sql.UniqueKey)
	GhostTableColumns                *sql.ColumnList
	GhostTableUniqueKeys             [](*sql.UniqueKey)
	UniqueKey                        *sql.UniqueKey
	SharedColumns                    *sql.ColumnList
	MigrationRangeMinValues          *sql.ColumnValues
	MigrationRangeMaxValues          *sql.ColumnValues
	Iteration                        int64
	MigrationIterationRangeMinValues *sql.ColumnValues
	MigrationIterationRangeMaxValues *sql.ColumnValues

	CanStopStreaming func() bool
	// contains filtered or unexported fields
}

MigrationContext has the general, global state of migration. It is used by all components throughout the migration process.

func GetMigrationContext

func GetMigrationContext() *MigrationContext

GetMigrationContext

func (*MigrationContext) ApplyCredentials added in v0.7.16

func (this *MigrationContext) ApplyCredentials()

ApplyCredentials sorts out the credentials between the config file and the CLI flags

func (*MigrationContext) ElapsedRowCopyTime

func (this *MigrationContext) ElapsedRowCopyTime() time.Duration

ElapsedRowCopyTime returns time since starting to copy chunks of rows

func (*MigrationContext) ElapsedTime

func (this *MigrationContext) ElapsedTime() time.Duration

ElapsedTime returns time since very beginning of the process

func (*MigrationContext) GetChangelogTableName

func (this *MigrationContext) GetChangelogTableName() string

GetChangelogTableName generates the name of changelog table, based on original table name

func (*MigrationContext) GetGhostTableName

func (this *MigrationContext) GetGhostTableName() string

GetGhostTableName generates the name of ghost table, based on original table name

func (*MigrationContext) GetIteration

func (this *MigrationContext) GetIteration() int64

func (*MigrationContext) GetOldTableName

func (this *MigrationContext) GetOldTableName() string

GetOldTableName generates the name of the "old" table, into which the original table is renamed.

func (*MigrationContext) GetTotalRowsCopied

func (this *MigrationContext) GetTotalRowsCopied() int64

GetTotalRowsCopied returns the accurate number of rows being copied (affected) This is not exactly the same as the rows being iterated via chunks, but potentially close enough

func (*MigrationContext) GetVoluntaryLockName

func (this *MigrationContext) GetVoluntaryLockName() string

GetVoluntaryLockName returns a name of a voluntary lock to be used throughout the swap-tables process.

func (*MigrationContext) HasMigrationRange

func (this *MigrationContext) HasMigrationRange() bool

HasMigrationRange tells us whether there's a range to iterate for copying rows. It will be `false` if the table is initially empty

func (*MigrationContext) InspectorIsAlsoApplier

func (this *MigrationContext) InspectorIsAlsoApplier() bool

InspectorIsAlsoApplier is `true` when the both inspector and applier are the same database instance. This would be true when running directly on master or when testing on replica.

func (*MigrationContext) IsThrottled

func (this *MigrationContext) IsThrottled() (bool, string)

func (*MigrationContext) IsTransactionalTable

func (this *MigrationContext) IsTransactionalTable() bool

func (*MigrationContext) MarkPointOfInterest added in v0.8.2

func (this *MigrationContext) MarkPointOfInterest() int64

func (*MigrationContext) MaxRetries

func (this *MigrationContext) MaxRetries() int

func (*MigrationContext) ReadConfigFile

func (this *MigrationContext) ReadConfigFile() error

ReadConfigFile attempts to read the config file, if it exists

func (*MigrationContext) ReadMaxLoad

func (this *MigrationContext) ReadMaxLoad(maxLoadList string) error

ReadMaxLoad parses the `--max-load` flag, which is in multiple key-value format, such as: 'Threads_running=100,Threads_connected=500'

func (*MigrationContext) RequiresBinlogFormatChange

func (this *MigrationContext) RequiresBinlogFormatChange() bool

RequiresBinlogFormatChange is `true` when the original binlog format isn't `ROW`

func (*MigrationContext) SetChunkSize added in v0.8.4

func (this *MigrationContext) SetChunkSize(chunkSize int64)

func (*MigrationContext) SetThrottled

func (this *MigrationContext) SetThrottled(throttle bool, reason string)

func (*MigrationContext) TimeSincePointOfInterest added in v0.8.2

func (this *MigrationContext) TimeSincePointOfInterest() time.Duration

type RowsEstimateMethod

type RowsEstimateMethod string

RowsEstimateMethod is the type of row number estimation

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL