mysql

package
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Jul 4, 2026 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// ssl type: YES | NO
	SSLTypYes = "YES"
	SSLTypNo  = "NO"
)

Variables

This section is empty.

Functions

func ChangeMasterToError

func ChangeMasterToError(db *sql.DB, gtid *model.Repl) error

ChangeMasterToError mock.

func ChangeToMasterError

func ChangeToMasterError(db *sql.DB, repl *model.Repl) error

ChangeToMasterError mock.

func CheckGTIDLC

func CheckGTIDLC(*model.GTID, *model.GTID) bool

func DefaultChangeMasterTo

func DefaultChangeMasterTo(db *sql.DB, gtid *model.Repl) error

DefaultChangeMasterTo mock.

func DefaultChangeToMaster

func DefaultChangeToMaster(db *sql.DB, repl *model.Repl) error

DefaultChangeToMaster mock.

func DefaultChangeUserPasswd

func DefaultChangeUserPasswd(db *sql.DB, user string, host string, passwd string) error

ChangeUserPasswd mock.

func DefaultCheckGTID

func DefaultCheckGTID(followerGTID *model.GTID, leaderGTID *model.GTID) bool

func DefaultCheckUserExists

func DefaultCheckUserExists(db *sql.DB, user string, host string) (bool, error)

CheckUserExists mock.

func DefaultCreateReplUserWithoutBinlog

func DefaultCreateReplUserWithoutBinlog(db *sql.DB, user string, passwd string) error

CreateReplUserWithoutBinlog mock.

func DefaultCreateUser

func DefaultCreateUser(db *sql.DB, user string, host string, passwd string, ssltype string) error

CreateUser mock.

func DefaultCreateUserWithPrivileges

func DefaultCreateUserWithPrivileges(db *sql.DB, user, passwd, database, table, host, privs string, ssl string) error

CreateUserWithPrivileges mock.

func DefaultDisableSemiSyncMaster

func DefaultDisableSemiSyncMaster(db *sql.DB) error

DefaultDisableSemiSyncMaster mock.

func DefaultDropUser

func DefaultDropUser(db *sql.DB, user string, host string) error

DropUser mock.

func DefaultEnableSemiSyncMaster

func DefaultEnableSemiSyncMaster(db *sql.DB) error

DefaultEnableSemiSyncMaster mock.

func DefaultGTIDBigger

func DefaultGTIDBigger(db *sql.DB, gtid1 string, gtid2 string) (bool, error)

DefaultGTIDBigger mock.

func DefaultGetGTIDSubtract

func DefaultGetGTIDSubtract(db *sql.DB, subsetGTID string, setGTID string) (string, error)

DefaultGetGTIDSubtract mock.

func DefaultGetLocalMGRStat

func DefaultGetLocalMGRStat(db *sql.DB) (*model.MGRStatus, error)

DefaultGetLocalMGRStat mock.

func DefaultGetLocalMGRStat0

func DefaultGetLocalMGRStat0(db *sql.DB) (*model.MGRStatus, error)

DefaultGetLocalMGRStat0 mock.

func DefaultGetLocalMGRStat1

func DefaultGetLocalMGRStat1(db *sql.DB) (*model.MGRStatus, error)

DefaultGetLocalMGRStat1 mock.

func DefaultGetLocalMGRStat2

func DefaultGetLocalMGRStat2(db *sql.DB) (*model.MGRStatus, error)

DefaultGetLocalMGRStat2 mock.

func DefaultGetLocalMGRStat3

func DefaultGetLocalMGRStat3(db *sql.DB) (*model.MGRStatus, error)

DefaultGetLocalMGRStat3 mock.

func DefaultGetLocalMGRStat4

func DefaultGetLocalMGRStat4(db *sql.DB) (*model.MGRStatus, error)

DefaultGetLocalMGRStat4 mock.

func DefaultGetLocalMGRStat5

func DefaultGetLocalMGRStat5(db *sql.DB) (*model.MGRStatus, error)

DefaultGetLocalMGRStat5 mock.

func DefaultGetLocalMGRStat6

func DefaultGetLocalMGRStat6(db *sql.DB) (*model.MGRStatus, error)

DefaultGetLocalMGRStat6 mock.

func DefaultGetMGRGTID

func DefaultGetMGRGTID(db *sql.DB) (*model.GTID, error)

DefaultGetMGRGTID mock.

func DefaultGetMGRMasterUUID

func DefaultGetMGRMasterUUID(db *sql.DB) (string, error)

DefaultGetMGRMasterUUID mock.

func DefaultGetMGRMasterUUID0

func DefaultGetMGRMasterUUID0(db *sql.DB) (string, error)

DefaultGetMGRMasterUUID0 mock.

func DefaultGetMGRMasterUUID1

func DefaultGetMGRMasterUUID1(db *sql.DB) (string, error)

DefaultGetMGRMasterUUID1 mock.

func DefaultGetMGRMasterUUID2

func DefaultGetMGRMasterUUID2(db *sql.DB) (string, error)

DefaultGetMGRMasterUUID2 mock.

func DefaultGetMGRMasterUUID3

func DefaultGetMGRMasterUUID3(db *sql.DB) (string, error)

DefaultGetMGRMasterUUID3 mock.

func DefaultGetMGRMasterUUID4

func DefaultGetMGRMasterUUID4(db *sql.DB) (string, error)

DefaultGetMGRMasterUUID4 mock.

func DefaultGetMGRMasterUUID5

func DefaultGetMGRMasterUUID5(db *sql.DB) (string, error)

DefaultGetMGRMasterUUID5 mock.

func DefaultGetMGRMasterUUID6

func DefaultGetMGRMasterUUID6(db *sql.DB) (string, error)

DefaultGetMGRMasterUUID6 mock.

func DefaultGetMGRStats

func DefaultGetMGRStats(db *sql.DB) ([]map[string]string, error)

DefaultGetMGRStats mock.

func DefaultGetMGRStats1

func DefaultGetMGRStats1(db *sql.DB) ([]map[string]string, error)

DefaultGetMGRStats1 mock.

func DefaultGetMGRStats2

func DefaultGetMGRStats2(db *sql.DB) ([]map[string]string, error)

DefaultGetMGRStats2 mock.

func DefaultGetMGRStats3

func DefaultGetMGRStats3(db *sql.DB) ([]map[string]string, error)

DefaultGetMGRStats3 mock.

func DefaultGetMGRStats4

func DefaultGetMGRStats4(db *sql.DB) ([]map[string]string, error)

DefaultGetMGRStats4 mock.

func DefaultGetMGRStats5

func DefaultGetMGRStats5(db *sql.DB) ([]map[string]string, error)

DefaultGetMGRStats5 mock.

func DefaultGetMGRStats6

func DefaultGetMGRStats6(db *sql.DB) ([]map[string]string, error)

DefaultGetMGRStats6 mock.

func DefaultGetMGRStats7

func DefaultGetMGRStats7(db *sql.DB) ([]map[string]string, error)

DefaultGetMGRStats7 mock.

func DefaultGetMasterGTID

func DefaultGetMasterGTID(db *sql.DB) (*model.GTID, error)

DefaultGetMasterGTID mock.

func DefaultGetReplMode

func DefaultGetReplMode() *model.MysqlReplMode

DefaultGetReplMode mock.

func DefaultGetReplMode_MySQL_MGR

func DefaultGetReplMode_MySQL_MGR() *model.MysqlReplMode

DefaultGetReplMode_MySQL_MGR mock.

func DefaultGetSlaveGTID

func DefaultGetSlaveGTID(db *sql.DB) (*model.GTID, error)

DefaultGetSlaveGTID returns the default slave gtid.

func DefaultGetUUID

func DefaultGetUUID(db *sql.DB) (string, error)

DefaultGetUUID mock.

func DefaultGetUser

func DefaultGetUser(db *sql.DB) ([]model.MysqlUser, error)

GetUser mock.

func DefaultGrantAllPrivileges

func DefaultGrantAllPrivileges(db *sql.DB, user string, host string, passwd string, ssl string) error

GrantAllPrivileges mock.

func DefaultGrantNormalPrivileges

func DefaultGrantNormalPrivileges(db *sql.DB, user string, host string) error

GrantNormalPrivileges mock.

func DefaultGrantReplicationPrivileges

func DefaultGrantReplicationPrivileges(db *sql.DB, user string) error

GrantReplicationPrivileges mock.

func DefaultIsMGRRunningOK

func DefaultIsMGRRunningOK(db *sql.DB) (bool, error)

DefaultIsMGRRunningOK mock.

func DefaultMGRChangeMasterTo

func DefaultMGRChangeMasterTo(db *sql.DB, gtid *model.Repl) error

DefaultMGRChangeMasterTo mock.

func DefaultPurgeBinlogsTo

func DefaultPurgeBinlogsTo(db *sql.DB, binlog string) error

DefaultPurgeBinlogsTo mock.

func DefaultResetMaster

