Documentation
¶
Index ¶
- Constants
- Variables
- func Backup(ctx context.Context, params BackupParams) error
- func ChooseBinlogsForIncrementalBackup(ctx context.Context, lookFromGTIDSet mysql.GTIDSet, binaryLogs []string, ...) (binaryLogsToBackup []string, incrementalBackupFromGTID string, ...)
- func ConcurrentMap(concurrency, n int, fun MapFunc) error
- func CreateMysqldAndMycnf(tabletUID uint32, mysqlSocket string, mysqlPort int32) (*Mysqld, *Mycnf, error)
- func DefaultTabletDirAtRoot(dataRoot string, uid uint32) string
- func FindReplicas(mysqld MysqlDaemon) ([]string, error)
- func GenerateInitialBinlogEntry() string
- func GetBackupDir(keyspace, shard string) string
- func GetColumns(dbName, table string, exec func(string, int, bool) (*sqltypes.Result, error)) ([]*querypb.Field, []string, error)
- func GetColumnsList(dbName, tableName string, ...) (string, error)
- func GetPermissions(mysqld MysqlDaemon) (*tabletmanagerdatapb.Permissions, error)
- func GetVersionFromEnv() (flavor MySQLFlavor, ver ServerVersion, err error)
- func GetVersionString() (string, error)
- func IsValidIncrementalBakcup(baseGTIDSet mysql.GTIDSet, purgedGTIDSet mysql.GTIDSet, ...) bool
- func MycnfFile(uid uint32) string
- func OpenMysqldAndMycnf(tabletUID uint32) (*Mysqld, *Mycnf, error)
- func ParseBackupName(dir string, name string) (backupTime *time.Time, alias *topodatapb.TabletAlias, err error)
- func ParseVersionString(version string) (flavor MySQLFlavor, ver ServerVersion, err error)
- func PopulateReparentJournal(timeCreatedNS int64, actionName, primaryAlias string, pos mysql.Position) string
- func RegisterFlags()
- func ResolveTables(ctx context.Context, mysqld MysqlDaemon, dbName string, tables []string) ([]string, error)
- func RestoreWasInterrupted(cnf *Mycnf) bool
- func ShouldRestore(ctx context.Context, params RestoreParams) (bool, error)
- func TabletDir(uid uint32) string
- func TopLevelDirs() []string
- func WaitForReplicationStart(mysqld MysqlDaemon, replicaStartDeadline int) error
- type BackupEngine
- type BackupManifest
- func FindLatestSuccessfulBackup(ctx context.Context, logger logutil.Logger, bhs []backupstorage.BackupHandle) (backupstorage.BackupHandle, *BackupManifest, error)
- func FindPITRPath(restoreToGTIDSet mysql.GTIDSet, manifests [](*BackupManifest)) (shortestPath [](*BackupManifest), err error)
- func GetBackupManifest(ctx context.Context, backup backupstorage.BackupHandle) (*BackupManifest, error)
- func Restore(ctx context.Context, params RestoreParams) (*BackupManifest, error)
- type BackupManifestPath
- type BackupParams
- type BackupRestoreEngine
- type BuiltinBackupEngine
- func (be *BuiltinBackupEngine) ExecuteBackup(ctx context.Context, params BackupParams, bh backupstorage.BackupHandle) (bool, error)
- func (be *BuiltinBackupEngine) ExecuteRestore(ctx context.Context, params RestoreParams, bh backupstorage.BackupHandle) (*BackupManifest, error)
- func (be *BuiltinBackupEngine) ShouldDrainForBackup() bool
- type EmptyColumnsErr
- type FileEntry
- type ManifestHandleMap
- type MapFunc
- type MySQLFlavor
- type Mycnf
- type MysqlDaemon
- type Mysqld
- func (mysqld *Mysqld) ApplySchemaChange(ctx context.Context, dbName string, change *tmutils.SchemaChange) (*tabletmanagerdatapb.SchemaChangeResult, error)
- func (mysqld *Mysqld) BinaryHasDisableRedoLog() bool
- func (mysqld *Mysqld) Close()
- func (mysqld *Mysqld) DisableBinlogPlayback() error
- func (mysqld *Mysqld) DisableRedoLog(ctx context.Context) error
- func (mysqld *Mysqld) EnableBinlogPlayback() error
- func (mysqld *Mysqld) EnableRedoLog(ctx context.Context) error
- func (mysqld *Mysqld) ExecuteSuperQuery(ctx context.Context, query string) error
- func (mysqld *Mysqld) ExecuteSuperQueryList(ctx context.Context, queryList []string) error
- func (mysqld *Mysqld) FetchSuperQuery(ctx context.Context, query string) (*sqltypes.Result, error)
- func (mysqld *Mysqld) FlushBinaryLogs(ctx context.Context) (err error)
- func (mysqld *Mysqld) GetAllPrivsConnection(ctx context.Context) (*dbconnpool.DBConnection, error)
- func (mysqld *Mysqld) GetAppConnection(ctx context.Context) (*dbconnpool.PooledDBConnection, error)
- func (mysqld *Mysqld) GetBinaryLogs(ctx context.Context) (binaryLogs []string, err error)
- func (mysqld *Mysqld) GetBinlogInformation(ctx context.Context) (string, bool, bool, string, error)
- func (mysqld *Mysqld) GetColumns(ctx context.Context, dbName, table string) ([]*querypb.Field, []string, error)
- func (mysqld *Mysqld) GetDbaConnection(ctx context.Context) (*dbconnpool.DBConnection, error)
- func (mysqld *Mysqld) GetGTIDMode(ctx context.Context) (string, error)
- func (mysqld *Mysqld) GetGTIDPurged(ctx context.Context) (mysql.Position, error)
- func (mysqld *Mysqld) GetMysqlPort() (int32, error)
- func (mysqld *Mysqld) GetPreviousGTIDs(ctx context.Context, binlog string) (previousGtids string, err error)
- func (mysqld *Mysqld) GetPrimaryKeyColumns(ctx context.Context, dbName, table string) ([]string, error)
- func (mysqld *Mysqld) GetPrimaryKeyEquivalentColumns(ctx context.Context, dbName, table string) ([]string, error)
- func (mysqld *Mysqld) GetSchema(ctx context.Context, dbName string, ...) (*tabletmanagerdatapb.SchemaDefinition, error)
- func (mysqld *Mysqld) GetServerID(ctx context.Context) (uint32, error)
- func (mysqld *Mysqld) GetServerUUID(ctx context.Context) (string, error)
- func (mysqld *Mysqld) GetVersionComment(ctx context.Context) string
- func (mysqld *Mysqld) GetVersionString() string
- func (mysqld *Mysqld) Init(ctx context.Context, cnf *Mycnf, initDBSQLFile string) error
- func (mysqld *Mysqld) InitConfig(cnf *Mycnf) error
- func (mysqld *Mysqld) IsReadOnly() (bool, error)
- func (mysqld *Mysqld) OnTerm(f func())
- func (mysqld *Mysqld) PreflightSchemaChange(ctx context.Context, dbName string, changes []string) ([]*tabletmanagerdatapb.SchemaChangeResult, error)
- func (mysqld *Mysqld) PrimaryPosition() (mysql.Position, error)
- func (mysqld *Mysqld) PrimaryStatus(ctx context.Context) (mysql.PrimaryStatus, error)
- func (mysqld *Mysqld) ProcessCanDisableRedoLog(ctx context.Context) (bool, error)
- func (mysqld *Mysqld) Promote(hookExtraEnv map[string]string) (mysql.Position, error)
- func (mysqld *Mysqld) RefreshConfig(ctx context.Context, cnf *Mycnf) error
- func (mysqld *Mysqld) ReinitConfig(ctx context.Context, cnf *Mycnf) error
- func (mysqld *Mysqld) ReplicationStatus() (mysql.ReplicationStatus, error)
- func (mysqld *Mysqld) ResetReplication(ctx context.Context) error
- func (mysqld *Mysqld) ResetReplicationParameters(ctx context.Context) error
- func (mysqld *Mysqld) RestartReplication(hookExtraEnv map[string]string) error
- func (mysqld *Mysqld) RunMysqlUpgrade() error
- func (mysqld *Mysqld) SemiSyncClients() uint32
- func (mysqld *Mysqld) SemiSyncEnabled() (primary, replica bool)
- func (mysqld *Mysqld) SemiSyncExtensionLoaded() (bool, error)
- func (mysqld *Mysqld) SemiSyncReplicationStatus() (bool, error)
- func (mysqld *Mysqld) SemiSyncSettings() (timeout uint64, numReplicas uint32)
- func (mysqld *Mysqld) SemiSyncStatus() (primary, replica bool)
- func (mysqld *Mysqld) SetReadOnly(on bool) error
- func (mysqld *Mysqld) SetReplicationPosition(ctx context.Context, pos mysql.Position) error
- func (mysqld *Mysqld) SetReplicationSource(ctx context.Context, host string, port int, replicationStopBefore bool, ...) error
- func (mysqld *Mysqld) SetSemiSyncEnabled(primary, replica bool) error
- func (mysqld *Mysqld) SetSuperReadOnly(on bool) error
- func (mysqld *Mysqld) Shutdown(ctx context.Context, cnf *Mycnf, waitForMysqld bool) error
- func (mysqld *Mysqld) Start(ctx context.Context, cnf *Mycnf, mysqldArgs ...string) error
- func (mysqld *Mysqld) StartReplication(hookExtraEnv map[string]string) error
- func (mysqld *Mysqld) StartReplicationUntilAfter(ctx context.Context, targetPos mysql.Position) error
- func (mysqld *Mysqld) StartSQLThreadUntilAfter(ctx context.Context, targetPos mysql.Position) error
- func (mysqld *Mysqld) StopIOThread(ctx context.Context) error
- func (mysqld *Mysqld) StopReplication(hookExtraEnv map[string]string) error
- func (mysqld *Mysqld) StopSQLThread(ctx context.Context) error
- func (mysqld *Mysqld) Teardown(ctx context.Context, cnf *Mycnf, force bool) error
- func (mysqld *Mysqld) Wait(ctx context.Context, cnf *Mycnf) error
- func (mysqld *Mysqld) WaitForReparentJournal(ctx context.Context, timeCreatedNS int64) error
- func (mysqld *Mysqld) WaitSourcePos(ctx context.Context, targetPos mysql.Position) error
- type RestoreEngine
- type RestoreParams
- type RestorePath
- type ServerVersion
- type XtrabackupEngine
- func (be *XtrabackupEngine) ExecuteBackup(ctx context.Context, params BackupParams, bh backupstorage.BackupHandle) (complete bool, finalErr error)
- func (be *XtrabackupEngine) ExecuteRestore(ctx context.Context, params RestoreParams, bh backupstorage.BackupHandle) (*BackupManifest, error)
- func (be *XtrabackupEngine) ShouldDrainForBackup() bool
Constants ¶
const ( // RestoreState is the name of the sentinel file used to detect whether a previous restore // terminated abnormally RestoreState = "restore_in_progress" // BackupTimestampFormat is the format in which we save BackupTime and FinishedTime BackupTimestampFormat = "2006-01-02.150405" )
const ( PgzipCompressor = "pgzip" PargzipCompressor = "pargzip" ZstdCompressor = "zstd" Lz4Compressor = "lz4" ExternalCompressor = "external" )
const ( GetColumnNamesQuery = `` /* 141-byte string literal not displayed */ GetFieldsQuery = "SELECT %s FROM %s WHERE 1 != 1" )
Variables ¶
var ( // ErrNoBackup is returned when there is no backup. ErrNoBackup = errors.New("no available backup") // ErrNoCompleteBackup is returned when there is at least one backup, // but none of them are complete. ErrNoCompleteBackup = errors.New("backup(s) found but none are complete") )
var ( // CompressionEngineName specifies which compressor/decompressor to use CompressionEngineName = "pargzip" // ExternalCompressorCmd / ExternalDecompressorCmd specify the external commands compress/decompress the backups ExternalCompressorCmd string ExternalCompressorExt string ExternalDecompressorCmd string )
var ( // DisableActiveReparents is a flag to disable active // reparents for safety reasons. It is used in three places: // 1. in this file to skip registering the commands. // 2. in vtctld so it can be exported to the UI (different // package, that's why it's exported). That way we can disable // menu items there, using features. DisableActiveReparents bool // DbaIdleTimeout is how often we will refresh the DBA connpool connections DbaIdleTimeout = time.Minute // PoolDynamicHostnameResolution is whether we should retry DNS resolution of hostname targets // and reconnect if necessary PoolDynamicHostnameResolution time.Duration )
var BackupRestoreEngineMap = make(map[string]BackupRestoreEngine)
BackupRestoreEngineMap contains the registered implementations for BackupEngine and RestoreEngine.
var ( // BuiltinBackupMysqldTimeout is how long ExecuteBackup should wait for response from mysqld.Shutdown. // It can later be extended for other calls to mysqld during backup functions. // Exported for testing. BuiltinBackupMysqldTimeout = 10 * time.Minute )
Functions ¶
func Backup ¶
func Backup(ctx context.Context, params BackupParams) error
Backup is the main entry point for a backup: - uses the BackupStorage service to store a new backup - shuts down Mysqld during the backup - remember if we were replicating, restore the exact same state
func ChooseBinlogsForIncrementalBackup ¶ added in v0.16.0
func ChooseBinlogsForIncrementalBackup( ctx context.Context, lookFromGTIDSet mysql.GTIDSet, binaryLogs []string, pgtids func(ctx context.Context, binlog string) (gtids string, err error), unionPreviousGTIDs bool, ) ( binaryLogsToBackup []string, incrementalBackupFromGTID string, incrementalBackupToGTID string, err error, )
ChooseBinlogsForIncrementalBackup chooses which binary logs need to be backed up in an incremental backup, given a list of known binary logs, a function that returns the "Previous GTIDs" per binary log, and a position from which to backup (normally the position of last known backup) The function returns an error if the request could not be fulfilled: whether backup is not at all possible, or is empty.
func ConcurrentMap ¶
ConcurrentMap applies fun in a concurrent manner on integers from 0 to n-1 (they are assumed to be indexes of some slice containing items to be processed). The first error returned by a fun application will returned (subsequent errors will only be logged). It will use concurrency goroutines.
func CreateMysqldAndMycnf ¶
func CreateMysqldAndMycnf(tabletUID uint32, mysqlSocket string, mysqlPort int32) (*Mysqld, *Mycnf, error)
CreateMysqldAndMycnf returns a Mysqld and a Mycnf object to use for working with a MySQL installation that hasn't been set up yet.
func DefaultTabletDirAtRoot ¶ added in v0.10.0
DefaultTabletDirAtRoot returns the default directory for a tablet given a UID and a VtDataRoot variable
func FindReplicas ¶
func FindReplicas(mysqld MysqlDaemon) ([]string, error)
FindReplicas gets IP addresses for all currently connected replicas.
func GenerateInitialBinlogEntry ¶ added in v0.16.0
func GenerateInitialBinlogEntry() string
GenerateInitialBinlogEntry is used to create a binlog entry when a primary comes up and we need to get a MySQL position so that we can set it as the starting position for replicas to do MySQL Replication from.
func GetBackupDir ¶
GetBackupDir returns the directory where backups for the given keyspace/shard are (or will be) stored
func GetColumns ¶ added in v0.14.0
func GetColumnsList ¶ added in v0.14.0
func GetColumnsList(dbName, tableName string, exec func(string, int, bool) (*sqltypes.Result, error)) (string, error)
GetColumnsList returns the column names for a given table/view, using a query generating function. Returned values: - selectColumns: a string of comma delimited qualified names to be used in a SELECT query. e.g. "`id`, `name`, `val`" - err: error
func GetPermissions ¶
func GetPermissions(mysqld MysqlDaemon) (*tabletmanagerdatapb.Permissions, error)
GetPermissions lists the permissions on the mysqld. The rows are sorted in primary key order to help with comparing permissions between tablets.
func GetVersionFromEnv ¶ added in v0.8.0
func GetVersionFromEnv() (flavor MySQLFlavor, ver ServerVersion, err error)
GetVersionFromEnv returns the flavor and an assumed version based on the legacy MYSQL_FLAVOR environment variable.
The assumed version may not be accurate since the legacy variable only specifies broad families of compatible versions. However, the differences between those versions should only matter if Vitess is managing the lifecycle of mysqld, in which case we should have a local copy of the mysqld binary from which we can fetch the accurate version instead of falling back to this function (see GetVersionString).
func GetVersionString ¶ added in v0.8.0
GetVersionString runs mysqld --version and returns its output as a string
func IsValidIncrementalBakcup ¶ added in v0.16.0
func IsValidIncrementalBakcup(baseGTIDSet mysql.GTIDSet, purgedGTIDSet mysql.GTIDSet, manifest *BackupManifest) bool
IsValidIncrementalBakcup determines whether the given manifest can be used to extend a backup based on baseGTIDSet. The manifest must be able to pick up from baseGTIDSet, and must extend it by at least one entry.
func OpenMysqldAndMycnf ¶
OpenMysqldAndMycnf returns a Mysqld and a Mycnf object to use for working with a MySQL installation that already exists. The Mycnf will be built based on the my.cnf file of the MySQL instance.
func ParseBackupName ¶ added in v0.11.0
func ParseBackupName(dir string, name string) (backupTime *time.Time, alias *topodatapb.TabletAlias, err error)
ParseBackupName parses the backup name for a given dir/name, according to the format generated by mysqlctl.Backup. An error is returned only if the backup name does not have the expected number of parts; errors parsing the timestamp and tablet alias are logged, and a nil value is returned for those fields in case of error.
func ParseVersionString ¶ added in v0.8.0
func ParseVersionString(version string) (flavor MySQLFlavor, ver ServerVersion, err error)
ParseVersionString parses the output of mysqld --version into a flavor and version
func PopulateReparentJournal ¶
func PopulateReparentJournal(timeCreatedNS int64, actionName, primaryAlias string, pos mysql.Position) string
PopulateReparentJournal returns the SQL command to use to populate the _vt.reparent_journal table, as well as the time_created_ns value used.
func RegisterFlags ¶
func RegisterFlags()
RegisterFlags registers the command line flags for specifying the values of a mycnf config file. See NewMycnfFromFlags to get the supported modes.
func ResolveTables ¶
func ResolveTables(ctx context.Context, mysqld MysqlDaemon, dbName string, tables []string) ([]string, error)
ResolveTables returns a list of actual tables+views matching a list of regexps
func RestoreWasInterrupted ¶
RestoreWasInterrupted tells us whether a previous restore was interrupted and we are now retrying it
func ShouldRestore ¶ added in v0.8.0
func ShouldRestore(ctx context.Context, params RestoreParams) (bool, error)
ShouldRestore checks whether a database with tables already exists and returns whether a restore action should be performed
func TopLevelDirs ¶
func TopLevelDirs() []string
TopLevelDirs returns the list of directories in the toplevel tablet directory that might be located in a different place.
func WaitForReplicationStart ¶
func WaitForReplicationStart(mysqld MysqlDaemon, replicaStartDeadline int) error
WaitForReplicationStart waits until the deadline for replication to start. This validates the current primary is correct and can be connected to.
Types ¶
type BackupEngine ¶
type BackupEngine interface { ExecuteBackup(ctx context.Context, params BackupParams, bh backupstorage.BackupHandle) (bool, error) ShouldDrainForBackup() bool }
BackupEngine is the interface to take a backup with a given engine.
func GetBackupEngine ¶
func GetBackupEngine() (BackupEngine, error)
GetBackupEngine returns the BackupEngine implementation that should be used to create new backups.
To restore a backup, you should instead get the appropriate RestoreEngine for a particular backup by calling GetRestoreEngine().
This must only be called after flags have been parsed.
type BackupManifest ¶
type BackupManifest struct { // BackupMethod is the name of the backup engine that created this backup. // If this is empty, the backup engine is assumed to be "builtin" since that // was the only engine that ever left this field empty. All new backup // engines are required to set this field to the backup engine name. BackupMethod string // Position is the replication position at which the backup was taken. Position mysql.Position // PurgedPosition stands for purged GTIDs, information that is necessary for PITR recovery. This is specific to MySQL56 PurgedPosition mysql.Position // FromPosition is only applicable to incremental backups, and stands for the position from // which incremental changes are backed up. FromPosition mysql.Position // Incremental indicates whether this is an incremental backup Incremental bool // BackupTime is when the backup was taken in UTC time (RFC 3339 format) BackupTime string // FinishedTime is the time (in RFC 3339 format, UTC) at which the backup finished, if known. // Some backups may not set this field if they were created before the field was added. FinishedTime string // ServerUUID identifies the server from which backup was taken ServerUUID string TabletAlias string Keyspace string Shard string }
BackupManifest defines the common fields in the MANIFEST file. All backup engines must include at least these fields. They are free to add their own custom fields by embedding this struct anonymously into their own custom struct, as long as their custom fields don't have conflicting names.
func FindLatestSuccessfulBackup ¶ added in v0.16.0
func FindLatestSuccessfulBackup(ctx context.Context, logger logutil.Logger, bhs []backupstorage.BackupHandle) (backupstorage.BackupHandle, *BackupManifest, error)
FindLatestSuccessfulBackup returns the handle and manifest for the last good backup, which can be either full or increment
func FindPITRPath ¶ added in v0.16.0
func FindPITRPath(restoreToGTIDSet mysql.GTIDSet, manifests [](*BackupManifest)) (shortestPath [](*BackupManifest), err error)
FindPITRPath evaluates the shortest path to recover a restoreToGTIDSet. The past is composed of: - a full backup, followed by: - zero or more incremental backups The path ends with restoreToGTIDSet or goes beyond it. No shorter path will do the same. The function returns an error when a path cannot be found.
func GetBackupManifest ¶
func GetBackupManifest(ctx context.Context, backup backupstorage.BackupHandle) (*BackupManifest, error)
GetBackupManifest returns the common fields of the MANIFEST file for a given backup.
func Restore ¶
func Restore(ctx context.Context, params RestoreParams) (*BackupManifest, error)
Restore is the main entry point for backup restore. If there is no appropriate backup on the BackupStorage, Restore logs an error and returns ErrNoBackup. Any other error is returned.
func (*BackupManifest) HashKey ¶ added in v0.16.0
func (m *BackupManifest) HashKey() string
type BackupManifestPath ¶ added in v0.16.0
type BackupManifestPath []*BackupManifest
func (*BackupManifestPath) String ¶ added in v0.16.0
func (p *BackupManifestPath) String() string
type BackupParams ¶
type BackupParams struct { Cnf *Mycnf Mysqld MysqlDaemon Logger logutil.Logger // Concurrency is the value of -concurrency flag given to Backup command // It determines how many files are processed in parallel Concurrency int // Extra env variables used while stopping and starting mysqld HookExtraEnv map[string]string // TopoServer, Keyspace and Shard are used to discover primary tablet TopoServer *topo.Server // Keyspace and Shard are used to infer the directory where backups should be stored Keyspace string Shard string // TabletAlias is used along with backupTime to construct the backup name TabletAlias string // BackupTime is the time at which the backup is being started BackupTime time.Time // Position of last known backup. If non empty, then this value indicates the backup should be incremental // and as of this position IncrementalFromPos string }
BackupParams is the struct that holds all params passed to ExecuteBackup
type BackupRestoreEngine ¶
type BackupRestoreEngine interface { BackupEngine RestoreEngine }
BackupRestoreEngine is a combination of BackupEngine and RestoreEngine.
type BuiltinBackupEngine ¶
type BuiltinBackupEngine struct { }
BuiltinBackupEngine encapsulates the logic of the builtin engine it implements the BackupEngine interface and contains all the logic required to implement a backup/restore by copying files from and to the correct location / storage bucket
func (*BuiltinBackupEngine) ExecuteBackup ¶
func (be *BuiltinBackupEngine) ExecuteBackup(ctx context.Context, params BackupParams, bh backupstorage.BackupHandle) (bool, error)
ExecuteBackup runs a backup based on given params. This could be a full or incremental backup. The function returns a boolean that indicates if the backup is usable, and an overall error.
func (*BuiltinBackupEngine) ExecuteRestore ¶
func (be *BuiltinBackupEngine) ExecuteRestore(ctx context.Context, params RestoreParams, bh backupstorage.BackupHandle) (*BackupManifest, error)
ExecuteRestore restores from a backup. If the restore is successful we return the position from which replication should start otherwise an error is returned
func (*BuiltinBackupEngine) ShouldDrainForBackup ¶
func (be *BuiltinBackupEngine) ShouldDrainForBackup() bool
ShouldDrainForBackup satisfies the BackupEngine interface backup requires query service to be stopped, hence true
type EmptyColumnsErr ¶ added in v0.15.4
type EmptyColumnsErr struct {
// contains filtered or unexported fields
}
func (EmptyColumnsErr) Error ¶ added in v0.15.4
func (e EmptyColumnsErr) Error() string
type FileEntry ¶
type FileEntry struct { // Base is one of: // - backupInnodbDataHomeDir for files that go into Mycnf.InnodbDataHomeDir // - backupInnodbLogGroupHomeDir for files that go into Mycnf.InnodbLogGroupHomeDir // - binLogDir for files that go in the binlog dir (base path of Mycnf.BinLogPath) // - backupData for files that go into Mycnf.DataDir Base string // Name is the file name, relative to Base Name string // Hash is the hash of the final data (transformed and // compressed if specified) stored in the BackupStorage. Hash string // ParentPath is an optional prefix to the Base path. If empty, it is ignored. Useful // for writing files in a temporary directory ParentPath string }
FileEntry is one file to backup
type ManifestHandleMap ¶ added in v0.16.0
type ManifestHandleMap struct {
// contains filtered or unexported fields
}
ManifestHandleMap is a utility container to map manifests to handles, making it possible to search for, and iterate, handles based on manifests.
func NewManifestHandleMap ¶ added in v0.16.0
func NewManifestHandleMap() *ManifestHandleMap
func (*ManifestHandleMap) Handle ¶ added in v0.16.0
func (m *ManifestHandleMap) Handle(manifest *BackupManifest) (handle backupstorage.BackupHandle)
Handle returns the backup handles assigned to given manifest
func (*ManifestHandleMap) Handles ¶ added in v0.16.0
func (m *ManifestHandleMap) Handles(manifests []*BackupManifest) (handles []backupstorage.BackupHandle)
Handles returns an ordered list of handles, by given list of manifests
func (*ManifestHandleMap) Map ¶ added in v0.16.0
func (m *ManifestHandleMap) Map(manifest *BackupManifest, handle backupstorage.BackupHandle)
Map assigns a handle to a manifest
type MySQLFlavor ¶ added in v0.14.0
type MySQLFlavor string
const ( FlavorMySQL MySQLFlavor = "mysql" FlavorPercona MySQLFlavor = "percona" FlavorMariaDB MySQLFlavor = "mariadb" )
Flavor constants define the type of mysql flavor being used
type Mycnf ¶
type Mycnf struct { // ServerID is the unique id for this server. // Used to create a bunch of named directories. ServerID uint32 // MysqlPort is the port for the MySQL server running on this machine. // It is mainly used to communicate with topology server. MysqlPort int32 // DataDir is where the table files are // (used by vt software for Clone) DataDir string // InnodbDataHomeDir is the data directory for innodb. // (used by vt software for Clone) InnodbDataHomeDir string // InnodbLogGroupHomeDir is the logs directory for innodb. // (used by vt software for Clone) InnodbLogGroupHomeDir string // SecureFilePriv is the path for loading secure files // (used by vt software for bulk loading into tablet instances) SecureFilePriv string // SocketFile is the path to the local mysql.sock file. // (used by vt software to check server is running) SocketFile string // GeneralLogPath is the path to store general logs at, // if general-log is enabled. // (unused by vt software for now) GeneralLogPath string // ErrorLogPath is the path to store error logs at. // (unused by vt software for now) ErrorLogPath string // SlowLogPath is the slow query log path // (unused by vt software for now) SlowLogPath string // RelayLogPath is the path of the relay logs // (unused by vt software for now) RelayLogPath string // RelayLogIndexPath is the file name for the relay log index // (unused by vt software for now) RelayLogIndexPath string // RelayLogInfoPath is the file name for the relay log info file // (unused by vt software for now) RelayLogInfoPath string // BinLogPath is the base path for binlogs // (used by vt software for binlog streaming) BinLogPath string // MasterInfoFile is the master.info file location. // Unused when vitess manages mysql config because we set // master_info_repository = TABLE and // relay_log_info_repository = TABLE // However it is possible to use custom cnf files with vitess // and to generate them using command-line flags, so we allow a way to set this property MasterInfoFile string // PidFile is the mysql.pid file location // (used by vt software to check server is running) PidFile string // TmpDir is where to create temporary tables // (unused by vt software for now) TmpDir string Path string // the actual path that represents this mycnf // contains filtered or unexported fields }
Mycnf is a memory structure that contains a bunch of interesting parameters to start mysqld. It can be used to generate standard my.cnf files from a server id and mysql port. It can also be populated from an existing my.cnf, or by command line parameters.
func NewMycnf ¶
NewMycnf fills the Mycnf structure with vt root paths and derived values. This is used to fill out the cnfTemplate values and generate my.cnf. uid is a unique id for a particular tablet - it must be unique within the tabletservers deployed within a keyspace, lest there be collisions on disk. mysqldPort needs to be unique per instance per machine.
func NewMycnfFromFlags ¶
NewMycnfFromFlags creates a Mycnf object from the command line flags.
Multiple modes are supported:
- at least mycnf_server_id is set on the command line --> then we read all parameters from the command line, and not from any my.cnf file.
- mycnf_server_id is not passed in, but mycnf-file is passed in --> then we read that mycnf file
- mycnf_server_id and mycnf-file are not passed in: --> then we use the default location of the my.cnf file for the provided uid and read that my.cnf file.
RegisterCommandLineFlags should have been called before calling this, otherwise we'll panic.
func ReadMycnf ¶
ReadMycnf will read an existing my.cnf from disk, and update the passed in Mycnf object with values from the my.cnf on disk.
func (*Mycnf) RandomizeMysqlServerID ¶
RandomizeMysqlServerID generates a random MySQL server_id.
The value assigned to ServerID will be in the range [100, 2^31): - It avoids 0 because that's reserved for mysqlbinlog dumps. - It also avoids 1-99 because low numbers are used for fake connections. See NewBinlogConnection() in binlog/binlog_connection.go for more on that. - It avoids the 2^31 - 2^32-1 range, as there seems to be some confusion there. The main MySQL documentation at: http://dev.mysql.com/doc/refman/5.7/en/replication-options.html implies serverID is a full 32 bits number. The semi-sync log line at startup '[Note] Start semi-sync binlog_dump to slave ...' interprets the server_id as signed 32-bit (shows negative numbers for that range). Such an ID may also be responsible for a mysqld crash in semi-sync code, although we haven't been able to verify that yet. The issue for that is: https://github.com/vitessio/vitess/issues/2280
type MysqlDaemon ¶
type MysqlDaemon interface { // methods related to mysql running or not Start(ctx context.Context, cnf *Mycnf, mysqldArgs ...string) error Shutdown(ctx context.Context, cnf *Mycnf, waitForMysqld bool) error RunMysqlUpgrade() error ReinitConfig(ctx context.Context, cnf *Mycnf) error Wait(ctx context.Context, cnf *Mycnf) error // GetMysqlPort returns the current port mysql is listening on. GetMysqlPort() (int32, error) // GetServerID returns the servers ID. GetServerID(ctx context.Context) (uint32, error) // GetServerUUID returns the servers UUID GetServerUUID(ctx context.Context) (string, error) // replication related methods StartReplication(hookExtraEnv map[string]string) error RestartReplication(hookExtraEnv map[string]string) error StartReplicationUntilAfter(ctx context.Context, pos mysql.Position) error StopReplication(hookExtraEnv map[string]string) error StopIOThread(ctx context.Context) error ReplicationStatus() (mysql.ReplicationStatus, error) PrimaryStatus(ctx context.Context) (mysql.PrimaryStatus, error) GetGTIDPurged(ctx context.Context) (mysql.Position, error) SetSemiSyncEnabled(source, replica bool) error SemiSyncEnabled() (source, replica bool) SemiSyncExtensionLoaded() (bool, error) SemiSyncStatus() (source, replica bool) SemiSyncClients() (count uint32) SemiSyncSettings() (timeout uint64, numReplicas uint32) SemiSyncReplicationStatus() (bool, error) ResetReplicationParameters(ctx context.Context) error GetBinlogInformation(ctx context.Context) (binlogFormat string, logEnabled bool, logReplicaUpdate bool, binlogRowImage string, err error) GetGTIDMode(ctx context.Context) (gtidMode string, err error) FlushBinaryLogs(ctx context.Context) (err error) GetBinaryLogs(ctx context.Context) (binaryLogs []string, err error) GetPreviousGTIDs(ctx context.Context, binlog string) (previousGtids string, err error) // reparenting related methods ResetReplication(ctx context.Context) error PrimaryPosition() (mysql.Position, error) IsReadOnly() (bool, error) SetReadOnly(on bool) error SetSuperReadOnly(on bool) error SetReplicationPosition(ctx context.Context, pos mysql.Position) error SetReplicationSource(ctx context.Context, host string, port int, stopReplicationBefore bool, startReplicationAfter bool) error WaitForReparentJournal(ctx context.Context, timeCreatedNS int64) error WaitSourcePos(context.Context, mysql.Position) error // Promote makes the current server the primary. It will not change // the read_only state of the server. Promote(map[string]string) (mysql.Position, error) // Schema related methods GetSchema(ctx context.Context, dbName string, request *tabletmanagerdatapb.GetSchemaRequest) (*tabletmanagerdatapb.SchemaDefinition, error) GetColumns(ctx context.Context, dbName, table string) ([]*querypb.Field, []string, error) GetPrimaryKeyColumns(ctx context.Context, dbName, table string) ([]string, error) GetPrimaryKeyEquivalentColumns(ctx context.Context, dbName, table string) ([]string, error) PreflightSchemaChange(ctx context.Context, dbName string, changes []string) ([]*tabletmanagerdatapb.SchemaChangeResult, error) ApplySchemaChange(ctx context.Context, dbName string, change *tmutils.SchemaChange) (*tabletmanagerdatapb.SchemaChangeResult, error) // GetAppConnection returns a app connection to be able to talk to the database. GetAppConnection(ctx context.Context) (*dbconnpool.PooledDBConnection, error) // GetDbaConnection returns a dba connection. GetDbaConnection(ctx context.Context) (*dbconnpool.DBConnection, error) // GetAllPrivsConnection returns an allprivs connection (for user with all privileges except SUPER). GetAllPrivsConnection(ctx context.Context) (*dbconnpool.DBConnection, error) // GetVersionString returns the database version as a string GetVersionString() string // GetVersionComment returns the version comment GetVersionComment(ctx context.Context) string // ExecuteSuperQueryList executes a list of queries, no result ExecuteSuperQueryList(ctx context.Context, queryList []string) error // FetchSuperQuery executes one query, returns the result FetchSuperQuery(ctx context.Context, query string) (*sqltypes.Result, error) // EnableBinlogPlayback enables playback of binlog events EnableBinlogPlayback() error // DisableBinlogPlayback disable playback of binlog events DisableBinlogPlayback() error // Close will close this instance of Mysqld. It will wait for all dba // queries to be finished. Close() }
MysqlDaemon is the interface we use for abstracting Mysqld.
type Mysqld ¶
type Mysqld struct {
// contains filtered or unexported fields
}
Mysqld is the object that represents a mysqld daemon running on this server.
func NewMysqld ¶
NewMysqld creates a Mysqld object based on the provided configuration and connection parameters.
func (*Mysqld) ApplySchemaChange ¶
func (mysqld *Mysqld) ApplySchemaChange(ctx context.Context, dbName string, change *tmutils.SchemaChange) (*tabletmanagerdatapb.SchemaChangeResult, error)
ApplySchemaChange will apply the schema change to the given database.
func (*Mysqld) BinaryHasDisableRedoLog ¶ added in v0.16.0
func (*Mysqld) Close ¶
func (mysqld *Mysqld) Close()
Close will close this instance of Mysqld. It will wait for all dba queries to be finished.
func (*Mysqld) DisableBinlogPlayback ¶
DisableBinlogPlayback returns the server to the normal state after streaming. Whatever it does for a given flavor, it must be idempotent.
func (*Mysqld) DisableRedoLog ¶ added in v0.16.0
func (*Mysqld) EnableBinlogPlayback ¶
EnableBinlogPlayback prepares the server to play back events from a binlog stream. Whatever it does for a given flavor, it must be idempotent.
func (*Mysqld) EnableRedoLog ¶ added in v0.16.0
func (*Mysqld) ExecuteSuperQuery ¶
ExecuteSuperQuery allows the user to execute a query as a super user.
func (*Mysqld) ExecuteSuperQueryList ¶
ExecuteSuperQueryList alows the user to execute queries as a super user.
func (*Mysqld) FetchSuperQuery ¶
FetchSuperQuery returns the results of executing a query as a super user.
func (*Mysqld) FlushBinaryLogs ¶ added in v0.16.0
FlushBinaryLogs is part of the MysqlDaemon interface.
func (*Mysqld) GetAllPrivsConnection ¶
func (mysqld *Mysqld) GetAllPrivsConnection(ctx context.Context) (*dbconnpool.DBConnection, error)
GetAllPrivsConnection creates a new DBConnection.
func (*Mysqld) GetAppConnection ¶
func (mysqld *Mysqld) GetAppConnection(ctx context.Context) (*dbconnpool.PooledDBConnection, error)
GetAppConnection returns a connection from the app pool. Recycle needs to be called on the result.
func (*Mysqld) GetBinaryLogs ¶ added in v0.16.0
GetBinaryLogs is part of the MysqlDaemon interface.
func (*Mysqld) GetBinlogInformation ¶ added in v0.14.0
GetBinlogInformation gets the binlog format, whether binlog is enabled and if updates on replica logging is enabled.
func (*Mysqld) GetColumns ¶
func (mysqld *Mysqld) GetColumns(ctx context.Context, dbName, table string) ([]*querypb.Field, []string, error)
GetColumns returns the columns of table.
func (*Mysqld) GetDbaConnection ¶
func (mysqld *Mysqld) GetDbaConnection(ctx context.Context) (*dbconnpool.DBConnection, error)
GetDbaConnection creates a new DBConnection.
func (*Mysqld) GetGTIDMode ¶ added in v0.14.0
GetGTIDMode gets the GTID mode for the server
func (*Mysqld) GetGTIDPurged ¶ added in v0.14.0
GetGTIDPurged returns the gtid purged statuses
func (*Mysqld) GetMysqlPort ¶
GetMysqlPort returns mysql port
func (*Mysqld) GetPreviousGTIDs ¶ added in v0.16.0
func (mysqld *Mysqld) GetPreviousGTIDs(ctx context.Context, binlog string) (previousGtids string, err error)
GetPreviousGTIDs is part of the MysqlDaemon interface.
func (*Mysqld) GetPrimaryKeyColumns ¶
func (mysqld *Mysqld) GetPrimaryKeyColumns(ctx context.Context, dbName, table string) ([]string, error)
GetPrimaryKeyColumns returns the primary key columns of table.
func (*Mysqld) GetPrimaryKeyEquivalentColumns ¶ added in v0.14.0
func (mysqld *Mysqld) GetPrimaryKeyEquivalentColumns(ctx context.Context, dbName, table string) ([]string, error)
GetPrimaryKeyEquivalentColumns can be used if the table has no defined PRIMARY KEY. It will return the columns in a viable PRIMARY KEY equivalent (PKE) -- a NON-NULL UNIQUE KEY -- in the specified table. When multiple PKE indexes are available it will attempt to choose the most efficient one based on the column data types and the number of columns in the index. See here for the data type storage sizes:
https://dev.mysql.com/doc/refman/en/storage-requirements.html
If this function is used on a table that DOES have a defined PRIMARY KEY then it may return the columns for that index if it is likely the most efficient one amongst the available PKE indexes on the table.
func (*Mysqld) GetSchema ¶
func (mysqld *Mysqld) GetSchema(ctx context.Context, dbName string, request *tabletmanagerdatapb.GetSchemaRequest) (*tabletmanagerdatapb.SchemaDefinition, error)
GetSchema returns the schema for database for tables listed in tables. If tables is empty, return the schema for all tables.
func (*Mysqld) GetServerID ¶ added in v0.14.0
GetServerID returns mysql server id
func (*Mysqld) GetServerUUID ¶ added in v0.14.0
GetServerUUID returns mysql server uuid
func (*Mysqld) GetVersionComment ¶ added in v0.14.0
GetVersionComment gets the version comment.
func (*Mysqld) GetVersionString ¶ added in v0.12.1
GetVersionString is part of the MysqlDeamon interface.
func (*Mysqld) Init ¶
Init will create the default directory structure for the mysqld process, generate / configure a my.cnf file install a skeleton database, and apply the provided initial SQL file.
func (*Mysqld) InitConfig ¶
InitConfig will create the default directory structure for the mysqld process, generate / configure a my.cnf file.
func (*Mysqld) IsReadOnly ¶
IsReadOnly return true if the instance is read only
func (*Mysqld) OnTerm ¶
func (mysqld *Mysqld) OnTerm(f func())
OnTerm registers a function to be called if mysqld terminates for any reason other than a call to Mysqld.Shutdown(). This only works if mysqld was actually started by calling Start() on this Mysqld instance.
func (*Mysqld) PreflightSchemaChange ¶
func (mysqld *Mysqld) PreflightSchemaChange(ctx context.Context, dbName string, changes []string) ([]*tabletmanagerdatapb.SchemaChangeResult, error)
PreflightSchemaChange checks the schema changes in "changes" by applying them to an intermediate database that has the same schema as the target database.
func (*Mysqld) PrimaryPosition ¶ added in v0.11.0
PrimaryPosition returns the primary replication position.
func (*Mysqld) PrimaryStatus ¶ added in v0.11.0
PrimaryStatus returns the primary replication statuses
func (*Mysqld) ProcessCanDisableRedoLog ¶ added in v0.16.0
func (*Mysqld) RefreshConfig ¶
RefreshConfig attempts to recreate the my.cnf from templates, and log and swap in to place if it's updated. It keeps a copy of the last version in case fallback is required. Should be called from a stable replica, server_id is not regenerated.
func (*Mysqld) ReinitConfig ¶
ReinitConfig updates the config file as if Mysqld is initializing. At the moment it only randomizes ServerID because it's not safe to restore a replica from a backup and then give it the same ServerID as before, MySQL can then skip transactions in the replication stream with the same server_id.
func (*Mysqld) ReplicationStatus ¶
func (mysqld *Mysqld) ReplicationStatus() (mysql.ReplicationStatus, error)
ReplicationStatus returns the server replication status
func (*Mysqld) ResetReplication ¶
ResetReplication resets all replication for this host.
func (*Mysqld) ResetReplicationParameters ¶ added in v0.14.0
ResetReplicationParameters resets the replica replication parameters for this host.
func (*Mysqld) RestartReplication ¶
RestartReplication stops, resets and starts replication.
func (*Mysqld) RunMysqlUpgrade ¶
RunMysqlUpgrade will run the mysql_upgrade program on the current install. Will be called only when mysqld is running with no network and no grant tables.
func (*Mysqld) SemiSyncClients ¶ added in v0.14.0
SemiSyncClients returns the number of semi-sync clients for the primary.
func (*Mysqld) SemiSyncEnabled ¶
SemiSyncEnabled returns whether semi-sync is enabled for primary or replica. If the semi-sync plugin is not loaded, we assume semi-sync is disabled.
func (*Mysqld) SemiSyncExtensionLoaded ¶ added in v0.15.5
SemiSyncExtensionLoaded returns whether semi-sync plugins are loaded.
func (*Mysqld) SemiSyncReplicationStatus ¶
SemiSyncReplicationStatus returns whether semi-sync is currently used by replication.
func (*Mysqld) SemiSyncSettings ¶ added in v0.14.0
SemiSyncSettings returns the settings of semi-sync which includes the timeout and the number of replicas to wait for.
func (*Mysqld) SemiSyncStatus ¶ added in v0.14.0
SemiSyncStatus returns the current status of semi-sync for primary and replica.
func (*Mysqld) SetReadOnly ¶
SetReadOnly set/unset the read_only flag
func (*Mysqld) SetReplicationPosition ¶
SetReplicationPosition sets the replication position at which the replica will resume when its replication is started.
func (*Mysqld) SetReplicationSource ¶ added in v0.11.0
func (mysqld *Mysqld) SetReplicationSource(ctx context.Context, host string, port int, replicationStopBefore bool, replicationStartAfter bool) error
SetReplicationSource makes the provided host / port the primary. It optionally stops replication before, and starts it after.
func (*Mysqld) SetSemiSyncEnabled ¶
SetSemiSyncEnabled enables or disables semi-sync replication for primary and/or replica mode.
func (*Mysqld) SetSuperReadOnly ¶
SetSuperReadOnly set/unset the super_read_only flag
func (*Mysqld) Shutdown ¶
Shutdown will stop the mysqld daemon that is running in the background.
waitForMysqld: should the function block until mysqld has stopped? This can actually take a *long* time if the buffer cache needs to be fully flushed - on the order of 20-30 minutes.
If a mysqlctld address is provided in a flag, Shutdown will run remotely.
func (*Mysqld) Start ¶
Start will start the mysql daemon, either by running the 'mysqld_start' hook, or by running mysqld_safe in the background. If a mysqlctld address is provided in a flag, Start will run remotely. When waiting for mysqld to start, we will use the dba user.
func (*Mysqld) StartReplication ¶
StartReplication starts replication.
func (*Mysqld) StartReplicationUntilAfter ¶
func (mysqld *Mysqld) StartReplicationUntilAfter(ctx context.Context, targetPos mysql.Position) error
StartReplicationUntilAfter starts replication until replication has come to `targetPos`, then it stops replication
func (*Mysqld) StartSQLThreadUntilAfter ¶ added in v0.13.2
StartSQLThreadUntilAfter starts replication's SQL thread(s) until replication has come to `targetPos`, then it stops it
func (*Mysqld) StopIOThread ¶
StopIOThread stops a replica's IO thread only.
func (*Mysqld) StopReplication ¶
StopReplication stops replication.
func (*Mysqld) StopSQLThread ¶ added in v0.13.2
StopSQLThread stops a replica's SQL thread(s) only.
func (*Mysqld) Wait ¶
Wait returns nil when mysqld is up and accepting connections. It will use the dba credentials to try to connect. Use wait() with different credentials if needed.
func (*Mysqld) WaitForReparentJournal ¶
WaitForReparentJournal will wait until the context is done for the row in the reparent_journal table.
type RestoreEngine ¶
type RestoreEngine interface {
ExecuteRestore(ctx context.Context, params RestoreParams, bh backupstorage.BackupHandle) (*BackupManifest, error)
}
RestoreEngine is the interface to restore a backup with a given engine. Returns the manifest of a backup if successful, otherwise returns an error
func GetRestoreEngine ¶
func GetRestoreEngine(ctx context.Context, backup backupstorage.BackupHandle) (RestoreEngine, error)
GetRestoreEngine returns the RestoreEngine implementation to restore a given backup. It reads the MANIFEST file from the backup to check which engine was used to create it.
type RestoreParams ¶
type RestoreParams struct { Cnf *Mycnf Mysqld MysqlDaemon Logger logutil.Logger // Concurrency is the value of --restore_concurrency flag (init restore parameter) // It determines how many files are processed in parallel Concurrency int // Extra env variables for pre-restore and post-restore transform hooks HookExtraEnv map[string]string // DeleteBeforeRestore tells us whether existing data should be deleted before // restoring. This is always set to false when starting a tablet with -restore_from_backup, // but is set to true when executing a RestoreFromBackup command on an already running vttablet DeleteBeforeRestore bool // DbName is the name of the managed database / schema DbName string // Keyspace and Shard are used to infer the directory where backups are stored Keyspace string Shard string // StartTime: if non-zero, look for a backup that was taken at or before this time // Otherwise, find the most recent backup StartTime time.Time // RestoreToPos hints that a point in time recovery is requested, to recover up to the specific given pos. // When empty, the restore is a normal from full backup RestoreToPos mysql.Position // When DryRun is set, no restore actually takes place; but some of its steps are validated. DryRun bool }
RestoreParams is the struct that holds all params passed to ExecuteRestore
func (*RestoreParams) IsIncrementalRecovery ¶ added in v0.16.0
func (p *RestoreParams) IsIncrementalRecovery() bool
type RestorePath ¶ added in v0.16.0
type RestorePath struct {
// contains filtered or unexported fields
}
RestorePath is an ordered sequence of backup handles & manifests, that can be used to restore from backup. The path could be empty, in which case it's invalid, there's no way to restore. Otherwise, the path consists of exactly one full backup, followed by zero or more incremental backups.
func FindBackupToRestore ¶
func FindBackupToRestore(ctx context.Context, params RestoreParams, bhs []backupstorage.BackupHandle) (*RestorePath, error)
FindBackupToRestore returns a path, a sequence of backup handles, to be restored. The returned handles stand for valid backups with complete manifests.
func (*RestorePath) Add ¶ added in v0.16.0
func (p *RestorePath) Add(m *BackupManifest)
func (*RestorePath) FullBackupHandle ¶ added in v0.16.0
func (p *RestorePath) FullBackupHandle() backupstorage.BackupHandle
FullBackupHandle returns the single (if any) full backup handle, which is always the first handle in the sequence
func (*RestorePath) IncrementalBackupHandles ¶ added in v0.16.0
func (p *RestorePath) IncrementalBackupHandles() []backupstorage.BackupHandle
IncrementalBackupHandles returns an ordered list of backup handles comprising of the incremental (non-full) path
func (*RestorePath) IsEmpty ¶ added in v0.16.0
func (p *RestorePath) IsEmpty() bool
func (*RestorePath) Len ¶ added in v0.16.0
func (p *RestorePath) Len() int
func (*RestorePath) String ¶ added in v0.16.0
func (p *RestorePath) String() string
type ServerVersion ¶ added in v0.14.0
type ServerVersion struct {
Major, Minor, Patch int
}
type XtrabackupEngine ¶
type XtrabackupEngine struct { }
XtrabackupEngine encapsulates the logic of the xtrabackup engine it implements the BackupEngine interface and contains all the logic required to implement a backup/restore by invoking xtrabackup with the appropriate parameters
func (*XtrabackupEngine) ExecuteBackup ¶
func (be *XtrabackupEngine) ExecuteBackup(ctx context.Context, params BackupParams, bh backupstorage.BackupHandle) (complete bool, finalErr error)
ExecuteBackup returns a boolean that indicates if the backup is usable, and an overall error.
func (*XtrabackupEngine) ExecuteRestore ¶
func (be *XtrabackupEngine) ExecuteRestore(ctx context.Context, params RestoreParams, bh backupstorage.BackupHandle) (*BackupManifest, error)
ExecuteRestore restores from a backup. Any error is returned.
func (*XtrabackupEngine) ShouldDrainForBackup ¶
func (be *XtrabackupEngine) ShouldDrainForBackup() bool
ShouldDrainForBackup satisfies the BackupEngine interface xtrabackup can run while tablet is serving, hence false
Source Files
¶
- backup.go
- backupengine.go
- binlogs_gtid.go
- builtinbackupengine.go
- capabilityset.go
- cmd.go
- compression.go
- mycnf.go
- mycnf_flag.go
- mycnf_gen.go
- mysql_daemon.go
- mysqld.go
- permissions.go
- plugin_grpcmysqlctlclient.go
- query.go
- redo_log.go
- reparent.go
- replication.go
- schema.go
- utils.go
- version.go
- xtrabackupengine.go
Directories
¶
Path | Synopsis |
---|---|
Package azblobbackupstorage implements the BackupStorage interface for Azure Blob Storage
|
Package azblobbackupstorage implements the BackupStorage interface for Azure Blob Storage |
Package backupstorage contains the interface and file system implementation of the backup system.
|
Package backupstorage contains the interface and file system implementation of the backup system. |
Package cephbackupstorage implements the BackupStorage interface for Ceph Cloud Storage.
|
Package cephbackupstorage implements the BackupStorage interface for Ceph Cloud Storage. |
Package filebackupstorage implements the BackupStorage interface for a local filesystem (which can be an NFS mount).
|
Package filebackupstorage implements the BackupStorage interface for a local filesystem (which can be an NFS mount). |
Package gcsbackupstorage implements the BackupStorage interface for Google Cloud Storage.
|
Package gcsbackupstorage implements the BackupStorage interface for Google Cloud Storage. |
Package grpcmysqlctlclient contains the gRPC1 version of the mysqlctl client protocol.
|
Package grpcmysqlctlclient contains the gRPC1 version of the mysqlctl client protocol. |
Package grpcmysqlctlserver contains the gRPC implementation of the server side of the remote execution of mysqlctl commands.
|
Package grpcmysqlctlserver contains the gRPC implementation of the server side of the remote execution of mysqlctl commands. |
Package mysqlctlclient contains the generic client side of the remote mysqlctl protocol.
|
Package mysqlctlclient contains the generic client side of the remote mysqlctl protocol. |
Package mysqlctlproto provides utility functions for working with data structures in mysqlctl.proto.
|
Package mysqlctlproto provides utility functions for working with data structures in mysqlctl.proto. |
Package s3backupstorage implements the BackupStorage interface for AWS S3.
|
Package s3backupstorage implements the BackupStorage interface for AWS S3. |
Package tmutils contains helper methods to deal with the tabletmanagerdata proto3 structures.
|
Package tmutils contains helper methods to deal with the tabletmanagerdata proto3 structures. |