Documentation
¶
Overview ¶
Package migration contains the logic for running online schema changes.
Index ¶
- type CutOver
- type Migration
- type Runner
- func (r *Runner) Cancel()
- func (r *Runner) Close() error
- func (r *Runner) DumpCheckpoint(ctx context.Context) error
- func (r *Runner) Progress() status.Progress
- func (r *Runner) Run(ctx context.Context) error
- func (r *Runner) SetLogger(logger loggers.Advanced)
- func (r *Runner) SetMetricsSink(sink metrics.Sink)
- func (r *Runner) Status() string
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CutOver ¶
type CutOver struct {
// contains filtered or unexported fields
}
func NewCutOver ¶
func NewCutOver(db *sql.DB, config []*cutoverConfig, feed *repl.Client, dbConfig *dbconn.DBConfig, logger loggers.Advanced) (*CutOver, error)
NewCutOver contains the logic to perform the final cut over. It can cutover multiple tables at once based on config. A replication feed which is used to ensure consistency before the cut over.
type Migration ¶
type Migration struct {
Host string `name:"host" help:"Hostname" optional:"" default:"127.0.0.1:3306"`
Username string `name:"username" help:"User" optional:"" default:"spirit"`
Password string `name:"password" help:"Password" optional:"" default:"spirit"`
Database string `name:"database" help:"Database" optional:"" default:"test"`
Table string `name:"table" help:"Table" optional:""`
Alter string `name:"alter" help:"The alter statement to run on the table" optional:""`
Threads int `name:"threads" help:"Number of concurrent threads for copy and checksum tasks" optional:"" default:"4"`
TargetChunkTime time.Duration `name:"target-chunk-time" help:"The target copy time for each chunk" optional:"" default:"500ms"`
ReplicaDSN string `name:"replica-dsn" help:"A DSN for a replica which (if specified) will be used for lag checking." optional:""`
ReplicaMaxLag time.Duration `` /* 127-byte string literal not displayed */
LockWaitTimeout time.Duration `name:"lock-wait-timeout" help:"The DDL lock_wait_timeout required for checksum and cutover" optional:"" default:"30s"`
SkipDropAfterCutover bool `name:"skip-drop-after-cutover" help:"Keep old table after completing cutover" optional:"" default:"false"`
DeferCutOver bool `name:"defer-cutover" help:"Defer cutover (and checksum) until sentinel table is dropped" optional:"" default:"false"`
ForceKill bool `` /* 152-byte string literal not displayed */
Strict bool `name:"strict" help:"Exit on --alter mismatch when incomplete migration is detected" optional:"" default:"false"`
Statement string `name:"statement" help:"The SQL statement to run (replaces --table and --alter)" optional:"" default:""`
// TLS Configuration
TLSMode string `` /* 162-byte string literal not displayed */
TLSCertificatePath string `name:"tls-ca" help:"Path to custom TLS CA certificate file" optional:""`
// Experimental features
// These are no longer hidden, we document them.
EnableExperimentalBufferedCopy bool `` /* 154-byte string literal not displayed */
EnableExperimentalLinting bool `` /* 129-byte string literal not displayed */
EnableExperimentalLinters []string `name:"enable-experimental-linters" help:"Experimental linters to enable (default \"all\")" optional:""`
ExperimentalLinterConfig []string `` /* 133-byte string literal not displayed */
ExperimentalLintOnly bool `name:"experimental-lint-only" help:"Exit after executing linters" optional:"" default:"false"`
// Hidden options for now (supports more obscure cash/sq usecases)
InterpolateParams bool `name:"interpolate-params" help:"Enable interpolate params for DSN" optional:"" default:"false" hidden:""`
// Used for tests so we can concurrently execute without issues even though
// the sentinel name is shared. Basically it will be true here, but false
// in the tests unless we set it explicitly true.
RespectSentinel bool `name:"respect-sentinel" help:"Look for sentinel table to exist and block if it does" optional:"" default:"true" hidden:""`
}
type Runner ¶
type Runner struct {
// contains filtered or unexported fields
}
func (*Runner) DumpCheckpoint ¶
DumpCheckpoint is called approximately every minute. It writes the current state of the migration to the checkpoint table, which can be used in recovery. Previously resuming from checkpoint would always restart at the copier, but it can now also resume at the checksum phase.
func (*Runner) SetMetricsSink ¶
Click to show internal directories.
Click to hide internal directories.