func DefaultResetMaster(db *sql.DB) error

DefaultResetMaster mock.

func DefaultResetSlave

func DefaultResetSlave(db *sql.DB) error

DefaultResetSlave mock.

func DefaultResetSlaveAll

func DefaultResetSlaveAll(db *sql.DB) error

DefaultResetSlaveAll mock.

func DefaultSelectSysVar

func DefaultSelectSysVar(db *sql.DB, query string) (string, error)

DefaultSelectSysVar mock.

func DefaultSetGlobalSysVar

func DefaultSetGlobalSysVar(db *sql.DB, varsql string) error

DefaultSetGlobalSysVar mock.

func DefaultSetQueryTimeout

func DefaultSetQueryTimeout(timeout int)

DefaultSetQueryTimeout mock.

func DefaultSetReadOnly

func DefaultSetReadOnly(db *sql.DB, readonly bool) error

DefaultSetReadOnly mock.

func DefaultSetSemiWaitSlaveCount

func DefaultSetSemiWaitSlaveCount(db *sql.DB, count int) error

DefaultSetSemiWaitSlaveCount mock.

func DefaultStartMGR

func DefaultStartMGR(db *sql.DB) error

DefaultStartMGR mock.

func DefaultStartSlave

func DefaultStartSlave(db *sql.DB) error

DefaultStartSlave mock.

func DefaultStartSlaveIOThread

func DefaultStartSlaveIOThread(db *sql.DB) error

DefaultStartSlaveIOThread mock.

func DefaultStopMGR

func DefaultStopMGR(db *sql.DB) error

DefaultStopMGR mock.

func DefaultStopSlave

func DefaultStopSlave(db *sql.DB) error

DefaultStopSlave mock.

func DefaultStopSlaveIOThread

func DefaultStopSlaveIOThread(db *sql.DB) error

DefaultStopSlaveIOThread mock.

func DefaultWaitApplyRelayLog

func DefaultWaitApplyRelayLog(db *sql.DB, retry int, interval int) error

DefaultWaitApplyRelayLog mock.

func DefaultWaitUntilAfterGTID

func DefaultWaitUntilAfterGTID(db *sql.DB, targetGTID string) error

DefaultWaitUntilAfterGTID mock.

func Execute

func Execute(db *sql.DB, query string, args ...interface{}) error

Execute executes a query without returning any rows

func ExecuteSuperQueryList

func ExecuteSuperQueryList(db *sql.DB, queryList []string) error

ExecuteSuperQueryList runs queryList on one session so session variables apply to all statements.

func ExecuteSuperQueryListWithTimeout

func ExecuteSuperQueryListWithTimeout(db *sql.DB, maxTime int, queryList []string) error

ExecuteSuperQueryListWithTimeout runs queryList on one session with optional per-statement timeout.

func ExecuteWithTimeout

func ExecuteWithTimeout(db *sql.DB, maxTime int, query string, args ...interface{}) error

ExecuteWithTimeout executes a query without returning any rows.

func GTIDBiggerXn

func GTIDBiggerXn(db *sql.DB, gtid1 string, gtid2 string) (bool, error)

GTIDBiggerXn mock.

func GetGTIDSubtractE

func GetGTIDSubtractE(db *sql.DB, subsetGTID string, setGTID string) (string, error)

GetGTIDSubtractE mock

func GetGTIDSubtractError

func GetGTIDSubtractError(db *sql.DB, subsetGTID string, setGTID string) (string, error)

func GetGTIDSubtractInvalid

func GetGTIDSubtractInvalid(db *sql.DB, slaveGTID string, masterGTID string) (string, error)

GetGTIDSubtractInvalid mock.

func GetMGRGTIDError

func GetMGRGTIDError(db *sql.DB) (*model.GTID, error)

GetMGRGTIDError mock.

func GetMGRGTIDPingError

func GetMGRGTIDPingError(db *sql.DB) (*model.GTID, error)

GetMGRGTIDPingError mock.

func GetMGRGTIDX1

func GetMGRGTIDX1(db *sql.DB) (*model.GTID, error)

GetMGRGTIDX1 mock.

func GetMGRGTIDX1CaughtUp

func GetMGRGTIDX1CaughtUp(db *sql.DB) (*model.GTID, error)

GetMGRGTIDX1CaughtUp is like GetMGRGTIDX1 but relay is fully applied (promotable).

func GetMGRGTIDX3

func GetMGRGTIDX3(db *sql.DB) (*model.GTID, error)

GetMGRGTIDX3 mock.

func GetMGRGTIDX3CaughtUp

func GetMGRGTIDX3CaughtUp(db *sql.DB) (*model.GTID, error)

GetMGRGTIDX3CaughtUp is like GetMGRGTIDX3 but relay is fully applied (promotable).

func GetMGRGTIDX5

func GetMGRGTIDX5(db *sql.DB) (*model.GTID, error)

GetMGRGTIDX5 mock.

func GetMasterGTIDA

func GetMasterGTIDA(db *sql.DB) (*model.GTID, error)

GetMasterGTIDA mock.

func GetMasterGTIDAA

func GetMasterGTIDAA(db *sql.DB) (*model.GTID, error)

GetMasterGTIDB mock.

func GetMasterGTIDB

func GetMasterGTIDB(db *sql.DB) (*model.GTID, error)

GetMasterGTIDB mock.

func GetMasterGTIDBB

func GetMasterGTIDBB(db *sql.DB) (*model.GTID, error)

GetMasterGTIDBB mock.

func GetMasterGTIDC

func GetMasterGTIDC(db *sql.DB) (*model.GTID, error)

GetMasterGTIDC mock.

func GetMasterGTIDCC

func GetMasterGTIDCC(db *sql.DB) (*model.GTID, error)

GetMasterGTIDC mock.

func GetMasterGTIDD

func GetMasterGTIDD(db *sql.DB) (*model.GTID, error)

GetMasterGTIDD mock.

func GetMasterGTIDE1

func GetMasterGTIDE1(db *sql.DB) (*model.GTID, error)

GetMasterGTIDE1 mock.

func GetMasterGTIDE2

func GetMasterGTIDE2(db *sql.DB) (*model.GTID, error)

GetMasterGTIDE2 mock.

func GetMasterGTIDE3

func GetMasterGTIDE3(db *sql.DB) (*model.GTID, error)

GetMasterGTIDE3 mock.

func GetMasterGTIDError

func GetMasterGTIDError(db *sql.DB) (*model.GTID, error)

GetMasterGTIDError mock.

func GetMasterGTIDF

func GetMasterGTIDF(db *sql.DB) (*model.GTID, error)

GetMasterGTIDF mock.

func GetMasterGTIDInvalid

func GetMasterGTIDInvalid(db *sql.DB) (*model.GTID, error)

func GetMasterGTIDLC

func GetMasterGTIDLC(db *sql.DB) (*model.GTID, error)

GetMasterGTIDLC mock.

func GetMasterGTIDNull

func GetMasterGTIDNull(db *sql.DB) (*model.GTID, error)

GetMasterGTIDNull mock.

func GetMasterGTIDPingError

func GetMasterGTIDPingError(db *sql.DB) (*model.GTID, error)

GetMasterGTIDPingError mock.

func GetReplModeMGRFn

func GetReplModeMGRFn() *model.MysqlReplMode

func GetReplModeSemiSyncFn

func GetReplModeSemiSyncFn() *model.MysqlReplMode

func GetSlaveGTIDA

func GetSlaveGTIDA(db *sql.DB) (*model.GTID, error)

GetSlaveGTIDA mock. with GTID{Master_Log_File = "", Read_Master_Log_Pos = 0} all functions return is OK

func GetSlaveGTIDAA

func GetSlaveGTIDAA(db *sql.DB) (*model.GTID, error)

GetSlaveGTIDB mock.

func GetSlaveGTIDB

func GetSlaveGTIDB(db *sql.DB) (*model.GTID, error)

GetSlaveGTIDB mock.

func GetSlaveGTIDBB

func GetSlaveGTIDBB(db *sql.DB) (*model.GTID, error)

GetSlaveGTIDBB mock.

func GetSlaveGTIDC

func GetSlaveGTIDC(db *sql.DB) (*model.GTID, error)

GetSlaveGTIDC mock.

func GetSlaveGTIDCC

func GetSlaveGTIDCC(db *sql.DB) (*model.GTID, error)

GetSlaveGTIDC mock.

func GetSlaveGTIDError

func GetSlaveGTIDError(db *sql.DB) (*model.GTID, error)

GetSlaveGTIDError mock.

func GetSlaveGTIDX1

func GetSlaveGTIDX1(db *sql.DB) (*model.GTID, error)

GetSlaveGTIDX1 mock.

func GetSlaveGTIDX3

func GetSlaveGTIDX3(db *sql.DB) (*model.GTID, error)

GetSlaveGTIDX3 mock.

func GetSlaveGTIDX5

func GetSlaveGTIDX5(db *sql.DB) (*model.GTID, error)

