Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var TabletManagerProtocol = flag.String("tablet_manager_protocol", "bson", "the protocol to use to talk to vttablet")
TabletManagerProtocol is the implementation to use for tablet manager protocol. It is exported for tests only.
Functions ¶
func RegisterTabletManagerClientFactory ¶
func RegisterTabletManagerClientFactory(name string, factory TabletManagerClientFactory)
RegisterTabletManagerClientFactory allows modules to register TabletManagerClient implementations. Should be called on init().
Types ¶
type ErrFunc ¶
type ErrFunc func() error
ErrFunc is used by streaming RPCs that don't return a specific result
type TabletManagerClient ¶
type TabletManagerClient interface { // Ping will try to ping the remote tablet Ping(ctx context.Context, tablet *topo.TabletInfo) error // GetSchema asks the remote tablet for its database schema GetSchema(ctx context.Context, tablet *topo.TabletInfo, tables, excludeTables []string, includeViews bool) (*myproto.SchemaDefinition, error) // GetPermissions asks the remote tablet for its permissions list GetPermissions(ctx context.Context, tablet *topo.TabletInfo) (*myproto.Permissions, error) // SetReadOnly makes the mysql instance read-only SetReadOnly(ctx context.Context, tablet *topo.TabletInfo) error // SetReadWrite makes the mysql instance read-write SetReadWrite(ctx context.Context, tablet *topo.TabletInfo) error // ChangeType asks the remote tablet to change its type ChangeType(ctx context.Context, tablet *topo.TabletInfo, dbType pb.TabletType) error // Scrap scraps the live running tablet Scrap(ctx context.Context, tablet *topo.TabletInfo) error // Sleep will sleep for a duration (used for tests) Sleep(ctx context.Context, tablet *topo.TabletInfo, duration time.Duration) error // ExecuteHook executes the provided hook remotely ExecuteHook(ctx context.Context, tablet *topo.TabletInfo, hk *hook.Hook) (*hook.HookResult, error) // RefreshState asks the remote tablet to reload its tablet record RefreshState(ctx context.Context, tablet *topo.TabletInfo) error // RunHealthCheck asks the remote tablet to run a health check cycle RunHealthCheck(ctx context.Context, tablet *topo.TabletInfo, targetTabletType pb.TabletType) error // ReloadSchema asks the remote tablet to reload its schema ReloadSchema(ctx context.Context, tablet *topo.TabletInfo) error // PreflightSchema will test a schema change PreflightSchema(ctx context.Context, tablet *topo.TabletInfo, change string) (*myproto.SchemaChangeResult, error) // ApplySchema will apply a schema change ApplySchema(ctx context.Context, tablet *topo.TabletInfo, change *myproto.SchemaChange) (*myproto.SchemaChangeResult, error) // ExecuteFetchAsDba executes a query remotely using the DBA pool ExecuteFetchAsDba(ctx context.Context, tablet *topo.TabletInfo, query string, maxRows int, wantFields, disableBinlogs, reloadSchema bool) (*mproto.QueryResult, error) // ExecuteFetchAsApp executes a query remotely using the App pool ExecuteFetchAsApp(ctx context.Context, tablet *topo.TabletInfo, query string, maxRows int, wantFields bool) (*mproto.QueryResult, error) // SlaveStatus returns the tablet's mysql slave status. SlaveStatus(ctx context.Context, tablet *topo.TabletInfo) (myproto.ReplicationStatus, error) // MasterPosition returns the tablet's master position MasterPosition(ctx context.Context, tablet *topo.TabletInfo) (myproto.ReplicationPosition, error) // StopSlave stops the mysql replication StopSlave(ctx context.Context, tablet *topo.TabletInfo) error // StopSlaveMinimum stops the mysql replication after it reaches // the provided minimum point StopSlaveMinimum(ctx context.Context, tablet *topo.TabletInfo, stopPos myproto.ReplicationPosition, waitTime time.Duration) (myproto.ReplicationPosition, error) // StartSlave starts the mysql replication StartSlave(ctx context.Context, tablet *topo.TabletInfo) error // TabletExternallyReparented tells a tablet it is now the master, after an // external tool has already promoted the underlying mysqld to master and // reparented the other mysqld servers to it. // // externalID is an optional string provided by the external tool that // vttablet will emit in logs to facilitate cross-referencing. TabletExternallyReparented(ctx context.Context, tablet *topo.TabletInfo, externalID string) error // GetSlaves returns the addresses of the slaves GetSlaves(ctx context.Context, tablet *topo.TabletInfo) ([]string, error) // WaitBlpPosition asks the tablet to wait until it reaches that // position in replication WaitBlpPosition(ctx context.Context, tablet *topo.TabletInfo, blpPosition blproto.BlpPosition, waitTime time.Duration) error // StopBlp asks the tablet to stop all its binlog players, // and returns the current position for all of them StopBlp(ctx context.Context, tablet *topo.TabletInfo) (*blproto.BlpPositionList, error) // StartBlp asks the tablet to restart its binlog players StartBlp(ctx context.Context, tablet *topo.TabletInfo) error // RunBlpUntil asks the tablet to restart its binlog players until // it reaches the given positions, if not there yet. RunBlpUntil(ctx context.Context, tablet *topo.TabletInfo, positions *blproto.BlpPositionList, waitTime time.Duration) (myproto.ReplicationPosition, error) // ResetReplication tells a tablet to completely reset its // replication. All binary and relay logs are flushed. All // replication positions are reset. ResetReplication(ctx context.Context, tablet *topo.TabletInfo) error // InitMaster tells a tablet to make itself the new master, // and return the replication position the slaves should use to // reparent to it. InitMaster(ctx context.Context, tablet *topo.TabletInfo) (myproto.ReplicationPosition, error) // PopulateReparentJournal asks the master to insert a row in // its reparent_journal table. PopulateReparentJournal(ctx context.Context, tablet *topo.TabletInfo, timeCreatedNS int64, actionName string, masterAlias *pb.TabletAlias, pos myproto.ReplicationPosition) error // InitSlave tells a tablet to make itself a slave to the // passed in master tablet alias, and wait for the row in the // reparent_journal table. InitSlave(ctx context.Context, tablet *topo.TabletInfo, parent *pb.TabletAlias, replicationPosition myproto.ReplicationPosition, timeCreatedNS int64) error // DemoteMaster tells the soon-to-be-former master it's gonna change, // and it should go read-only and return its current position. DemoteMaster(ctx context.Context, tablet *topo.TabletInfo) (myproto.ReplicationPosition, error) // PromoteSlaveWhenCaughtUp transforms the tablet from a slave to a master. PromoteSlaveWhenCaughtUp(ctx context.Context, tablet *topo.TabletInfo, pos myproto.ReplicationPosition) (myproto.ReplicationPosition, error) // SlaveWasPromoted tells the remote tablet it is now the master SlaveWasPromoted(ctx context.Context, tablet *topo.TabletInfo) error // SetMaster tells a tablet to make itself a slave to the // passed in master tablet alias, and wait for the row in the // reparent_journal table (if timeCreatedNS is non-zero). SetMaster(ctx context.Context, tablet *topo.TabletInfo, parent *pb.TabletAlias, timeCreatedNS int64, forceStartSlave bool) error // SlaveWasRestarted tells the remote tablet its master has changed SlaveWasRestarted(ctx context.Context, tablet *topo.TabletInfo, args *actionnode.SlaveWasRestartedArgs) error // StopReplicationAndGetStatus stops replication and returns the // current position. StopReplicationAndGetStatus(ctx context.Context, tablet *topo.TabletInfo) (myproto.ReplicationStatus, error) // PromoteSlave makes the tablet the new master PromoteSlave(ctx context.Context, tablet *topo.TabletInfo) (myproto.ReplicationPosition, error) // Backup creates a database backup Backup(ctx context.Context, tablet *topo.TabletInfo, concurrency int) (<-chan *logutil.LoggerEvent, ErrFunc, error) // IsTimeoutError checks if an error was caused by an RPC layer timeout vs an application-specific one IsTimeoutError(err error) bool }
TabletManagerClient defines the interface used to talk to a remote tablet
func NewTabletManagerClient ¶
func NewTabletManagerClient() TabletManagerClient
NewTabletManagerClient creates a new TabletManagerClient. Should be called after flags are parsed.
type TabletManagerClientFactory ¶
type TabletManagerClientFactory func() TabletManagerClient
TabletManagerClientFactory is the factory method to create TabletManagerClient objects.
Click to show internal directories.
Click to hide internal directories.