base

package
v0.8.3 Latest Latest
Warning

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

Go to latest
Published: Jun 6, 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
	MaxLoad                             map[string]int64
	PostponeSwapTablesFlagFile          string
	SwapTablesTimeoutSeconds            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) 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