GetSlaveGTIDX5 mock.

func GetUUIDA

func GetUUIDA(db *sql.DB) (string, error)

func GetUUIDLC

func GetUUIDLC(db *sql.DB) (string, error)

func MGRChangeMasterToError

func MGRChangeMasterToError(db *sql.DB, gtid *model.Repl) error

MGRChangeMasterToError mock.

func MockGetClient

func MockGetClient(t *testing.T, svrConn string) (*nrpc.Client, func())

MockGetClient mock.

func Query

func Query(db *sql.DB, query string, args ...interface{}) ([]map[string]string, error)

Query executes a query that returns rows

func QueryWithTimeout

func QueryWithTimeout(db *sql.DB, maxTime int, query string, args ...interface{}) ([]map[string]string, error)

QueryWithTimeout used to execute the query with maxTime.

func SetReadOnlyError

func SetReadOnlyError(db *sql.DB, readonly bool) error

SetReadOnlyError mock.

func SetReplModeMGRFn

func SetReplModeMGRFn(mode model.MysqlReplMode)

func SetReplModeSemiSyncFn

func SetReplModeSemiSyncFn(mode model.MysqlReplMode)

func SetSemiSyncMasterTimeout

func SetSemiSyncMasterTimeout(db *sql.DB, timeout uint64) error

SetSemiSyncMasterTimeout mock

func StartSlaveError

func StartSlaveError(db *sql.DB) error

StartSlaveError mock.

func StartSlaveIOThreadError

func StartSlaveIOThreadError(db *sql.DB) error

StartSlaveIOThreadError mock.

func StopSlaveError

func StopSlaveError(db *sql.DB) error

StopSlaveError mock.

func StopSlaveIOThreadError

func StopSlaveIOThreadError(db *sql.DB) error

StopSlaveIOThreadError mock.

func WaitApplyRelayLogError

func WaitApplyRelayLogError(db *sql.DB, retry int, interval int) error

WaitApplyRelayLogError mock.

func WaitUntilAfterGTIDError

func WaitUntilAfterGTIDError(db *sql.DB, targetGTID string) error

WaitUntilAfterGTIDError mock.

Types

type ArraySlice

type ArraySlice [][2]int

ArraySlice definition

func (ArraySlice) Len

func (s ArraySlice) Len() int

func (ArraySlice) Less

func (s ArraySlice) Less(i, j int) bool

func (ArraySlice) Swap

func (s ArraySlice) Swap(i, j int)

type Driver added in v0.2.0

type Driver struct {
	// contains filtered or unexported fields
}

Driver implements database.Driver for MySQL (semi-sync / MGR).

func NewDriver added in v0.2.0

func NewDriver(m *Mysql, conf *config.MysqlConfig, log *nlog.Log) *Driver

NewDriver wraps an existing *Mysql as a database.Driver.

func (*Driver) ApplyPrimary added in v0.2.0

func (d *Driver) ApplyPrimary(ctx context.Context) error

func (*Driver) ApplyPrimaryMGRPhase2 added in v0.2.0

func (d *Driver) ApplyPrimaryMGRPhase2(ctx context.Context) error

func (*Driver) ApplyReplica added in v0.2.0

func (d *Driver) ApplyReplica(ctx context.Context, primary dbdriver.PrimaryRef) error

func (*Driver) ChangeToMasterRepl added in v0.2.0

func (d *Driver) ChangeToMasterRepl(ctx context.Context) error

func (*Driver) Demote added in v0.2.0

func (d *Driver) Demote(ctx context.Context) error

func (*Driver) EnableReadWrite added in v0.2.0

func (d *Driver) EnableReadWrite(ctx context.Context) error

EnableReadWrite opens writes after semi-sync/MGR promotion steps.

func (*Driver) IsMGRMode added in v0.2.0

func (d *Driver) IsMGRMode() bool

func (*Driver) MGRClusterWritableReady added in v0.2.0

func (d *Driver) MGRClusterWritableReady(ctx context.Context) (bool, error)

func (*Driver) MGRPrimaryPhase1Done added in v0.2.0

func (d *Driver) MGRPrimaryPhase1Done(ctx context.Context) (bool, error)

func (*Driver) MGRReplicaJoined added in v0.2.0

func (d *Driver) MGRReplicaJoined(ctx context.Context) (bool, error)

func (*Driver) Mysql added in v0.2.0

func (d *Driver) Mysql() *Mysql

Mysql returns the underlying *Mysql for legacy callers (raft, RPC). Deprecated: use Driver.

func (*Driver) Promotable added in v0.2.0

func (d *Driver) Promotable(ctx context.Context) (bool, string)

func (*Driver) ReplicaConnectedToPrimary added in v0.3.0

func (d *Driver) ReplicaConnectedToPrimary(ctx context.Context, _ dbdriver.PrimaryRef) (bool, error)

ReplicaConnectedToPrimary reports semi-sync replica IO/SQL thread health.

func (*Driver) ReplicationLagBytes added in v0.2.0

func (d *Driver) ReplicationLagBytes(ctx context.Context) (int64, error)

func (*Driver) SetupBootstrap added in v0.2.0

func (d *Driver) SetupBootstrap(ctx context.Context) error

SetupBootstrap performs first-start MySQL setup (repl user, readonly, semi-sync slave).

func (*Driver) Start added in v0.2.0

func (d *Driver) Start()

func (*Driver) Status added in v0.2.0

func (d *Driver) Status(ctx context.Context) (dbdriver.Health, error)

func (*Driver) Stop added in v0.2.0

func (d *Driver) Stop()

func (*Driver) Type added in v0.2.0

func (d *Driver) Type() dbdriver.Engine

type MockGTID

type MockGTID struct {
	SetReplModeFn     func(mode model.MysqlReplMode)
	GetReplModeFn     func() *model.MysqlReplMode
	SetQueryTimeoutFn func(int)
	PingFn            func(*sql.DB) (*PingEntry, error)
	SetReadOnlyFn     func(*sql.DB, bool) error

	GTIDBiggerFn        func(*sql.DB, string, string) (bool, error)
	GetMGRGTIDFn        func(*sql.DB) (*model.GTID, error)
	IsMGRRunningOKFn    func(*sql.DB) (bool, error)
	StartMGRFn          func(*sql.DB) error
	StopMGRFn           func(*sql.DB) error
	MGRChangeMasterToFn func(*sql.DB, *model.Repl) error
	GetMGRStatsFn       func(db *sql.DB) ([]map[string]string, error)
	GetLocalMGRStatFn   func(db *sql.DB) (*model.MGRStatus, error)
	GetMGRMasterUUIDFn  func(db *sql.DB) (string, error)
	WaitApplyRelayLogFn func(*sql.DB, int, int) error
	ResetSlaveFn        func(*sql.DB) error

	GetMasterGTIDFn      func(*sql.DB) (*model.GTID, error)
	GetSlaveGTIDFn       func(*sql.DB) (*model.GTID, error)
	StartSlaveIOThreadFn func(*sql.DB) error
	StopSlaveIOThreadFn  func(*sql.DB) error
	StartSlaveFn         func(*sql.DB) error
	StopSlaveFn          func(*sql.DB) error
	ChangeMasterToFn     func(*sql.DB, *model.Repl) error
	ChangeToMasterFn     func(*sql.DB, *model.Repl) error
	WaitUntilAfterGTIDFn func(*sql.DB, string) error
	GetGTIDSubtractFn    func(*sql.DB, string, string) (string, error)
	GetUUIDFn            func(*sql.DB) (string, error)
	CheckGTIDFn          func(*model.GTID, *model.GTID) bool

	SetGlobalSysVarFn          func(*sql.DB, string) error
	ResetMasterFn              func(*sql.DB) error
	ResetSlaveAllFn            func(*sql.DB) error
	PurgeBinlogsToFn           func(*sql.DB, string) error
	EnableSemiSyncMasterFn     func(*sql.DB) error
	DisableSemiSyncMasterFn    func(*sql.DB) error
	SelectSysVarFn             func(*sql.DB, string) (string, error)
	SetSemiWaitSlaveCountFn    func(*sql.DB, int) error
	SetSemiSyncMasterTimeoutFn func(*sql.DB, uint64) error

	// Users
	GetUserFn                     func(*sql.DB) ([]model.MysqlUser, error)
	CheckUserExistsFn             func(*sql.DB, string, string) (bool, error)
	CreateUserFn                  func(*sql.DB, string, string, string, string) error
	DropUserFn                    func(*sql.DB, string, string) error
	ChangeUserPasswdFn            func(*sql.DB, string, string, string) error
	CreateReplUserWithoutBinlogFn func(*sql.DB, string, string) error
	GrantAllPrivilegesFn          func(*sql.DB, string, string, string, string) error
	GrantNormalPrivilegesFn       func(*sql.DB, string, string) error
	CreateUserWithPrivilegesFn    func(*sql.DB, string, string, string, string, string, string, string) error
	GrantReplicationPrivilegesFn  func(*sql.DB, string) error
}

