Documentation ¶
Index ¶
- Variables
- func Backup(ctx context.Context, cnf *Mycnf, mysqld MysqlDaemon, logger logutil.Logger, ...) error
- func ConcurrentMap(concurrency, n int, fun MapFunc) error
- func CreateMysqldAndMycnf(tabletUID uint32, mysqlSocket string, mysqlPort int32) (*Mysqld, *Mycnf, error)
- func CreateReparentJournal() []string
- func FindSlaves(mysqld MysqlDaemon) ([]string, error)
- func GetPermissions(mysqld MysqlDaemon) (*tabletmanagerdatapb.Permissions, error)
- func MycnfFile(uid uint32) string
- func OpenMysqldAndMycnf(tabletUID uint32) (*Mysqld, *Mycnf, error)
- func PopulateMetadataTables(mysqld MysqlDaemon, localMetadata map[string]string, dbName string) error
- func PopulateReparentJournal(timeCreatedNS int64, actionName, masterAlias string, pos mysql.Position) string
- func RegisterFlags()
- func ResolveTables(mysqld MysqlDaemon, dbName string, tables []string) ([]string, error)
- func Restore(ctx context.Context, cnf *Mycnf, mysqld MysqlDaemon, dir string, ...) (mysql.Position, error)
- func TabletDir(uid uint32) string
- func TopLevelDirs() []string
- func WaitForSlaveStart(mysqld MysqlDaemon, slaveStartDeadline int) error
- type BackupEngine
- type BuiltinBackupEngine
- type FileEntry
- type MapFunc
- type Mycnf
- type MysqlDaemon
- type Mysqld
- func (mysqld *Mysqld) ApplySchemaChange(dbName string, change *tmutils.SchemaChange) (*tabletmanagerdatapb.SchemaChangeResult, error)
- func (mysqld *Mysqld) Close()
- func (mysqld *Mysqld) DemoteMaster() (rp mysql.Position, err error)deprecated
- func (mysqld *Mysqld) DisableBinlogPlayback() error
- func (mysqld *Mysqld) EnableBinlogPlayback() 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) GetAllPrivsConnection() (*dbconnpool.DBConnection, error)
- func (mysqld *Mysqld) GetAppConnection(ctx context.Context) (*dbconnpool.PooledDBConnection, error)
- func (mysqld *Mysqld) GetColumns(dbName, table string) ([]string, error)
- func (mysqld *Mysqld) GetDbaConnection() (*dbconnpool.DBConnection, error)
- func (mysqld *Mysqld) GetMysqlPort() (int32, error)
- func (mysqld *Mysqld) GetPrimaryKeyColumns(dbName, table string) ([]string, error)
- func (mysqld *Mysqld) GetSchema(dbName string, tables, excludeTables []string, includeViews bool) (*tabletmanagerdatapb.SchemaDefinition, error)
- 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) MasterPosition() (mysql.Position, error)
- func (mysqld *Mysqld) OnTerm(f func())
- func (mysqld *Mysqld) PreflightSchemaChange(dbName string, changes []string) ([]*tabletmanagerdatapb.SchemaChangeResult, error)
- func (mysqld *Mysqld) PromoteSlave(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) ResetReplication(ctx context.Context) error
- func (mysqld *Mysqld) RunMysqlUpgrade() error
- func (mysqld *Mysqld) SemiSyncEnabled() (master, slave bool)
- func (mysqld *Mysqld) SemiSyncSlaveStatus() (bool, error)
- func (mysqld *Mysqld) SetMaster(ctx context.Context, masterHost string, masterPort int, slaveStopBefore bool, ...) error
- func (mysqld *Mysqld) SetReadOnly(on bool) error
- func (mysqld *Mysqld) SetSemiSyncEnabled(master, slave bool) error
- func (mysqld *Mysqld) SetSlavePosition(ctx context.Context, pos mysql.Position) error
- func (mysqld *Mysqld) SetSuperReadOnly(on bool) error
- func (mysqld *Mysqld) Shutdown(ctx context.Context, cnf *Mycnf, waitForMysqld bool) error
- func (mysqld *Mysqld) SlaveStatus() (mysql.SlaveStatus, error)
- func (mysqld *Mysqld) Start(ctx context.Context, cnf *Mycnf, mysqldArgs ...string) error
- func (mysqld *Mysqld) StartSlave(hookExtraEnv map[string]string) error
- func (mysqld *Mysqld) StartSlaveUntilAfter(ctx context.Context, targetPos mysql.Position) error
- func (mysqld *Mysqld) StopSlave(hookExtraEnv map[string]string) 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) WaitMasterPos(ctx context.Context, targetPos mysql.Position) error
- type XtrabackupEngine
Constants ¶
This section is empty.
Variables ¶
var ( // ErrNoBackup is returned when there is no backup. ErrNoBackup = errors.New("no available backup") // ErrExistingDB is returned when there's already an active DB. ErrExistingDB = errors.New("skipping restore due to existing database") )
var BackupEngineMap = make(map[string]BackupEngine)
BackupEngineMap contains the registered implementations for BackupEngine
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. // 3. prevents the vtworker from updating replication topology // after restarting replication after a split clone/diff. DisableActiveReparents = flag.Bool("disable_active_reparents", false, "if set, do not allow active reparents. Use this to protect a cluster using external reparents.") )
var ( // ErrNotMaster means there is no master status ErrNotMaster = errors.New("no master status") )
Functions ¶
func Backup ¶
func Backup(ctx context.Context, cnf *Mycnf, mysqld MysqlDaemon, logger logutil.Logger, dir, name string, backupConcurrency int, hookExtraEnv map[string]string) 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 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 CreateReparentJournal ¶
func CreateReparentJournal() []string
CreateReparentJournal returns the commands to execute to create the _vt.reparent_journal table. It is safe to run these commands even if the table already exists.
If the table was created by Vitess version 2.0, the following command may need to be run: ALTER TABLE _vt.reparent_journal MODIFY COLUMN replication_position VARBINARY(64000);
func FindSlaves ¶
func FindSlaves(mysqld MysqlDaemon) ([]string, error)
FindSlaves gets IP addresses for all currently connected slaves.
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 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 PopulateMetadataTables ¶ added in v1.5.0
func PopulateMetadataTables(mysqld MysqlDaemon, localMetadata map[string]string, dbName string) error
PopulateMetadataTables creates and fills the _vt.local_metadata table and creates _vt.shard_metadata table. _vt.local_metadata table is a per-tablet table that is never replicated. This allows queries against local_metadata to return different values on different tablets, which is used for communicating between Vitess and MySQL-level tools like Orchestrator (http://github.com/github/orchestrator). _vt.shard_metadata is a replicated table with per-shard information, but it's created here to make it easier to create it on databases that were running old version of Vitess, or databases that are getting converted to run under Vitess.
func PopulateReparentJournal ¶
func PopulateReparentJournal(timeCreatedNS int64, actionName, masterAlias 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(mysqld MysqlDaemon, dbName string, tables []string) ([]string, error)
ResolveTables returns a list of actual tables+views matching a list of regexps
func Restore ¶
func Restore( ctx context.Context, cnf *Mycnf, mysqld MysqlDaemon, dir string, restoreConcurrency int, hookExtraEnv map[string]string, localMetadata map[string]string, logger logutil.Logger, deleteBeforeRestore bool, dbName string) (mysql.Position, 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 TopLevelDirs ¶
func TopLevelDirs() []string
TopLevelDirs returns the list of directories in the toplevel tablet directory that might be located in a different place.
func WaitForSlaveStart ¶
func WaitForSlaveStart(mysqld MysqlDaemon, slaveStartDeadline int) error
WaitForSlaveStart waits until the deadline for replication to start. This validates the current master is correct and can be connected to.
Types ¶
type BackupEngine ¶ added in v1.6.0
type BackupEngine interface { ExecuteBackup(ctx context.Context, cnf *Mycnf, mysqld MysqlDaemon, logger logutil.Logger, bh backupstorage.BackupHandle, backupConcurrency int, hookExtraEnv map[string]string) (bool, error) ExecuteRestore(ctx context.Context, cnf *Mycnf, mysqld MysqlDaemon, logger logutil.Logger, dir string, bhs []backupstorage.BackupHandle, restoreConcurrency int, hookExtraEnv map[string]string) (mysql.Position, error) }
BackupEngine is the interface to the backup engine
func GetBackupEngine ¶ added in v1.6.0
func GetBackupEngine() (BackupEngine, error)
GetBackupEngine returns the current BackupEngine implementation. Should be called after flags have been initialized.
type BuiltinBackupEngine ¶ added in v1.6.0
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 ¶ added in v1.6.0
func (be *BuiltinBackupEngine) ExecuteBackup(ctx context.Context, cnf *Mycnf, mysqld MysqlDaemon, logger logutil.Logger, bh backupstorage.BackupHandle, backupConcurrency int, hookExtraEnv map[string]string) (bool, error)
ExecuteBackup returns a boolean that indicates if the backup is usable, and an overall error.
func (*BuiltinBackupEngine) ExecuteRestore ¶ added in v1.6.0
func (be *BuiltinBackupEngine) ExecuteRestore( ctx context.Context, cnf *Mycnf, mysqld MysqlDaemon, logger logutil.Logger, dir string, bhs []backupstorage.BackupHandle, restoreConcurrency int, hookExtraEnv map[string]string) (mysql.Position, 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
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 // - 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 }
FileEntry is one file to backup
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 // 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 by vt software for now) 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 // SlaveLoadTmpDir is where to create tmp files for replication // (unused by vt software for now) SlaveLoadTmpDir string // 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 slave connections. See NewSlaveConnection() in binlog/slave_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) // replication related methods StartSlave(hookExtraEnv map[string]string) error StartSlaveUntilAfter(ctx context.Context, pos mysql.Position) error StopSlave(hookExtraEnv map[string]string) error SlaveStatus() (mysql.SlaveStatus, error) SetSemiSyncEnabled(master, slave bool) error SemiSyncEnabled() (master, slave bool) SemiSyncSlaveStatus() (bool, error) // reparenting related methods ResetReplication(ctx context.Context) error MasterPosition() (mysql.Position, error) IsReadOnly() (bool, error) SetReadOnly(on bool) error SetSuperReadOnly(on bool) error SetSlavePosition(ctx context.Context, pos mysql.Position) error SetMaster(ctx context.Context, masterHost string, masterPort int, slaveStopBefore bool, slaveStartAfter bool) error WaitForReparentJournal(ctx context.Context, timeCreatedNS int64) error // Deprecated: use MasterPosition() instead DemoteMaster() (mysql.Position, error) WaitMasterPos(context.Context, mysql.Position) error // PromoteSlave makes the slave the new master. It will not change // the read_only state of the server. PromoteSlave(map[string]string) (mysql.Position, error) // Schema related methods GetSchema(dbName string, tables, excludeTables []string, includeViews bool) (*tabletmanagerdatapb.SchemaDefinition, error) GetColumns(dbName, table string) ([]string, error) GetPrimaryKeyColumns(dbName, table string) ([]string, error) PreflightSchemaChange(dbName string, changes []string) ([]*tabletmanagerdatapb.SchemaChangeResult, error) ApplySchemaChange(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() (*dbconnpool.DBConnection, error) // GetAllPrivsConnection returns an allprivs connection (for user with all privileges except SUPER). GetAllPrivsConnection() (*dbconnpool.DBConnection, error) // 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(dbName string, change *tmutils.SchemaChange) (*tabletmanagerdatapb.SchemaChangeResult, error)
ApplySchemaChange will apply the schema change to the given database.
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) DemoteMaster
deprecated
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) 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) 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) GetAllPrivsConnection ¶
func (mysqld *Mysqld) GetAllPrivsConnection() (*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) GetColumns ¶
GetColumns returns the columns of table.
func (*Mysqld) GetDbaConnection ¶
func (mysqld *Mysqld) GetDbaConnection() (*dbconnpool.DBConnection, error)
GetDbaConnection creates a new DBConnection.
func (*Mysqld) GetMysqlPort ¶
GetMysqlPort returns mysql port
func (*Mysqld) GetPrimaryKeyColumns ¶
GetPrimaryKeyColumns returns the primary key columns of table.
func (*Mysqld) GetSchema ¶
func (mysqld *Mysqld) GetSchema(dbName string, tables, excludeTables []string, includeViews bool) (*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) 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) MasterPosition ¶
MasterPosition returns the master replication position.
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(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) PromoteSlave ¶
PromoteSlave will promote a slave to be the new master.
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) ResetReplication ¶
ResetReplication resets all replication for this host.
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) SemiSyncEnabled ¶
SemiSyncEnabled returns whether semi-sync is enabled for master or slave. If the semi-sync plugin is not loaded, we assume semi-sync is disabled.
func (*Mysqld) SemiSyncSlaveStatus ¶
SemiSyncSlaveStatus returns whether semi-sync is currently used by replication.
func (*Mysqld) SetMaster ¶
func (mysqld *Mysqld) SetMaster(ctx context.Context, masterHost string, masterPort int, slaveStopBefore bool, slaveStartAfter bool) error
SetMaster makes the provided host / port the master. It optionally stops replication before, and starts it after.
func (*Mysqld) SetReadOnly ¶
SetReadOnly set/unset the read_only flag
func (*Mysqld) SetSemiSyncEnabled ¶
SetSemiSyncEnabled enables or disables semi-sync replication for master and/or slave mode.
func (*Mysqld) SetSlavePosition ¶
SetSlavePosition sets the replication position at which the slave will resume when its replication is started.
func (*Mysqld) SetSuperReadOnly ¶ added in v1.6.0
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) SlaveStatus ¶
func (mysqld *Mysqld) SlaveStatus() (mysql.SlaveStatus, error)
SlaveStatus returns the slave replication statuses
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) StartSlave ¶
StartSlave starts a slave.
func (*Mysqld) StartSlaveUntilAfter ¶ added in v1.5.0
StartSlaveUntilAfter starts a slave until replication has come to `targetPos`, then it stops replication
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 XtrabackupEngine ¶ added in v1.6.0
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 ¶ added in v1.6.0
func (be *XtrabackupEngine) ExecuteBackup(ctx context.Context, cnf *Mycnf, mysqld MysqlDaemon, logger logutil.Logger, bh backupstorage.BackupHandle, backupConcurrency int, hookExtraEnv map[string]string) (bool, error)
ExecuteBackup returns a boolean that indicates if the backup is usable, and an overall error.
func (*XtrabackupEngine) ExecuteRestore ¶ added in v1.6.0
func (be *XtrabackupEngine) ExecuteRestore( ctx context.Context, cnf *Mycnf, mysqld MysqlDaemon, logger logutil.Logger, dir string, bhs []backupstorage.BackupHandle, restoreConcurrency int, hookExtraEnv map[string]string) (mysql.Position, error)
ExecuteRestore restores from a backup. Any error is returned.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
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 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 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. |