MockGTID tuple.

func NewMockGTIDA

func NewMockGTIDA(replMode model.MysqlReplMode) *MockGTID

NewMockGTIDA mock.

func NewMockGTIDAA

func NewMockGTIDAA() *MockGTID

NewMockGTIDAA mock. with GTID{Master_Log_File = "mysql-bin.000001", Read_Master_Log_Pos = 123} all functions return is OK

func NewMockGTIDB

func NewMockGTIDB() *MockGTID

NewMockGTIDB mock. with GTID{Master_Log_File = "mysql-bin.000001", Read_Master_Log_Pos = 123} all functions return is OK

func NewMockGTIDBB

func NewMockGTIDBB() *MockGTID

NewMockGTIDBB mock. with GTID{Master_Log_File = "mysql-bin.000001", Read_Master_Log_Pos = 123} all functions return is OK

func NewMockGTIDByNodes

func NewMockGTIDByNodes(cnt int, whoisleader int, whoislocal int) *MockGTID

NewMockGTIDByNodes mock.

func NewMockGTIDByNodesXn

func NewMockGTIDByNodesXn(cnt int, whoisleader int, whoislocal int) *MockGTID

NewMockGTIDByNodesXn mock.

func NewMockGTIDC

func NewMockGTIDC() *MockGTID

NewMockGTIDC mock. with GTID{Master_Log_File = "mysql-bin.000001", Read_Master_Log_Pos = 124} all functions return is OK

func NewMockGTIDCC

func NewMockGTIDCC() *MockGTID

NewMockGTIDCC mock. with GTID{Master_Log_File = "mysql-bin.000001", Read_Master_Log_Pos = 124} all functions return is OK

func NewMockGTIDD

func NewMockGTIDD() *MockGTID

NewMockGTIDD mock.

func NewMockGTIDE1

func NewMockGTIDE1() *MockGTID

NewMockGTIDE1 mock.

func NewMockGTIDE2

func NewMockGTIDE2() *MockGTID

NewMockGTIDE2 mock.

func NewMockGTIDE3

func NewMockGTIDE3() *MockGTID

NewMockGTIDE3 mock.

func NewMockGTIDError

func NewMockGTIDError() *MockGTID

NewMockGTIDError mock. mock GetSlaveGTID returns error mock GetMasterGTID returns error

func NewMockGTIDF

func NewMockGTIDF() *MockGTID

NewMockGTIDF mock.

func NewMockGTIDGetGTIDSubtractError

func NewMockGTIDGetGTIDSubtractError() *MockGTID

NewMockGTIDGetSubtractError mock.

func NewMockGTIDInvalid

func NewMockGTIDInvalid() *MockGTID

NewMockGTIDInvalid mock. mock GetSlaveGTIDInvalid returns Invalid mock GetMasterGTIDInvalid returns Invalid

func NewMockGTIDLC

func NewMockGTIDLC() *MockGTID

NewMockGTIDLC mock

func NewMockGTIDNull

func NewMockGTIDNull() *MockGTID

NewMockGTIDNull mock.

func NewMockGTIDPingError

func NewMockGTIDPingError() *MockGTID

NewMockGTIDPingError mock. mock Ping returns error

func NewMockGTIDX1

func NewMockGTIDX1() *MockGTID

NewMockGTIDX1 mock. with GTID{Master_Log_File = "mysql-bin.000001", Read_Master_Log_Pos = 123,

gtid.Executed_GTID_Set = "6127a668-gtid-x555-a28d-5254335479b2:1"}

all functions return is OK

func NewMockGTIDX1ForMGR

func NewMockGTIDX1ForMGR() *MockGTID

NewMockGTIDX1ForMGR mock. with GTID{Master_Log_File = "mysql-bin.000001", Read_Master_Log_Pos = 123,

gtid.Executed_GTID_Set = "6127a668-gtid-x555-a28d-5254335479b2:1"}

all functions return is OK

func NewMockGTIDX1GetMGRGTIDError

func NewMockGTIDX1GetMGRGTIDError() *MockGTID

NewMockGTIDX1GetMGRGTIDError mock.

func NewMockGTIDX1MGRCaughtUp

func NewMockGTIDX1MGRCaughtUp() *MockGTID

NewMockGTIDX1MGRCaughtUp mock for MGR manual TryToLeader on a caught-up secondary.

func NewMockGTIDX3

func NewMockGTIDX3() *MockGTID

NewMockGTIDX3 mock. with GTID{Master_Log_File = "mysql-bin.000003", Read_Master_Log_Pos = 123 ,

gtid.Executed_GTID_Set = "6127a668-gtid-x555-a28d-5254335479b2:1"}

all functions return is OK

func NewMockGTIDX3MGRCaughtUp

func NewMockGTIDX3MGRCaughtUp() *MockGTID

NewMockGTIDX3MGRCaughtUp mock for MGR manual TryToLeader on a caught-up secondary.

func NewMockGTIDX5

func NewMockGTIDX5() *MockGTID

NewMockGTIDX5 mock. with GTID{Master_Log_File = "mysql-bin.000005", Read_Master_Log_Pos = 123,

gtid.Executed_GTID_Set = "6127a668-gtid-x555-a28d-5254335479b2:1"}

all functions return is OK

func NewMockGTIDX5ChangeToMasterError

func NewMockGTIDX5ChangeToMasterError() *MockGTID

NewMockGTIDX5ChangeToMasterError mock. with GTID{Master_Log_File = "mysql-bin.000005", Read_Master_Log_Pos = 123} all functions return is OK except ChangeToMaster error.

func NewMockGTIDX5WaitApplyRelayLogError

func NewMockGTIDX5WaitApplyRelayLogError() *MockGTID

NewMockGTIDX5WaitApplyRelayLogError mock. with GTID{Master_Log_File = "mysql-bin.000005", Read_Master_Log_Pos = 123} all functions return is OK except WaitApplyRelayLog

func NewMockGTIDX5WaitUntilAfterGTIDError

func NewMockGTIDX5WaitUntilAfterGTIDError() *MockGTID

NewMockGTIDX5WaitUntilAfterGTIDError mock. with GTID{Master_Log_File = "mysql-bin.000005", Read_Master_Log_Pos = 123} all functions return is OK except WaitUntilAfterGTID

func (*MockGTID) ChangeMasterTo

func (mogtid *MockGTID) ChangeMasterTo(db *sql.DB, gtid *model.Repl) error

ChangeMasterTo mock.

func (*MockGTID) ChangeToMaster

func (mogtid *MockGTID) ChangeToMaster(db *sql.DB, repl *model.Repl) error

ChangeToMaster mock.

func (*MockGTID) ChangeUserPasswd

func (mogtid *MockGTID) ChangeUserPasswd(db *sql.DB, user string, host string, passwd string) error

func (*MockGTID) CheckUserExists

func (mogtid *MockGTID) CheckUserExists(db *sql.DB, user string, host string) (bool, error)

func (*MockGTID) CreateReplUserWithoutBinlog

func (mogtid *MockGTID) CreateReplUserWithoutBinlog(db *sql.DB, user string, passwd string) error

func (*MockGTID) CreateUser

func (mogtid *MockGTID) CreateUser(db *sql.DB, user string, host string, passwd string, ssltype string) error

func (*MockGTID) CreateUserWithPrivileges

func (mogtid *MockGTID) CreateUserWithPrivileges(db *sql.DB, user, passwd, database, table, host, privs string, ssl string) error

func (*MockGTID) DisableSemiSyncMaster

func (mogtid *MockGTID) DisableSemiSyncMaster(db *sql.DB) error

DisableSemiSyncMaster mock.

func (*MockGTID) DropUser

func (mogtid *MockGTID) DropUser(db *sql.DB, user string, host string) error

func (*MockGTID) EnableSemiSyncMaster

func (mogtid *MockGTID) EnableSemiSyncMaster(db *sql.DB) error

EnableSemiSyncMaster mock.

func (*MockGTID) GTIDBigger

func (mogtid *MockGTID) GTIDBigger(db *sql.DB, gtid1 string, gtid2 string) (bool, error)

GTIDBigger mock.

func (*MockGTID) GetGTIDSubtract

func (mogtid *MockGTID) GetGTIDSubtract(db *sql.DB, subsetGTID string, setGTID string) (string, error)

GetGTIDSubtract mock.

func (*MockGTID) GetLocalMGRStat

func (mogtid *MockGTID) GetLocalMGRStat(db *sql.DB) (*model.MGRStatus, error)

GetLocalMGRStat mock.

func (*MockGTID) GetMGRGTID

func (mogtid *MockGTID) GetMGRGTID(db *sql.DB) (*model.GTID, error)

GetMGRGTID mock.

func (*MockGTID) GetMGRMasterUUID

func (mogtid *MockGTID) GetMGRMasterUUID(db *sql.DB) (string, error)

GetMGRMasterUUID mock.

func (*MockGTID) GetMGRStats

func (mogtid *MockGTID) GetMGRStats(db *sql.DB) ([]map[string]string, error)

GetMGRStats mock.

func (*MockGTID) GetMasterGTID

func (mogtid *MockGTID) GetMasterGTID(db *sql.DB) (*model.GTID, error)

GetMasterGTID mock.

func (*MockGTID) GetReplMode

func (mogtid *MockGTID) GetReplMode() *model.MysqlReplMode

func (*MockGTID) GetSlaveGTID

func (mogtid *MockGTID) GetSlaveGTID(db *sql.DB) (*model.GTID, error)

GetSlaveGTID mock.

func (*MockGTID) GetUUID

func (mogtid *MockGTID) GetUUID(db *sql.DB) (string, error)

GetUUID mock.

func (*MockGTID) GetUser

func (mogtid *MockGTID) GetUser(db *sql.DB) ([]model.MysqlUser, error)

func (*MockGTID) GrantAllPrivileges

func (mogtid *MockGTID) GrantAllPrivileges(db *sql.DB, user string, host, passwd, ssl string) error

func (*MockGTID) GrantNormalPrivileges

func (mogtid *MockGTID) GrantNormalPrivileges(db *sql.DB, user string, host string) error

func (*MockGTID) GrantReplicationPrivileges

func (mogtid *MockGTID) GrantReplicationPrivileges(db *sql.DB, user string) error

func (*MockGTID) IsMGRRunningOK

func (mogtid *MockGTID) IsMGRRunningOK(db *sql.DB) (bool, error)

IsMGRRunningOK mock.

func (*MockGTID) MGRChangeMasterTo

func (mogtid *MockGTID) MGRChangeMasterTo(db *sql.DB, gtid *model.Repl) error

MGRChangeMasterTo mock.

func (*MockGTID) Ping

func (mogtid *MockGTID) Ping(db *sql.DB) (*PingEntry, error)

Ping mock.

func (*MockGTID) PurgeBinlogsTo

func (mogtid *MockGTID) PurgeBinlogsTo(db *sql.DB, binlog string) error

PurgeBinlogsTo mock.

func (*MockGTID) ResetMaster

func (mogtid *MockGTID) ResetMaster(db *sql.DB) error

ResetMaster mock.

func (*MockGTID) ResetSlave

func (mogtid *MockGTID) ResetSlave(db *sql.DB) error

ResetSlave mock.

func (*MockGTID) ResetSlaveAll

func (mogtid *MockGTID) ResetSlaveAll(db *sql.DB) error

ResetSlaveAll mock.

func (*MockGTID) SelectSysVar

func (mogtid *MockGTID) SelectSysVar(db *sql.DB, query string) (string, error)

SelectSysVar mock.

func (*MockGTID) SetGlobalSysVar

func (mogtid *MockGTID) SetGlobalSysVar(db *sql.DB, varsql string) error

SetGlobalSysVar mock.

func (*MockGTID) SetQueryTimeout

func (mogtid *MockGTID) SetQueryTimeout(timeout int)

SetQueryTimeout mock.

func (*MockGTID) SetReadOnly

func (mogtid *MockGTID) SetReadOnly(db *sql.DB, readonly bool) error

SetReadOnly mock.

func (*MockGTID) SetReplMode

func (mogtid *MockGTID) SetReplMode(mode model.MysqlReplMode)

func (*MockGTID) SetSemiSyncMasterTimeout

func (mogtid *MockGTID) SetSemiSyncMasterTimeout(db *sql.DB, timeout uint64) error

SetSemiSyncMasterTimeout mock.

func (*MockGTID) SetSemiWaitSlaveCount

func (mogtid *MockGTID) SetSemiWaitSlaveCount(db *sql.DB, count int) error

SetSemiWaitSlaveCount mock

func (*MockGTID) StartMGR

func (mogtid *MockGTID) StartMGR(db *sql.DB) error

StartMGR mock.

func (*MockGTID) StartSlave

func (mogtid *MockGTID) StartSlave(db *sql.DB) error

StartSlave mock.

func (*MockGTID) StartSlaveIOThread

func (mogtid *MockGTID) StartSlaveIOThread(db *sql.DB) error

StartSlaveIOThread mock.

func (*MockGTID) StopMGR

func (mogtid *MockGTID) StopMGR(db *sql.DB) error

StopMGR mock.

func (*MockGTID) StopSlave

func (mogtid *MockGTID) StopSlave(db *sql.DB) error

StopSlave mock.

func (*MockGTID) StopSlaveIOThread

func (mogtid *MockGTID) StopSlaveIOThread(db *sql.DB) error

StopSlaveIOThread mock.

func (*MockGTID) WaitApplyRelayLog

func (mogtid *MockGTID) WaitApplyRelayLog(db *sql.DB, retry int, interval int) error

WaitApplyRelayLog mock.

func (*MockGTID) WaitUntilAfterGTID

func (mogtid *MockGTID) WaitUntilAfterGTID(db *sql.DB, targetGTID string) error

WaitUntilAfterGTID mock.

type Mysql

type Mysql struct {
	// contains filtered or unexported fields
}

Mysql tuple.

func MockMysql

func MockMysql(log *nlog.Log, port int, h MysqlHandler) (string, *Mysql, func())

MockMysql mock.

func MockMysqlReplUser

func MockMysqlReplUser(log *nlog.Log, port int, h MysqlHandler) (string, *Mysql, func())

MockMysqlReplUser mock.

func NewMysql

func NewMysql(conf *config.MysqlConfig, queryTimeout int, log *nlog.Log) *Mysql

NewMysql creates the new Mysql.

func (*Mysql) ChangeMasterTo

func (m *Mysql) ChangeMasterTo(repl *model.Repl) error

ChangeMasterTo used to do the 'change master to' command for async replication.

func (*Mysql) ChangeToMaster

func (m *Mysql) ChangeToMaster(repl *model.Repl) error

ChangeToMaster used to do the 'reset slave all' command for semi-sync or do the start group_replication for MGR as master.

func (*Mysql) ChangeUserPasswd

func (m *Mysql) ChangeUserPasswd(user string, host string, passwd string) error

ChangeUserPasswd used to change the user's password.

func (*Mysql) CheckGTID

func (m *Mysql) CheckGTID(followerGTID *model.GTID, candidateGTID *model.GTID) bool

CheckGTID use to compare the followerGTID and candidateGTID

func (*Mysql) CheckUserExists

func (m *Mysql) CheckUserExists(user string, host string) (bool, error)

CheckUserExists used to check the user exists or not.

func (*Mysql) CreateReplUserWithoutBinlog

func (m *Mysql) CreateReplUserWithoutBinlog(user string, passwd string) error

CreateReplUserWithoutBinlog used to create a repl user without binlog.

func (*Mysql) CreateUser

func (m *Mysql) CreateUser(user string, host string, passwd string, ssltype string) error

CreateUser used to create the new user.

func (*Mysql) CreateUserWithPrivileges

func (m *Mysql) CreateUserWithPrivileges(user, passwd, database, table, host, privs string, ssl string) error

CreateUserWithPrivileges used to create a new user with grants.

func (*Mysql) DisableSemiSyncMaster

func (m *Mysql) DisableSemiSyncMaster() error

DisableSemiSyncMaster used to disable the semi-sync from master.

func (*Mysql) DropUser

func (m *Mysql) DropUser(user string, host string) error

DropUser used to drop a user.

func (*Mysql) EnableSemiSyncMaster

func (m *Mysql) EnableSemiSyncMaster() error

EnableSemiSyncMaster used to enable the semi-sync on master.

func (*Mysql) GTIDGreaterThan

func (m *Mysql) GTIDGreaterThan(gtid *model.GTID) (bool, model.GTID, error)

GTIDGreaterThan used to compare the gtid between from and this, for examples: master_log_file and read_master_log_pos

func (*Mysql) GTIDSetUnion

func (m *Mysql) GTIDSetUnion(gtidSet1 string, gtidSet2 string) string

GTIDSetUnion perform the union of two GTID sets, only for MGR.

func (*Mysql) GetGTID

func (m *Mysql) GetGTID() (model.GTID, error)

GetGTID returns the mysql GTID: If the repl mode is semi-sync, then return master_binlog and read_master_log_pos. 1. first try GetSlaveGTID 2. if STEP1) fails, try GetMasterGTID Otherwise, the repl mode is group-replication, then return MGR GTID.

func (*Mysql) GetGTIDSubtract

func (m *Mysql) GetGTIDSubtract(subsetGTID string, setGTID string) (string, error)

func (*Mysql) GetLocalGTID

func (m *Mysql) GetLocalGTID(gtid string) (string, error)

func (*Mysql) GetLocalMGRStat

func (m *Mysql) GetLocalMGRStat() (*model.MGRStatus, error)

GetLocalMGRStat returns the MGR status of local node.

func (*Mysql) GetMGRGTID

func (m *Mysql) GetMGRGTID() (*model.GTID, error)

GetMGRGTID used to get master binlog info.

func (*Mysql) GetMGRMasterUUID

func (m *Mysql) GetMGRMasterUUID() (string, error)

GetMGRMasterUUID used to get group replication master.

func (*Mysql) GetMGRStats

func (m *Mysql) GetMGRStats() ([]map[string]string, error)

GetMGRStats used to get group replication status of all nodes.

func (*Mysql) GetMasterGTID

func (m *Mysql) GetMasterGTID() (*model.GTID, error)

GetMasterGTID used to get master binlog info.

func (*Mysql) GetMysqlHandler

func (m *Mysql) GetMysqlHandler() *MysqlHandler

GetMysqlHandler used to get the repl handler.

func (*Mysql) GetMysqlRPC

func (m *Mysql) GetMysqlRPC() *MysqlRPC

GetMysqlRPC returns the MysqlRPC.

func (*Mysql) GetOption

func (m *Mysql) GetOption() Option

GetOption returns the mysql option.

func (*Mysql) GetRepl

func (m *Mysql) GetRepl() model.Repl

GetRepl returns the repl info.

func (*Mysql) GetReplGtidPurged

func (m *Mysql) GetReplGtidPurged() string

Get ReplGtidPurged

func (*Mysql) GetReplMode

func (m *Mysql) GetReplMode() model.MysqlReplMode

GetReplMode returns the mysql replication mode.

func (*Mysql) GetSlaveGTID

func (m *Mysql) GetSlaveGTID() (*model.GTID, error)

GetSlaveGTID used to get Relay_Master_Log_File and read_master_binlog_pos.

func (*Mysql) GetState

func (m *Mysql) GetState() model.MysqlState

GetState returns the mysql state.

func (*Mysql) GetUUID

func (m *Mysql) GetUUID() (string, error)

GetUUID used to get local uuid.

func (*Mysql) GetUser

func (m *Mysql) GetUser() ([]model.MysqlUser, error)

GetUser used to get the mysql user list.

func (*Mysql) GrantAllPrivileges

func (m *Mysql) GrantAllPrivileges(user string, host string, passwd string, ssl string) error

GrantAllPrivileges used to grants all privs for the user.

func (*Mysql) GrantNormalPrivileges

func (m *Mysql) GrantNormalPrivileges(user string, host string) error

GrantNormalPrivileges used grant normal privs.

func (*Mysql) GrantReplicationPrivileges

func (m *Mysql) GrantReplicationPrivileges(user string) error

GrantReplicationPrivileges used to grant replication privs.

func (*Mysql) IncMysqlDowns

func (s *Mysql) IncMysqlDowns()

IncMysqlDowns used to increase the mysql down counter.

func (*Mysql) IsMGRRunningOK

func (m *Mysql) IsMGRRunningOK() (bool, error)

IsMGRRunningOK used to check whether the local MGR is running

func (*Mysql) MGRChangeMasterTo

func (m *Mysql) MGRChangeMasterTo(repl *model.Repl) error

MGRChangeMasterTo used to do the 'change master to' command for MGR.

func (*Mysql) MGRGTIDGreaterThan

func (m *Mysql) MGRGTIDGreaterThan(gtid *model.GTID) (bool, model.GTID, error)

GTIDGreaterThan used to compare GTID.

func (*Mysql) Ping

func (m *Mysql) Ping()

Ping used to get the master binlog every ping.

func (*Mysql) PingStart

func (m *Mysql) PingStart()

PingStart used to start the ping.

func (*Mysql) PingStop

func (m *Mysql) PingStop()

PingStop used to stop the ping.

func (*Mysql) Promotable

func (m *Mysql) Promotable() bool

Promotable used to check whether we can promote to candidate. Promotable: 1. MySQL is MysqlAlive 2. Slave_SQL_Running

NOTES: we do not consider Slave_IO_Running to Promotable, because the MySQL of leader maybe down the slaves Slave_IO_Running is false, because it's in connecting state

func (*Mysql) PurgeBinlogsTo

func (m *Mysql) PurgeBinlogsTo(binlog string) error

PurgeBinlogsTo used to purge binlog.

func (*Mysql) RelayMasterLogFile

func (m *Mysql) RelayMasterLogFile() string

RelayMasterLogFile returns RelayMasterLogFile.

func (*Mysql) ResetMaster

func (m *Mysql) ResetMaster() error

ResetMaster used to reset master.

func (*Mysql) ResetSlave

func (m *Mysql) ResetSlave() error

ResetSlave used to reset slave.

func (*Mysql) ResetSlaveAll

func (m *Mysql) ResetSlaveAll() error

ResetSlaveAll used to reset slave.

func (*Mysql) SemiSyncGTIDGreaterThan

func (m *Mysql) SemiSyncGTIDGreaterThan(gtid *model.GTID) (bool, model.GTID, error)

func (*Mysql) SetGlobalSysVar

func (m *Mysql) SetGlobalSysVar(varsql string) error

SetGlobalSysVar used to set global variables.

func (*Mysql) SetMasterGlobalSysVar

func (m *Mysql) SetMasterGlobalSysVar() error

SetMasterGlobalSysVar used to set master global variables.

func (*Mysql) SetMysqlHandler

func (m *Mysql) SetMysqlHandler(h MysqlHandler)

SetMysqlHandler used to set the repl handler.

func (*Mysql) SetReadOnly

func (m *Mysql) SetReadOnly() (err error)

SetReadOnly used to set the mysql to readonly.

func (*Mysql) SetReadWrite

func (m *Mysql) SetReadWrite() (err error)

SetReadWrite used to set the mysql to write.

func (*Mysql) SetReplMode

func (m *Mysql) SetReplMode(mode model.MysqlReplMode)

SetReplMode set the mysql replication mode.

func (*Mysql) SetSemiSyncMasterTimeout

func (m *Mysql) SetSemiSyncMasterTimeout(timeout uint64) error

SetSemiSyncMasterTimeout used to set semi-sync master timeout.

func (*Mysql) SetSemiWaitSlaveCount

func (m *Mysql) SetSemiWaitSlaveCount(count int) error

SetSemiWaitSlaveCount used to set rpl_semi_sync_master_wait_for_slave_count

func (*Mysql) SetSlaveGlobalSysVar

func (m *Mysql) SetSlaveGlobalSysVar() error

SetSlaveGlobalSysVar used to set slave global variables.

func (*Mysql) SetState

func (m *Mysql) SetState(state model.MysqlState)

SetState set the mysql state.

func (*Mysql) ShouldDeferFailover

func (m *Mysql) ShouldDeferFailover() bool

ShouldDeferFailover reports whether leader failover should be skipped because MySQL is unreachable only due to max_connections (Error 1040).

func (*Mysql) StartMGR

func (m *Mysql) StartMGR() error

StartMGR used to start group_replication

func (*Mysql) StartSlave

func (m *Mysql) StartSlave() error

StartSlave used to start the slave.

func (*Mysql) StartSlaveIOThread

func (m *Mysql) StartSlaveIOThread() error

StartSlaveIOThread used to start the slave io thread.

func (*Mysql) StopMGR

func (m *Mysql) StopMGR() error

StopMGR used to stop group_replication

func (*Mysql) StopSlave

func (m *Mysql) StopSlave() error

StopSlave used to stop the slave.

func (*Mysql) StopSlaveIOThread

func (m *Mysql) StopSlaveIOThread() error

StopSlaveIOThread used to stop the slave io thread.

func (*Mysql) WaitApplyRelayLog

func (m *Mysql) WaitApplyRelayLog(retry int, interval int) error

WaitApplyRelayLog used to do 'SELECT WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' command.

func (*Mysql) WaitMysqlWorks

func (m *Mysql) WaitMysqlWorks(timeout int) error

WaitMysqlWorks used to wait for the mysqld to work.

func (*Mysql) WaitUntilAfterGTID

func (m *Mysql) WaitUntilAfterGTID(targetGTID string) error

WaitUntilAfterGTID used to do 'SELECT WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' command.

func (*Mysql) Warmup

func (m *Mysql) Warmup() error

Warmup opens the admin pool and keeps at least one connection before periodic ping.

type Mysql56

type Mysql56 struct {
	MysqlBase
}

Mysql56 tuple.

func (*Mysql56) ChangeUserPasswd

func (my *Mysql56) ChangeUserPasswd(db *sql.DB, user string, host string, passwd string) error

ChangeUserPasswd used to change the user password.

func (*Mysql56) CreateUser

func (my *Mysql56) CreateUser(db *sql.DB, user string, host string, passwd string, ssltype string) error

CreateUser use to create new user.

func (*Mysql56) CreateUserWithPrivileges

func (my *Mysql56) CreateUserWithPrivileges(db *sql.DB, user, passwd, database, table, host, privs string, ssl string) error

CreateUserWithPrivileges for create normal user.

func (*Mysql56) GrantAllPrivileges

func (my *Mysql56) GrantAllPrivileges(db *sql.DB, user string, host string, passwd string, ssl string) error

GrantAllPrivileges used to grant all privis.

func (*Mysql56) SetSemiWaitSlaveCount

func (my *Mysql56) SetSemiWaitSlaveCount(db *sql.DB, count int) error

SetSemiWaitSlaveCount used set rpl_semi_sync_master_wait_for_slave_count

type Mysql57

type Mysql57 struct {
	MysqlBase
}

Mysql57 tuple.

func (*Mysql57) GetLocalMGRStat

func (my *Mysql57) GetLocalMGRStat(db *sql.DB) (*model.MGRStatus, error)

GetLocalMGRStat used to get MGR status.

type Mysql80

type Mysql80 struct {
	MysqlBase
}

Mysql80 tuple.

func (*Mysql80) GetLocalMGRStat

func (my *Mysql80) GetLocalMGRStat(db *sql.DB) (*model.MGRStatus, error)

GetLocalMGRStat used to get MGR status.

func (*Mysql80) GetMGRStats

func (my *Mysql80) GetMGRStats(db *sql.DB) ([]map[string]string, error)

GetMGRStats used to get group_replication status of all nodes.

type MysqlBase

type MysqlBase struct {
	MysqlHandler
	// contains filtered or unexported fields
}

MysqlBase tuple.

func (*MysqlBase) ChangeMasterTo

func (my *MysqlBase) ChangeMasterTo(db *sql.DB, master *model.Repl) error

ChangeMasterTo stop for all channels and reset all replication filter to null. We never set replication filter.

func (*MysqlBase) ChangeToMaster

func (my *MysqlBase) ChangeToMaster(db *sql.DB, master *model.Repl) error

ChangeToMaster changes a slave to be master.

func (*MysqlBase) ChangeUserPasswd

func (my *MysqlBase) ChangeUserPasswd(db *sql.DB, user string, host string, passwd string) error

ChangeUserPasswd used to change the user password.

func (*MysqlBase) CheckUserExists

func (my *MysqlBase) CheckUserExists(db *sql.DB, user string, host string) (bool, error)

CheckUserExists used to check the user exists or not.

func (*MysqlBase) CreateReplUserWithoutBinlog

func (my *MysqlBase) CreateReplUserWithoutBinlog(db *sql.DB, user string, passwd string) error

CreateReplUserWithoutBinlog create replication accounts without writing binlog.

func (*MysqlBase) CreateUser

func (my *MysqlBase) CreateUser(db *sql.DB, user string, host string, passwd string, ssltype string) error

CreateUser use to create new user. see http://dev.mysql.com/doc/refman/5.7/en/string-literals.html

func (*MysqlBase) CreateUserWithPrivileges

func (my *MysqlBase) CreateUserWithPrivileges(db *sql.DB, user, passwd, database, table, host, privs string, ssl string) error

CreateUserWithPrivileges for create normal user.

func (*MysqlBase) DisableSemiSyncMaster

func (my *MysqlBase) DisableSemiSyncMaster(db *sql.DB) error

DisableSemiSyncMaster used to disable the semi-sync from master.

func (*MysqlBase) DropUser

func (my *MysqlBase) DropUser(db *sql.DB, user string, host string) error

DropUser used to drop the user.

func (*MysqlBase) EnableSemiSyncMaster

func (my *MysqlBase) EnableSemiSyncMaster(db *sql.DB) error

EnableSemiSyncMaster used to enable the semi-sync on master.

func (*MysqlBase) GTIDBigger

func (my *MysqlBase) GTIDBigger(db *sql.DB, gtid1 string, gtid2 string) (bool, error)

GTIDBigger determine if the first GTID is bigger than another one.

func (*MysqlBase) GTIDDiff

func (my *MysqlBase) GTIDDiff(db *sql.DB, gtid1 string, gtid2 string) (string, error)

GTIDDiff used to get difference between gtid1 and gtid2. If gtid1 < gtid2, return "0" For example: gtid1 is uuid:1-100:1000-1003:2000-2005, gtid2 is uuid:1-99:1000-1002:2000-2005, the diff is 2

func (*MysqlBase) GTIDSubtract

func (my *MysqlBase) GTIDSubtract(db *sql.DB, gtid1 string, gtid2 string) ([]map[string]string, error)

GTIDSubtract used to execute GTID_SUBTRACT

func (*MysqlBase) GetGTIDSubtract

func (my *MysqlBase) GetGTIDSubtract(db *sql.DB, subsetGTID string, setGTID string) (string, error)

GetGTIDSubtract used to do "SELECT GTID_SUBTRACT('subsetGTID','setGTID') as gtid_sub" command

func (*MysqlBase) GetMGRGTID

func (my *MysqlBase) GetMGRGTID(db *sql.DB) (*model.GTID, error)

GetMGRGTID used to get binlog info from MGR.

func (*MysqlBase) GetMGRMasterUUID

func (my *MysqlBase) GetMGRMasterUUID(db *sql.DB) (string, error)

GetMGRMasterUUID used to get uuid of master.

func (*MysqlBase) GetMGRStats

func (my *MysqlBase) GetMGRStats(db *sql.DB) ([]map[string]string, error)

GetMGRStats used to get group_replication status of all nodes.

func (*MysqlBase) GetMasterGTID

func (my *MysqlBase) GetMasterGTID(db *sql.DB) (*model.GTID, error)

GetMasterGTID used to get binlog info from master.

func (*MysqlBase) GetReplMode

func (my *MysqlBase) GetReplMode() *model.MysqlReplMode

GetReplMode used to get replication mode

func (*MysqlBase) GetServerID

func (my *MysqlBase) GetServerID(db *sql.DB) (string, error)

GetServerID used to get uuid.

func (*MysqlBase) GetSlaveGTID

func (my *MysqlBase) GetSlaveGTID(db *sql.DB) (*model.GTID, error)

GetSlaveGTID gets the gtid from the default channel. Here, We just show the default slave channel.

func (*MysqlBase) GetUUID

func (my *MysqlBase) GetUUID(db *sql.DB) (string, error)

GetUUID used to get local uuid.

func (*MysqlBase) GetUser

func (my *MysqlBase) GetUser(db *sql.DB) ([]model.MysqlUser, error)

GetUser used to get the mysql user list

func (*MysqlBase) GrantAllPrivileges

func (my *MysqlBase) GrantAllPrivileges(db *sql.DB, user string, host string, passwd string, ssl string) error

GrantAllPrivileges used to grant all privis.

func (*MysqlBase) GrantNormalPrivileges

func (my *MysqlBase) GrantNormalPrivileges(db *sql.DB, user string, host string) error

GrantNormalPrivileges used to grants normal privileges.

func (*MysqlBase) GrantReplicationPrivileges

func (my *MysqlBase) GrantReplicationPrivileges(db *sql.DB, user string) error

GrantReplicationPrivileges used to grant repli privis.

func (*MysqlBase) IsMGRRunningOK

func (my *MysqlBase) IsMGRRunningOK(db *sql.DB) (bool, error)

IsMGRRunningOK used to check whether local MGR is running

func (*MysqlBase) MGRChangeMasterTo

func (my *MysqlBase) MGRChangeMasterTo(db *sql.DB, master *model.Repl) error

MGRChangeMasterTo stop for all channels and reset all replication filter to null. In NeoHA, we never set replication filter.

func (*MysqlBase) MGRChangeMasterToCommands

func (my *MysqlBase) MGRChangeMasterToCommands(master *model.Repl) []string

func (*MysqlBase) Ping

func (my *MysqlBase) Ping(db *sql.DB) (*PingEntry, error)

Ping has 2 affects: one for heath check other for get master_binglog the slave is syncing

func (*MysqlBase) PurgeBinlogsTo

func (my *MysqlBase) PurgeBinlogsTo(db *sql.DB, binlog string) error

PurgeBinlogsTo used to purge binlog.

func (*MysqlBase) ResetMaster

func (my *MysqlBase) ResetMaster(db *sql.DB) error

ResetMaster used to reset master.

func (*MysqlBase) ResetSlave

func (my *MysqlBase) ResetSlave(db *sql.DB) error

ResetSlave used to reset slave.

func (*MysqlBase) ResetSlaveAll

func (my *MysqlBase) ResetSlaveAll(db *sql.DB) error

ResetSlaveAll used to reset slave.

func (*MysqlBase) SetGlobalSysVar

func (my *MysqlBase) SetGlobalSysVar(db *sql.DB, varsql string) error

SetGlobalSysVar used to set global variables.

func (*MysqlBase) SetQueryTimeout

func (my *MysqlBase) SetQueryTimeout(timeout int)

SetQueryTimeout used to set parameter queryTimeout

func (*MysqlBase) SetReadOnly

func (my *MysqlBase) SetReadOnly(db *sql.DB, readonly bool) error

SetReadOnly used to set mysql to readonly.

func (*MysqlBase) SetReplMode

func (my *MysqlBase) SetReplMode(replMode model.MysqlReplMode)

SetReplMode used to set replication mode

func (*MysqlBase) SetSemiSyncMasterTimeout

func (my *MysqlBase) SetSemiSyncMasterTimeout(db *sql.DB, timeout uint64) error

SetSemiSyncMasterTimeout used to set semi-sync master timeout

func (*MysqlBase) SetSemiWaitSlaveCount

func (my *MysqlBase) SetSemiWaitSlaveCount(db *sql.DB, count int) error

SetSemiWaitSlaveCount used set rpl_semi_sync_master_wait_for_slave_count

func (*MysqlBase) StartMGR

func (my *MysqlBase) StartMGR(db *sql.DB) error

StartMGR used to start group_replication.

func (*MysqlBase) StartSlave

func (my *MysqlBase) StartSlave(db *sql.DB) error

StartSlave used to start slave.

func (*MysqlBase) StartSlaveIOThread

func (my *MysqlBase) StartSlaveIOThread(db *sql.DB) error

StartSlaveIOThread used to start the io thread.

func (*MysqlBase) StopMGR

func (my *MysqlBase) StopMGR(db *sql.DB) error

StopMGR used to stop group_replication.

func (*MysqlBase) StopSlave

func (my *MysqlBase) StopSlave(db *sql.DB) error

StopSlave used to stop the slave.

func (*MysqlBase) StopSlaveIOThread

func (my *MysqlBase) StopSlaveIOThread(db *sql.DB) error

StopSlaveIOThread used to stop the op thread.

func (*MysqlBase) WaitApplyRelayLog

func (my *MysqlBase) WaitApplyRelayLog(db *sql.DB, retry int, interval int) error

WaitApplyRelayLog used to wait for the relay to apply completed.

func (*MysqlBase) WaitUntilAfterGTID

func (my *MysqlBase) WaitUntilAfterGTID(db *sql.DB, targetGTID string) error

WaitUntilAfterGTID used to do 'SELECT WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' command. https://dev.mysql.com/doc/refman/5.7/en/gtid-functions.html

type MysqlHandler

type MysqlHandler interface {
	SetReplMode(mode model.MysqlReplMode)
	GetReplMode() *model.MysqlReplMode
	SetQueryTimeout(int)

	// check health and return log_bin_basename
	Ping(*sql.DB) (*PingEntry, error)

	// set mysql readonly variable
	SetReadOnly(*sql.DB, bool) error

	// get local UUID
	GetUUID(*sql.DB) (string, error)

	// get GTID from traversal binlog folder and find the newest one
	GetMasterGTID(*sql.DB) (*model.GTID, error)
	GetMGRGTID(*sql.DB) (*model.GTID, error)

	// whether the first GTID is a subset of another one
	GTIDBigger(*sql.DB, string, string) (bool, error)

	// get GTID from SHOW SLAVE STATUS
	GetSlaveGTID(*sql.DB) (*model.GTID, error)

	// start slave io_thread
	StartSlaveIOThread(*sql.DB) error

	// stop slave io_thread
	StopSlaveIOThread(*sql.DB) error

	// start slave
	StartSlave(*sql.DB) error

	// stop slave
	StopSlave(*sql.DB) error

	// use the provided master as the new master
	ChangeMasterTo(*sql.DB, *model.Repl) error

	// check whether local MGR is running
	IsMGRRunningOK(*sql.DB) (bool, error)

	// start group_replication
	StartMGR(*sql.DB) error

	// stop group_replication
	StopMGR(*sql.DB) error

	// use the provided master as the new master
	MGRChangeMasterTo(*sql.DB, *model.Repl) error

	// change a slave to master
	ChangeToMaster(*sql.DB, *model.Repl) error

	// get group replication status
	GetMGRStats(db *sql.DB) ([]map[string]string, error)

	// get group_replication status of local nodes
	GetLocalMGRStat(db *sql.DB) (*model.MGRStatus, error)

	// get group replication master
	GetMGRMasterUUID(db *sql.DB) (string, error)

	// waits until apply relay log completed
	WaitApplyRelayLog(*sql.DB, int, int) error

	// waits until slave replication reaches at least targetGTID
	WaitUntilAfterGTID(*sql.DB, string) error

	// get gtid subtract with slavegtid and master gtid
	GetGTIDSubtract(*sql.DB, string, string) (string, error)

	// set global variables
	SetGlobalSysVar(db *sql.DB, varsql string) error

	// reset master
	ResetMaster(db *sql.DB) error

	// reset slave
	ResetSlave(db *sql.DB) error

	// reset slave all
	ResetSlaveAll(db *sql.DB) error

	// purge binglog to
	PurgeBinlogsTo(*sql.DB, string) error

	// enable master semi sync: wait slave ack
	EnableSemiSyncMaster(db *sql.DB) error

	// disable master semi sync: don't wait slave ack
	DisableSemiSyncMaster(db *sql.DB) error

	// set semi-sync master-timeout
	SetSemiSyncMasterTimeout(db *sql.DB, timeout uint64) error

	//set rpl_semi_master_wait_for_slave_count
	SetSemiWaitSlaveCount(db *sql.DB, count int) error

	// User handlers.
	GetUser(*sql.DB) ([]model.MysqlUser, error)
	CheckUserExists(*sql.DB, string, string) (bool, error)
	CreateUser(*sql.DB, string, string, string, string) error
	DropUser(*sql.DB, string, string) error
	ChangeUserPasswd(*sql.DB, string, string, string) error
	CreateReplUserWithoutBinlog(*sql.DB, string, string) error
	GrantAllPrivileges(*sql.DB, string, string, string, string) error
	GrantNormalPrivileges(*sql.DB, string, string) error
	CreateUserWithPrivileges(db *sql.DB, user, passwd, database, table, host, privs string, ssl string) error
	GrantReplicationPrivileges(*sql.DB, string) error
}

MysqlHandler interface.

type MysqlRPC

type MysqlRPC struct {
	// contains filtered or unexported fields
}

MysqlRPC tuple.

func (*MysqlRPC) ChangeToMaster

func (m *MysqlRPC) ChangeToMaster(req *model.MysqlRPCRequest, rsp *model.MysqlRPCResponse) error

ChangeToMaster used to do 'reset slave all' command.

func (*MysqlRPC) GTIDSubtract

GTIDSubstract returns the mysql GTID subtract info.

func (*MysqlRPC) IsWorking

func (m *MysqlRPC) IsWorking(req *model.MysqlRPCRequest, rsp *model.MysqlRPCResponse) error

IsWorking used to check the mysql works or not.

func (*MysqlRPC) ResetMaster

func (m *MysqlRPC) ResetMaster(req *model.MysqlRPCRequest, rsp *model.MysqlRPCResponse) error

ResetMaster used to reset master.

func (*MysqlRPC) ResetSlave

func (m *MysqlRPC) ResetSlave(req *model.MysqlRPCRequest, rsp *model.MysqlRPCResponse) error

ResetSlave used to reset slave.

func (*MysqlRPC) ResetSlaveAll

func (m *MysqlRPC) ResetSlaveAll(req *model.MysqlRPCRequest, rsp *model.MysqlRPCResponse) error

ResetSlaveAll used to reset slave.

func (*MysqlRPC) SetGlobalSysVar

func (m *MysqlRPC) SetGlobalSysVar(req *model.MysqlVarRPCRequest, rsp *model.MysqlVarRPCResponse) error

SetGlobalSysVar used to set global vars.

func (*MysqlRPC) SetState

SetState used to set the mysql state.

func (*MysqlRPC) StartSlave

func (m *MysqlRPC) StartSlave(req *model.MysqlRPCRequest, rsp *model.MysqlRPCResponse) error

StartSlave used to start the slave.

func (*MysqlRPC) Status

Status returns the mysql GTID info.

func (*MysqlRPC) StopSlave

func (m *MysqlRPC) StopSlave(req *model.MysqlRPCRequest, rsp *model.MysqlRPCResponse) error

StopSlave used to stop the slave.

type Option

type Option string

Option enum.

const (
	// MysqlReadonly enum.
	MysqlReadonly Option = "READONLY"
	// MysqlReadwrite enum.
	MysqlReadwrite Option = "READWRITE"
)

type PingEntry

type PingEntry struct {
	Relay_Master_Log_File string
}

PingEntry tuple.

func DefaultPing

func DefaultPing(db *sql.DB) (*PingEntry, error)

DefaultPing mock.

func PingError1

func PingError1(db *sql.DB) (*PingEntry, error)

PingError1 mock.

func PingError2

func PingError2(db *sql.DB) (*PingEntry, error)

PingError2 mock.

func PingX1

func PingX1(db *sql.DB) (*PingEntry, error)

PingX1 mock.

func PingX3

func PingX3(db *sql.DB) (*PingEntry, error)

PingX3 mock.

func PingX5

func PingX5(db *sql.DB) (*PingEntry, error)

PingX5 mock.

Jump to

Keyboard shortcuts

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