зеркало из https://github.com/github/vitess-gh.git
Adds RPCs to vttablet that vtorc requires (#10464)
* feat: add vttablet rpc to reset replication parameters Signed-off-by: Manan Gupta <manan@planetscale.com> * feat: added end to end testing for the rpc and fixed bug Signed-off-by: Manan Gupta <manan@planetscale.com> * feat: fix typing error Signed-off-by: Manan Gupta <manan@planetscale.com> * feat: add basic full status rpc functionality and add test for it Signed-off-by: Manan Gupta <manan@planetscale.com> * feat: add all the fields needed in full status Signed-off-by: Manan Gupta <manan@planetscale.com> * test: moved the test to reparent tests and improved it Signed-off-by: Manan Gupta <manan@planetscale.com> * feat: bug fix for no replication status and no primary status Signed-off-by: Manan Gupta <manan@planetscale.com> * feat: add version to the full status output Signed-off-by: Manan Gupta <manan@planetscale.com> * feat: add binlog information to full status Signed-off-by: Manan Gupta <manan@planetscale.com> * docs: fix the comment explaining the binlog information Signed-off-by: Manan Gupta <manan@planetscale.com> * feat: add semi-sync statuses to full status Signed-off-by: Manan Gupta <manan@planetscale.com> * feat: call the correct command Signed-off-by: Manan Gupta <manan@planetscale.com> * feat: add server uuid and id to full status Signed-off-by: Manan Gupta <manan@planetscale.com> * feat: make server_id a uint32 to accept the correct range of values Signed-off-by: Manan Gupta <manan@planetscale.com> * feat: add few more fields to the full status like version comment, semi-sync settings, binlog_row_image Signed-off-by: Manan Gupta <manan@planetscale.com> * feat: generate vtadmin proto files Signed-off-by: Manan Gupta <manan@planetscale.com> * test: add assertion to check binlog row format is read correctly Signed-off-by: Manan Gupta <manan@planetscale.com> * feat: split GTID mode in its own function because mariadb doesn't support it Signed-off-by: Manan Gupta <manan@planetscale.com> * feat: fix parsing of empty mariadb gtid set Signed-off-by: Manan Gupta <manan@planetscale.com> * docs: add doucmentation for existing fields in ReplicationStatus Signed-off-by: Manan Gupta <manan@planetscale.com> * feat: add relay log file position to the replication status output Signed-off-by: Manan Gupta <manan@planetscale.com> * test: augmented full status test to check all the different positions stored Signed-off-by: Manan Gupta <manan@planetscale.com> * feat: add additional fields to replication status and read source user Signed-off-by: Manan Gupta <manan@planetscale.com> * feat: read sql delay from show replica status output Signed-off-by: Manan Gupta <manan@planetscale.com> * feat: read ssl allowed from show replica status output Signed-off-by: Manan Gupta <manan@planetscale.com> * feat: read has replication filters from show replica status output Signed-off-by: Manan Gupta <manan@planetscale.com> * feat: read auto position and using gtid from show replica status output Signed-off-by: Manan Gupta <manan@planetscale.com> * feat: add replication lag unknown too to replication status Signed-off-by: Manan Gupta <manan@planetscale.com> * feat: return nils from replication and primary postiion if it is not present Signed-off-by: Manan Gupta <manan@planetscale.com> * feat: rename FileRelayLogPosition in replication status output to RelayLogSourceBinLogEquivalentPosition and augment test to make sure rpc changes are backward compatible Signed-off-by: Manan Gupta <manan@planetscale.com> * feat: update vtadmin proto files Signed-off-by: Manan Gupta <manan@planetscale.com> * refactor: rename BinLog to binlog in renamed proto field Signed-off-by: Manan Gupta <manan@planetscale.com>
This commit is contained in:
Родитель
a595babb65
Коммит
611a2601ed
|
@ -75,6 +75,15 @@ type flavor interface {
|
|||
// primaryGTIDSet returns the current GTIDSet of a server.
|
||||
primaryGTIDSet(c *Conn) (GTIDSet, error)
|
||||
|
||||
// purgedGTIDSet returns the purged GTIDSet of a server.
|
||||
purgedGTIDSet(c *Conn) (GTIDSet, error)
|
||||
|
||||
// gtidMode returns the gtid mode of a server.
|
||||
gtidMode(c *Conn) (string, error)
|
||||
|
||||
// serverUUID returns the UUID of a server.
|
||||
serverUUID(c *Conn) (string, error)
|
||||
|
||||
// startReplicationCommand returns the command to start the replication.
|
||||
startReplicationCommand() string
|
||||
|
||||
|
@ -112,6 +121,10 @@ type flavor interface {
|
|||
// replication on the host.
|
||||
resetReplicationCommands(c *Conn) []string
|
||||
|
||||
// resetReplicationParametersCommands returns the commands to reset
|
||||
// replication parameters on the host.
|
||||
resetReplicationParametersCommands(c *Conn) []string
|
||||
|
||||
// setReplicationPositionCommands returns the commands to set the
|
||||
// replication position at which the replica will resume.
|
||||
setReplicationPositionCommands(pos Position) []string
|
||||
|
@ -266,6 +279,27 @@ func (c *Conn) PrimaryPosition() (Position, error) {
|
|||
}, nil
|
||||
}
|
||||
|
||||
// GetGTIDPurged returns the tablet's GTIDs which are purged.
|
||||
func (c *Conn) GetGTIDPurged() (Position, error) {
|
||||
gtidSet, err := c.flavor.purgedGTIDSet(c)
|
||||
if err != nil {
|
||||
return Position{}, err
|
||||
}
|
||||
return Position{
|
||||
GTIDSet: gtidSet,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// GetGTIDMode returns the tablet's GTID mode. Only available in MySQL flavour
|
||||
func (c *Conn) GetGTIDMode() (string, error) {
|
||||
return c.flavor.gtidMode(c)
|
||||
}
|
||||
|
||||
// GetServerUUID returns the server's UUID.
|
||||
func (c *Conn) GetServerUUID() (string, error) {
|
||||
return c.flavor.serverUUID(c)
|
||||
}
|
||||
|
||||
// PrimaryFilePosition returns the current primary's file based replication position.
|
||||
func (c *Conn) PrimaryFilePosition() (Position, error) {
|
||||
filePosFlavor := filePosFlavor{}
|
||||
|
@ -339,6 +373,12 @@ func (c *Conn) ResetReplicationCommands() []string {
|
|||
return c.flavor.resetReplicationCommands(c)
|
||||
}
|
||||
|
||||
// ResetReplicationParametersCommands returns the commands to reset
|
||||
// replication parameters on the host.
|
||||
func (c *Conn) ResetReplicationParametersCommands() []string {
|
||||
return c.flavor.resetReplicationParametersCommands(c)
|
||||
}
|
||||
|
||||
// SetReplicationPositionCommands returns the commands to set the
|
||||
// replication position at which the replica will resume
|
||||
// when it is later reparented with SetReplicationSourceCommand.
|
||||
|
@ -402,7 +442,12 @@ func parseReplicationStatus(fields map[string]string) ReplicationStatus {
|
|||
// The field names in the map are identical to what we receive from the database
|
||||
// Hence the names still contain Master
|
||||
status := ReplicationStatus{
|
||||
SourceHost: fields["Master_Host"],
|
||||
SourceHost: fields["Master_Host"],
|
||||
SourceUser: fields["Master_User"],
|
||||
SSLAllowed: fields["Master_SSL_Allowed"] == "Yes",
|
||||
AutoPosition: fields["Auto_Position"] == "1",
|
||||
UsingGTID: fields["Using_Gtid"] != "No" && fields["Using_Gtid"] != "",
|
||||
HasReplicationFilters: (fields["Replicate_Do_DB"] != "") || (fields["Replicate_Ignore_DB"] != "") || (fields["Replicate_Do_Table"] != "") || (fields["Replicate_Ignore_Table"] != "") || (fields["Replicate_Wild_Do_Table"] != "") || (fields["Replicate_Wild_Ignore_Table"] != ""),
|
||||
// These fields are returned from the underlying DB and cannot be renamed
|
||||
IOState: ReplicationStatusToState(fields["Slave_IO_Running"]),
|
||||
LastIOError: fields["Last_IO_Error"],
|
||||
|
@ -424,6 +469,8 @@ func parseReplicationStatus(fields map[string]string) ReplicationStatus {
|
|||
}
|
||||
parseUint, _ = strconv.ParseUint(fields["Master_Server_Id"], 10, 0)
|
||||
status.SourceServerID = uint(parseUint)
|
||||
parseUint, _ = strconv.ParseUint(fields["SQL_Delay"], 10, 0)
|
||||
status.SQLDelay = uint(parseUint)
|
||||
|
||||
executedPosStr := fields["Exec_Master_Log_Pos"]
|
||||
file := fields["Relay_Master_Log_File"]
|
||||
|
@ -442,12 +489,24 @@ func parseReplicationStatus(fields map[string]string) ReplicationStatus {
|
|||
if file != "" && readPosStr != "" {
|
||||
fileRelayPos, err := strconv.Atoi(readPosStr)
|
||||
if err == nil {
|
||||
status.FileRelayLogPosition.GTIDSet = filePosGTID{
|
||||
status.RelayLogSourceBinlogEquivalentPosition.GTIDSet = filePosGTID{
|
||||
file: file,
|
||||
pos: fileRelayPos,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
relayPosStr := fields["Relay_Log_Pos"]
|
||||
file = fields["Relay_Log_File"]
|
||||
if file != "" && relayPosStr != "" {
|
||||
relayFilePos, err := strconv.Atoi(relayPosStr)
|
||||
if err == nil {
|
||||
status.RelayLogFilePosition.GTIDSet = filePosGTID{
|
||||
file: file,
|
||||
pos: relayFilePos,
|
||||
}
|
||||
}
|
||||
}
|
||||
return status
|
||||
}
|
||||
|
||||
|
|
|
@ -17,13 +17,15 @@ limitations under the License.
|
|||
package mysql
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"context"
|
||||
vtrpcpb "vitess.io/vitess/go/vt/proto/vtrpc"
|
||||
"vitess.io/vitess/go/vt/vterrors"
|
||||
)
|
||||
|
||||
type filePosFlavor struct {
|
||||
|
@ -62,6 +64,36 @@ func (flv *filePosFlavor) primaryGTIDSet(c *Conn) (GTIDSet, error) {
|
|||
}, nil
|
||||
}
|
||||
|
||||
// purgedGTIDSet is part of the Flavor interface.
|
||||
func (flv *filePosFlavor) purgedGTIDSet(c *Conn) (GTIDSet, error) {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// gtidMode is part of the Flavor interface.
|
||||
func (flv *filePosFlavor) gtidMode(c *Conn) (string, error) {
|
||||
qr, err := c.ExecuteFetch("select @@global.gtid_mode", 1, false)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if len(qr.Rows) != 1 || len(qr.Rows[0]) != 1 {
|
||||
return "", vterrors.Errorf(vtrpcpb.Code_INTERNAL, "unexpected result format for gtid_mode: %#v", qr)
|
||||
}
|
||||
return qr.Rows[0][0].ToString(), nil
|
||||
}
|
||||
|
||||
// serverUUID is part of the Flavor interface.
|
||||
func (flv *filePosFlavor) serverUUID(c *Conn) (string, error) {
|
||||
// keep @@global as lowercase, as some servers like the Ripple binlog server only honors a lowercase `global` value
|
||||
qr, err := c.ExecuteFetch("SELECT @@global.server_uuid", 1, false)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if len(qr.Rows) != 1 || len(qr.Rows[0]) != 1 {
|
||||
return "", vterrors.Errorf(vtrpcpb.Code_INTERNAL, "unexpected result format for server_uuid: %#v", qr)
|
||||
}
|
||||
return qr.Rows[0][0].ToString(), nil
|
||||
}
|
||||
|
||||
func (flv *filePosFlavor) startReplicationCommand() string {
|
||||
return "unsupported"
|
||||
}
|
||||
|
@ -183,6 +215,13 @@ func (flv *filePosFlavor) resetReplicationCommands(c *Conn) []string {
|
|||
}
|
||||
}
|
||||
|
||||
// resetReplicationParametersCommands is part of the Flavor interface.
|
||||
func (flv *filePosFlavor) resetReplicationParametersCommands(c *Conn) []string {
|
||||
return []string{
|
||||
"unsupported",
|
||||
}
|
||||
}
|
||||
|
||||
// setReplicationPositionCommands is part of the Flavor interface.
|
||||
func (flv *filePosFlavor) setReplicationPositionCommands(pos Position) []string {
|
||||
return []string{
|
||||
|
@ -219,7 +258,7 @@ func parseFilePosReplicationStatus(resultMap map[string]string) (ReplicationStat
|
|||
status := parseReplicationStatus(resultMap)
|
||||
|
||||
status.Position = status.FilePosition
|
||||
status.RelayLogPosition = status.FileRelayLogPosition
|
||||
status.RelayLogPosition = status.RelayLogSourceBinlogEquivalentPosition
|
||||
|
||||
return status, nil
|
||||
}
|
||||
|
|
|
@ -40,22 +40,26 @@ func TestFilePosRetrieveExecutedPosition(t *testing.T) {
|
|||
"Relay_Master_Log_File": "master-bin.000002",
|
||||
"Read_Master_Log_Pos": "1308",
|
||||
"Master_Log_File": "master-bin.000003",
|
||||
"Relay_Log_Pos": "1309",
|
||||
"Relay_Log_File": "relay-bin.000004",
|
||||
}
|
||||
|
||||
want := ReplicationStatus{
|
||||
Position: Position{GTIDSet: filePosGTID{file: "master-bin.000002", pos: 1307}},
|
||||
RelayLogPosition: Position{GTIDSet: filePosGTID{file: "master-bin.000003", pos: 1308}},
|
||||
FilePosition: Position{GTIDSet: filePosGTID{file: "master-bin.000002", pos: 1307}},
|
||||
FileRelayLogPosition: Position{GTIDSet: filePosGTID{file: "master-bin.000003", pos: 1308}},
|
||||
Position: Position{GTIDSet: filePosGTID{file: "master-bin.000002", pos: 1307}},
|
||||
RelayLogPosition: Position{GTIDSet: filePosGTID{file: "master-bin.000003", pos: 1308}},
|
||||
FilePosition: Position{GTIDSet: filePosGTID{file: "master-bin.000002", pos: 1307}},
|
||||
RelayLogSourceBinlogEquivalentPosition: Position{GTIDSet: filePosGTID{file: "master-bin.000003", pos: 1308}},
|
||||
RelayLogFilePosition: Position{GTIDSet: filePosGTID{file: "relay-bin.000004", pos: 1309}},
|
||||
}
|
||||
got, err := parseFilePosReplicationStatus(resultMap)
|
||||
require.NoError(t, err)
|
||||
assert.Equalf(t, got.Position.GTIDSet, want.Position.GTIDSet, "got Position: %v; want Position: %v", got.Position.GTIDSet, want.Position.GTIDSet)
|
||||
assert.Equalf(t, got.RelayLogPosition.GTIDSet, want.RelayLogPosition.GTIDSet, "got RelayLogPosition: %v; want RelayLogPosition: %v", got.RelayLogPosition.GTIDSet, want.RelayLogPosition.GTIDSet)
|
||||
assert.Equalf(t, got.RelayLogFilePosition.GTIDSet, want.RelayLogFilePosition.GTIDSet, "got RelayLogFilePosition: %v; want RelayLogFilePosition: %v", got.RelayLogFilePosition.GTIDSet, want.RelayLogFilePosition.GTIDSet)
|
||||
assert.Equalf(t, got.FilePosition.GTIDSet, want.FilePosition.GTIDSet, "got FilePosition: %v; want FilePosition: %v", got.FilePosition.GTIDSet, want.FilePosition.GTIDSet)
|
||||
assert.Equalf(t, got.FileRelayLogPosition.GTIDSet, want.FileRelayLogPosition.GTIDSet, "got FileRelayLogPosition: %v; want FileRelayLogPosition: %v", got.FileRelayLogPosition.GTIDSet, want.FileRelayLogPosition.GTIDSet)
|
||||
assert.Equalf(t, got.RelayLogSourceBinlogEquivalentPosition.GTIDSet, want.RelayLogSourceBinlogEquivalentPosition.GTIDSet, "got RelayLogSourceBinlogEquivalentPosition: %v; want RelayLogSourceBinlogEquivalentPosition: %v", got.RelayLogSourceBinlogEquivalentPosition.GTIDSet, want.RelayLogSourceBinlogEquivalentPosition.GTIDSet)
|
||||
assert.Equalf(t, got.Position.GTIDSet, got.FilePosition.GTIDSet, "FilePosition and Position don't match when they should for the FilePos flavor")
|
||||
assert.Equalf(t, got.RelayLogPosition.GTIDSet, got.FileRelayLogPosition.GTIDSet, "RelayLogPosition and FileRelayLogPosition don't match when they should for the FilePos flavor")
|
||||
assert.Equalf(t, got.RelayLogPosition.GTIDSet, got.RelayLogSourceBinlogEquivalentPosition.GTIDSet, "RelayLogPosition and RelayLogSourceBinlogEquivalentPosition don't match when they should for the FilePos flavor")
|
||||
}
|
||||
|
||||
func TestFilePosShouldGetPosition(t *testing.T) {
|
||||
|
|
|
@ -53,6 +53,21 @@ func (mariadbFlavor) primaryGTIDSet(c *Conn) (GTIDSet, error) {
|
|||
return parseMariadbGTIDSet(qr.Rows[0][0].ToString())
|
||||
}
|
||||
|
||||
// purgedGTIDSet is part of the Flavor interface.
|
||||
func (mariadbFlavor) purgedGTIDSet(c *Conn) (GTIDSet, error) {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// serverUUID is part of the Flavor interface.
|
||||
func (mariadbFlavor) serverUUID(c *Conn) (string, error) {
|
||||
return "", nil
|
||||
}
|
||||
|
||||
// gtidMode is part of the Flavor interface.
|
||||
func (mariadbFlavor) gtidMode(c *Conn) (string, error) {
|
||||
return "", nil
|
||||
}
|
||||
|
||||
func (mariadbFlavor) startReplicationUntilAfter(pos Position) string {
|
||||
return fmt.Sprintf("START SLAVE UNTIL master_gtid_pos = \"%s\"", pos)
|
||||
}
|
||||
|
@ -130,6 +145,14 @@ func (mariadbFlavor) resetReplicationCommands(c *Conn) []string {
|
|||
return resetCommands
|
||||
}
|
||||
|
||||
// resetReplicationParametersCommands is part of the Flavor interface.
|
||||
func (mariadbFlavor) resetReplicationParametersCommands(c *Conn) []string {
|
||||
resetCommands := []string{
|
||||
"RESET SLAVE ALL", // "ALL" makes it forget source host:port.
|
||||
}
|
||||
return resetCommands
|
||||
}
|
||||
|
||||
// setReplicationPositionCommands is part of the Flavor interface.
|
||||
func (mariadbFlavor) setReplicationPositionCommands(pos Position) []string {
|
||||
return []string{
|
||||
|
|
|
@ -99,16 +99,20 @@ func TestMariadbRetrieveFileBasedPositions(t *testing.T) {
|
|||
"Read_Master_Log_Pos": "1308",
|
||||
"Master_Log_File": "master-bin.000003",
|
||||
"Gtid_Slave_Pos": "0-101-2320",
|
||||
"Relay_Log_Pos": "1309",
|
||||
"Relay_Log_File": "relay-bin.000004",
|
||||
}
|
||||
|
||||
want := ReplicationStatus{
|
||||
FilePosition: Position{GTIDSet: filePosGTID{file: "master-bin.000002", pos: 1307}},
|
||||
FileRelayLogPosition: Position{GTIDSet: filePosGTID{file: "master-bin.000003", pos: 1308}},
|
||||
FilePosition: Position{GTIDSet: filePosGTID{file: "master-bin.000002", pos: 1307}},
|
||||
RelayLogSourceBinlogEquivalentPosition: Position{GTIDSet: filePosGTID{file: "master-bin.000003", pos: 1308}},
|
||||
RelayLogFilePosition: Position{GTIDSet: filePosGTID{file: "relay-bin.000004", pos: 1309}},
|
||||
}
|
||||
got, err := parseMariadbReplicationStatus(resultMap)
|
||||
require.NoError(t, err)
|
||||
assert.Equalf(t, got.RelayLogFilePosition.GTIDSet, want.RelayLogFilePosition.GTIDSet, "got RelayLogFilePosition: %v; want RelayLogFilePosition: %v", got.RelayLogFilePosition.GTIDSet, want.RelayLogFilePosition.GTIDSet)
|
||||
assert.Equal(t, got.FilePosition.GTIDSet, want.FilePosition.GTIDSet, fmt.Sprintf("got FilePosition: %v; want FilePosition: %v", got.FilePosition.GTIDSet, want.FilePosition.GTIDSet))
|
||||
assert.Equal(t, got.FileRelayLogPosition.GTIDSet, want.FileRelayLogPosition.GTIDSet, fmt.Sprintf("got FileRelayLogPosition: %v; want FileRelayLogPosition: %v", got.FileRelayLogPosition.GTIDSet, want.FileRelayLogPosition.GTIDSet))
|
||||
assert.Equal(t, got.RelayLogSourceBinlogEquivalentPosition.GTIDSet, want.RelayLogSourceBinlogEquivalentPosition.GTIDSet, fmt.Sprintf("got RelayLogSourceBinlogEquivalentPosition: %v; want RelayLogSourceBinlogEquivalentPosition: %v", got.RelayLogSourceBinlogEquivalentPosition.GTIDSet, want.RelayLogSourceBinlogEquivalentPosition.GTIDSet))
|
||||
}
|
||||
|
||||
func TestMariadbShouldGetNilRelayLogPosition(t *testing.T) {
|
||||
|
|
|
@ -56,6 +56,44 @@ func (mysqlFlavor) primaryGTIDSet(c *Conn) (GTIDSet, error) {
|
|||
return parseMysql56GTIDSet(qr.Rows[0][0].ToString())
|
||||
}
|
||||
|
||||
// purgedGTIDSet is part of the Flavor interface.
|
||||
func (mysqlFlavor) purgedGTIDSet(c *Conn) (GTIDSet, error) {
|
||||
// keep @@global as lowercase, as some servers like the Ripple binlog server only honors a lowercase `global` value
|
||||
qr, err := c.ExecuteFetch("SELECT @@global.gtid_purged", 1, false)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if len(qr.Rows) != 1 || len(qr.Rows[0]) != 1 {
|
||||
return nil, vterrors.Errorf(vtrpc.Code_INTERNAL, "unexpected result format for gtid_purged: %#v", qr)
|
||||
}
|
||||
return parseMysql56GTIDSet(qr.Rows[0][0].ToString())
|
||||
}
|
||||
|
||||
// serverUUID is part of the Flavor interface.
|
||||
func (mysqlFlavor) serverUUID(c *Conn) (string, error) {
|
||||
// keep @@global as lowercase, as some servers like the Ripple binlog server only honors a lowercase `global` value
|
||||
qr, err := c.ExecuteFetch("SELECT @@global.server_uuid", 1, false)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if len(qr.Rows) != 1 || len(qr.Rows[0]) != 1 {
|
||||
return "", vterrors.Errorf(vtrpc.Code_INTERNAL, "unexpected result format for server_uuid: %#v", qr)
|
||||
}
|
||||
return qr.Rows[0][0].ToString(), nil
|
||||
}
|
||||
|
||||
// gtidMode is part of the Flavor interface.
|
||||
func (mysqlFlavor) gtidMode(c *Conn) (string, error) {
|
||||
qr, err := c.ExecuteFetch("select @@global.gtid_mode", 1, false)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if len(qr.Rows) != 1 || len(qr.Rows[0]) != 1 {
|
||||
return "", vterrors.Errorf(vtrpc.Code_INTERNAL, "unexpected result format for gtid_mode: %#v", qr)
|
||||
}
|
||||
return qr.Rows[0][0].ToString(), nil
|
||||
}
|
||||
|
||||
func (mysqlFlavor) startReplicationCommand() string {
|
||||
return "START SLAVE"
|
||||
}
|
||||
|
@ -117,6 +155,14 @@ func (mysqlFlavor) resetReplicationCommands(c *Conn) []string {
|
|||
return resetCommands
|
||||
}
|
||||
|
||||
// resetReplicationParametersCommands is part of the Flavor interface.
|
||||
func (mysqlFlavor) resetReplicationParametersCommands(c *Conn) []string {
|
||||
resetCommands := []string{
|
||||
"RESET SLAVE ALL", // "ALL" makes it forget source host:port.
|
||||
}
|
||||
return resetCommands
|
||||
}
|
||||
|
||||
// setReplicationPositionCommands is part of the Flavor interface.
|
||||
func (mysqlFlavor) setReplicationPositionCommands(pos Position) []string {
|
||||
return []string{
|
||||
|
|
|
@ -96,16 +96,20 @@ func TestMysqlRetrieveFileBasedPositions(t *testing.T) {
|
|||
"Relay_Master_Log_File": "master-bin.000002",
|
||||
"Read_Master_Log_Pos": "1308",
|
||||
"Master_Log_File": "master-bin.000003",
|
||||
"Relay_Log_Pos": "1309",
|
||||
"Relay_Log_File": "relay-bin.000004",
|
||||
}
|
||||
|
||||
want := ReplicationStatus{
|
||||
FilePosition: Position{GTIDSet: filePosGTID{file: "master-bin.000002", pos: 1307}},
|
||||
FileRelayLogPosition: Position{GTIDSet: filePosGTID{file: "master-bin.000003", pos: 1308}},
|
||||
FilePosition: Position{GTIDSet: filePosGTID{file: "master-bin.000002", pos: 1307}},
|
||||
RelayLogSourceBinlogEquivalentPosition: Position{GTIDSet: filePosGTID{file: "master-bin.000003", pos: 1308}},
|
||||
RelayLogFilePosition: Position{GTIDSet: filePosGTID{file: "relay-bin.000004", pos: 1309}},
|
||||
}
|
||||
got, err := parseMysqlReplicationStatus(resultMap)
|
||||
require.NoError(t, err)
|
||||
assert.Equalf(t, got.FilePosition.GTIDSet, want.FilePosition.GTIDSet, "got FilePosition: %v; want FilePosition: %v", got.FilePosition.GTIDSet, want.FilePosition.GTIDSet)
|
||||
assert.Equalf(t, got.FileRelayLogPosition.GTIDSet, want.FileRelayLogPosition.GTIDSet, "got FileRelayLogPosition: %v; want FileRelayLogPosition: %v", got.FileRelayLogPosition.GTIDSet, want.FileRelayLogPosition.GTIDSet)
|
||||
assert.Equalf(t, got.RelayLogFilePosition.GTIDSet, want.RelayLogFilePosition.GTIDSet, "got RelayLogFilePosition: %v; want RelayLogFilePosition: %v", got.RelayLogFilePosition.GTIDSet, want.RelayLogFilePosition.GTIDSet)
|
||||
assert.Equalf(t, got.RelayLogSourceBinlogEquivalentPosition.GTIDSet, want.RelayLogSourceBinlogEquivalentPosition.GTIDSet, "got RelayLogSourceBinlogEquivalentPosition: %v; want RelayLogSourceBinlogEquivalentPosition: %v", got.RelayLogSourceBinlogEquivalentPosition.GTIDSet, want.RelayLogSourceBinlogEquivalentPosition.GTIDSet)
|
||||
}
|
||||
|
||||
func TestMysqlShouldGetRelayLogPosition(t *testing.T) {
|
||||
|
|
|
@ -93,6 +93,11 @@ func (mysqlGRFlavor) resetReplicationCommands(c *Conn) []string {
|
|||
return []string{}
|
||||
}
|
||||
|
||||
// resetReplicationParametersCommands is part of the Flavor interface.
|
||||
func (mysqlGRFlavor) resetReplicationParametersCommands(c *Conn) []string {
|
||||
return []string{}
|
||||
}
|
||||
|
||||
// setReplicationPositionCommands is disabled in mysqlGRFlavor
|
||||
func (mysqlGRFlavor) setReplicationPositionCommands(pos Position) []string {
|
||||
return []string{}
|
||||
|
|
|
@ -67,6 +67,10 @@ func parseMariadbGTIDSet(s string) (GTIDSet, error) {
|
|||
gtidStrings := strings.Split(s, ",")
|
||||
gtidSet := make(MariadbGTIDSet, len(gtidStrings))
|
||||
for _, gtidString := range gtidStrings {
|
||||
gtidString = strings.TrimSpace(gtidString)
|
||||
if gtidString == "" {
|
||||
continue
|
||||
}
|
||||
gtid, err := parseMariadbGTID(gtidString)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
|
@ -25,6 +25,9 @@ import (
|
|||
|
||||
// ReplicationStatus holds replication information from SHOW SLAVE STATUS.
|
||||
type ReplicationStatus struct {
|
||||
// Position is the current position of the replica. For GTID replication implementations
|
||||
// it is the executed GTID set. For file replication implementation, it is same as
|
||||
// FilePosition
|
||||
Position Position
|
||||
// RelayLogPosition is the Position that the replica would be at if it
|
||||
// were to finish executing everything that's currently in its relay log.
|
||||
|
@ -32,10 +35,18 @@ type ReplicationStatus struct {
|
|||
// in which case RelayLogPosition.IsZero() will be true.
|
||||
// If ReplicationLagUnknown is true then we should not rely on the seconds
|
||||
// behind value and we can instead try to calculate the lag ourselves when
|
||||
// appropriate.
|
||||
RelayLogPosition Position
|
||||
FilePosition Position
|
||||
FileRelayLogPosition Position
|
||||
// appropriate. For MySQL GTID replication implementation it is the union of
|
||||
// executed GTID set and retrieved GTID set. For file replication implementation,
|
||||
// it is same as RelayLogSourceBinlogEquivalentPosition
|
||||
RelayLogPosition Position
|
||||
// FilePosition stores the position of the source tablets binary log
|
||||
// upto which the SQL thread of the replica has run.
|
||||
FilePosition Position
|
||||
// RelayLogSourceBinlogEquivalentPosition stores the position of the source tablets binary log
|
||||
// upto which the IO thread has read and added to the relay log
|
||||
RelayLogSourceBinlogEquivalentPosition Position
|
||||
// RelayLogFilePosition stores the position in the relay log file
|
||||
RelayLogFilePosition Position
|
||||
SourceServerID uint
|
||||
IOState ReplicationState
|
||||
LastIOError string
|
||||
|
@ -45,8 +56,14 @@ type ReplicationStatus struct {
|
|||
ReplicationLagUnknown bool
|
||||
SourceHost string
|
||||
SourcePort int
|
||||
SourceUser string
|
||||
ConnectRetry int
|
||||
SourceUUID SID
|
||||
SQLDelay uint
|
||||
AutoPosition bool
|
||||
UsingGTID bool
|
||||
HasReplicationFilters bool
|
||||
SSLAllowed bool
|
||||
}
|
||||
|
||||
// Running returns true if both the IO and SQL threads are running.
|
||||
|
@ -76,20 +93,28 @@ func (s *ReplicationStatus) SQLHealthy() bool {
|
|||
// ReplicationStatusToProto translates a Status to proto3.
|
||||
func ReplicationStatusToProto(s ReplicationStatus) *replicationdatapb.Status {
|
||||
replstatuspb := &replicationdatapb.Status{
|
||||
Position: EncodePosition(s.Position),
|
||||
RelayLogPosition: EncodePosition(s.RelayLogPosition),
|
||||
FilePosition: EncodePosition(s.FilePosition),
|
||||
FileRelayLogPosition: EncodePosition(s.FileRelayLogPosition),
|
||||
SourceServerId: uint32(s.SourceServerID),
|
||||
ReplicationLagSeconds: uint32(s.ReplicationLagSeconds),
|
||||
SourceHost: s.SourceHost,
|
||||
SourcePort: int32(s.SourcePort),
|
||||
ConnectRetry: int32(s.ConnectRetry),
|
||||
SourceUuid: s.SourceUUID.String(),
|
||||
IoState: int32(s.IOState),
|
||||
LastIoError: s.LastIOError,
|
||||
SqlState: int32(s.SQLState),
|
||||
LastSqlError: s.LastSQLError,
|
||||
Position: EncodePosition(s.Position),
|
||||
RelayLogPosition: EncodePosition(s.RelayLogPosition),
|
||||
FilePosition: EncodePosition(s.FilePosition),
|
||||
RelayLogSourceBinlogEquivalentPosition: EncodePosition(s.RelayLogSourceBinlogEquivalentPosition),
|
||||
SourceServerId: uint32(s.SourceServerID),
|
||||
ReplicationLagSeconds: uint32(s.ReplicationLagSeconds),
|
||||
ReplicationLagUnknown: s.ReplicationLagUnknown,
|
||||
SqlDelay: uint32(s.SQLDelay),
|
||||
RelayLogFilePosition: EncodePosition(s.RelayLogFilePosition),
|
||||
SourceHost: s.SourceHost,
|
||||
SourceUser: s.SourceUser,
|
||||
SourcePort: int32(s.SourcePort),
|
||||
ConnectRetry: int32(s.ConnectRetry),
|
||||
SourceUuid: s.SourceUUID.String(),
|
||||
IoState: int32(s.IOState),
|
||||
LastIoError: s.LastIOError,
|
||||
SqlState: int32(s.SQLState),
|
||||
LastSqlError: s.LastSQLError,
|
||||
SslAllowed: s.SSLAllowed,
|
||||
HasReplicationFilters: s.HasReplicationFilters,
|
||||
AutoPosition: s.AutoPosition,
|
||||
UsingGtid: s.UsingGTID,
|
||||
}
|
||||
|
||||
// We need to be able to send gRPC response messages from v14 and newer tablets to
|
||||
|
@ -122,9 +147,13 @@ func ProtoToReplicationStatus(s *replicationdatapb.Status) ReplicationStatus {
|
|||
if err != nil {
|
||||
panic(vterrors.Wrapf(err, "cannot decode FilePosition"))
|
||||
}
|
||||
fileRelayPos, err := DecodePosition(s.FileRelayLogPosition)
|
||||
fileRelayPos, err := DecodePosition(s.RelayLogSourceBinlogEquivalentPosition)
|
||||
if err != nil {
|
||||
panic(vterrors.Wrapf(err, "cannot decode FileRelayLogPosition"))
|
||||
panic(vterrors.Wrapf(err, "cannot decode RelayLogSourceBinlogEquivalentPosition"))
|
||||
}
|
||||
relayFilePos, err := DecodePosition(s.RelayLogFilePosition)
|
||||
if err != nil {
|
||||
panic(vterrors.Wrapf(err, "cannot decode RelayLogFilePosition"))
|
||||
}
|
||||
var sid SID
|
||||
if s.SourceUuid != "" {
|
||||
|
@ -134,20 +163,28 @@ func ProtoToReplicationStatus(s *replicationdatapb.Status) ReplicationStatus {
|
|||
}
|
||||
}
|
||||
replstatus := ReplicationStatus{
|
||||
Position: pos,
|
||||
RelayLogPosition: relayPos,
|
||||
FilePosition: filePos,
|
||||
FileRelayLogPosition: fileRelayPos,
|
||||
SourceServerID: uint(s.SourceServerId),
|
||||
ReplicationLagSeconds: uint(s.ReplicationLagSeconds),
|
||||
SourceHost: s.SourceHost,
|
||||
SourcePort: int(s.SourcePort),
|
||||
ConnectRetry: int(s.ConnectRetry),
|
||||
SourceUUID: sid,
|
||||
IOState: ReplicationState(s.IoState),
|
||||
LastIOError: s.LastIoError,
|
||||
SQLState: ReplicationState(s.SqlState),
|
||||
LastSQLError: s.LastSqlError,
|
||||
Position: pos,
|
||||
RelayLogPosition: relayPos,
|
||||
FilePosition: filePos,
|
||||
RelayLogSourceBinlogEquivalentPosition: fileRelayPos,
|
||||
RelayLogFilePosition: relayFilePos,
|
||||
SourceServerID: uint(s.SourceServerId),
|
||||
ReplicationLagSeconds: uint(s.ReplicationLagSeconds),
|
||||
ReplicationLagUnknown: s.ReplicationLagUnknown,
|
||||
SQLDelay: uint(s.SqlDelay),
|
||||
SourceHost: s.SourceHost,
|
||||
SourceUser: s.SourceUser,
|
||||
SourcePort: int(s.SourcePort),
|
||||
ConnectRetry: int(s.ConnectRetry),
|
||||
SourceUUID: sid,
|
||||
IOState: ReplicationState(s.IoState),
|
||||
LastIOError: s.LastIoError,
|
||||
SQLState: ReplicationState(s.SqlState),
|
||||
LastSQLError: s.LastSqlError,
|
||||
SSLAllowed: s.SslAllowed,
|
||||
HasReplicationFilters: s.HasReplicationFilters,
|
||||
AutoPosition: s.AutoPosition,
|
||||
UsingGTID: s.UsingGtid,
|
||||
}
|
||||
|
||||
// We need to be able to process gRPC response messages from v13 and older tablets.
|
||||
|
|
|
@ -18,12 +18,15 @@ package newfeaturetest
|
|||
|
||||
import (
|
||||
"context"
|
||||
"strconv"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"vitess.io/vitess/go/mysql"
|
||||
"vitess.io/vitess/go/test/endtoend/cluster"
|
||||
"vitess.io/vitess/go/test/endtoend/reparent/utils"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
|
@ -120,3 +123,94 @@ func TestReplicationStopped(t *testing.T) {
|
|||
// Confirm that tablets[2] which had replication stopped initially still has its replication stopped
|
||||
utils.CheckReplicationStatus(context.Background(), t, tablets[2], false, false)
|
||||
}
|
||||
|
||||
// TestFullStatus tests that the RPC FullStatus works as intended.
|
||||
func TestFullStatus(t *testing.T) {
|
||||
defer cluster.PanicHandler(t)
|
||||
clusterInstance := utils.SetupReparentCluster(t, true)
|
||||
defer utils.TeardownCluster(clusterInstance)
|
||||
tablets := clusterInstance.Keyspaces[0].Shards[0].Vttablets
|
||||
utils.ConfirmReplication(t, tablets[0], []*cluster.Vttablet{tablets[1], tablets[2], tablets[3]})
|
||||
|
||||
// Check that full status gives the correct result for a primary tablet
|
||||
primaryStatus, err := utils.TmcFullStatus(context.Background(), tablets[0])
|
||||
require.NoError(t, err)
|
||||
assert.NotEmpty(t, primaryStatus.ServerUuid)
|
||||
assert.NotEmpty(t, primaryStatus.ServerId)
|
||||
// For a primary tablet there is no replication status
|
||||
assert.Nil(t, primaryStatus.ReplicationStatus)
|
||||
assert.Contains(t, primaryStatus.PrimaryStatus.String(), "vt-0000000101-bin")
|
||||
assert.Equal(t, primaryStatus.GtidPurged, "MySQL56/")
|
||||
assert.False(t, primaryStatus.ReadOnly)
|
||||
assert.True(t, primaryStatus.SemiSyncPrimaryEnabled)
|
||||
assert.True(t, primaryStatus.SemiSyncReplicaEnabled)
|
||||
assert.True(t, primaryStatus.SemiSyncPrimaryStatus)
|
||||
assert.False(t, primaryStatus.SemiSyncReplicaStatus)
|
||||
assert.EqualValues(t, 3, primaryStatus.SemiSyncPrimaryClients)
|
||||
assert.EqualValues(t, 1000000000000000000, primaryStatus.SemiSyncPrimaryTimeout)
|
||||
assert.EqualValues(t, 1, primaryStatus.SemiSyncWaitForReplicaCount)
|
||||
assert.Equal(t, "ROW", primaryStatus.BinlogFormat)
|
||||
assert.Equal(t, "FULL", primaryStatus.BinlogRowImage)
|
||||
assert.Equal(t, "ON", primaryStatus.GtidMode)
|
||||
assert.True(t, primaryStatus.LogReplicaUpdates)
|
||||
assert.True(t, primaryStatus.LogBinEnabled)
|
||||
assert.Contains(t, primaryStatus.Version, "5.7")
|
||||
assert.NotEmpty(t, primaryStatus.VersionComment)
|
||||
|
||||
// Check that full status gives the correct result for a replica tablet
|
||||
replicaStatus, err := utils.TmcFullStatus(context.Background(), tablets[1])
|
||||
require.NoError(t, err)
|
||||
assert.NotEmpty(t, replicaStatus.ServerUuid)
|
||||
assert.NotEmpty(t, replicaStatus.ServerId)
|
||||
assert.Contains(t, replicaStatus.ReplicationStatus.Position, "MySQL56/"+replicaStatus.ReplicationStatus.SourceUuid)
|
||||
assert.EqualValues(t, mysql.ReplicationStateRunning, replicaStatus.ReplicationStatus.IoState)
|
||||
assert.EqualValues(t, mysql.ReplicationStateRunning, replicaStatus.ReplicationStatus.SqlState)
|
||||
assert.Equal(t, fileNameFromPosition(replicaStatus.ReplicationStatus.FilePosition), fileNameFromPosition(primaryStatus.PrimaryStatus.FilePosition))
|
||||
assert.LessOrEqual(t, rowNumberFromPosition(replicaStatus.ReplicationStatus.FilePosition), rowNumberFromPosition(primaryStatus.PrimaryStatus.FilePosition))
|
||||
assert.Equal(t, replicaStatus.ReplicationStatus.RelayLogSourceBinlogEquivalentPosition, primaryStatus.PrimaryStatus.FilePosition)
|
||||
assert.Contains(t, replicaStatus.ReplicationStatus.RelayLogFilePosition, "vt-0000000102-relay")
|
||||
assert.Equal(t, replicaStatus.ReplicationStatus.Position, primaryStatus.PrimaryStatus.Position)
|
||||
assert.Equal(t, replicaStatus.ReplicationStatus.RelayLogPosition, primaryStatus.PrimaryStatus.Position)
|
||||
assert.Empty(t, replicaStatus.ReplicationStatus.LastIoError)
|
||||
assert.Empty(t, replicaStatus.ReplicationStatus.LastSqlError)
|
||||
assert.Equal(t, replicaStatus.ReplicationStatus.SourceUuid, primaryStatus.ServerUuid)
|
||||
assert.EqualValues(t, 0, replicaStatus.ReplicationStatus.ReplicationLagSeconds)
|
||||
assert.False(t, replicaStatus.ReplicationStatus.ReplicationLagUnknown)
|
||||
assert.EqualValues(t, 0, replicaStatus.ReplicationStatus.SqlDelay)
|
||||
assert.False(t, replicaStatus.ReplicationStatus.SslAllowed)
|
||||
assert.False(t, replicaStatus.ReplicationStatus.HasReplicationFilters)
|
||||
assert.False(t, replicaStatus.ReplicationStatus.UsingGtid)
|
||||
assert.True(t, replicaStatus.ReplicationStatus.AutoPosition)
|
||||
assert.Equal(t, replicaStatus.ReplicationStatus.SourceHost, utils.Hostname)
|
||||
assert.EqualValues(t, replicaStatus.ReplicationStatus.SourcePort, tablets[0].MySQLPort)
|
||||
assert.Equal(t, replicaStatus.ReplicationStatus.SourceUser, "vt_repl")
|
||||
assert.Contains(t, replicaStatus.PrimaryStatus.String(), "vt-0000000102-bin")
|
||||
assert.Equal(t, replicaStatus.GtidPurged, "MySQL56/")
|
||||
assert.True(t, replicaStatus.ReadOnly)
|
||||
assert.False(t, replicaStatus.SemiSyncPrimaryEnabled)
|
||||
assert.True(t, replicaStatus.SemiSyncReplicaEnabled)
|
||||
assert.False(t, replicaStatus.SemiSyncPrimaryStatus)
|
||||
assert.True(t, replicaStatus.SemiSyncReplicaStatus)
|
||||
assert.EqualValues(t, 0, replicaStatus.SemiSyncPrimaryClients)
|
||||
assert.EqualValues(t, 1000000000000000000, replicaStatus.SemiSyncPrimaryTimeout)
|
||||
assert.EqualValues(t, 1, replicaStatus.SemiSyncWaitForReplicaCount)
|
||||
assert.Equal(t, "ROW", replicaStatus.BinlogFormat)
|
||||
assert.Equal(t, "FULL", replicaStatus.BinlogRowImage)
|
||||
assert.Equal(t, "ON", replicaStatus.GtidMode)
|
||||
assert.True(t, replicaStatus.LogReplicaUpdates)
|
||||
assert.True(t, replicaStatus.LogBinEnabled)
|
||||
assert.Contains(t, replicaStatus.Version, "5.7")
|
||||
assert.NotEmpty(t, replicaStatus.VersionComment)
|
||||
}
|
||||
|
||||
// fileNameFromPosition gets the file name from the position
|
||||
func fileNameFromPosition(pos string) string {
|
||||
return pos[0 : len(pos)-4]
|
||||
}
|
||||
|
||||
// rowNumberFromPosition gets the row number from the position
|
||||
func rowNumberFromPosition(pos string) int {
|
||||
rowNumStr := pos[len(pos)-4:]
|
||||
rowNum, _ := strconv.Atoi(rowNumStr)
|
||||
return rowNum
|
||||
}
|
||||
|
|
|
@ -394,6 +394,11 @@ func TestReplicationStatus(t *testing.T) {
|
|||
ioThread, sqlThread := utils.ReplicationThreadsStatus(t, replicationStatus, clusterInstance.VtctlMajorVersion, clusterInstance.VtTabletMajorVersion)
|
||||
require.True(t, ioThread)
|
||||
require.False(t, sqlThread)
|
||||
// Assert that the 4 file log positions are non-empty
|
||||
assert.NotEmpty(t, replicationStatus.RelayLogSourceBinlogEquivalentPosition)
|
||||
assert.NotEmpty(t, replicationStatus.FilePosition)
|
||||
assert.NotEmpty(t, replicationStatus.Position)
|
||||
assert.NotEmpty(t, replicationStatus.RelayLogPosition)
|
||||
|
||||
// Stop replication on tablets[1] and verify that both the threads are reported as not running
|
||||
err = clusterInstance.VtctlclientProcess.ExecuteCommand("ExecuteFetchAsDba", tablets[1].Alias, `STOP SLAVE;`)
|
||||
|
@ -402,6 +407,11 @@ func TestReplicationStatus(t *testing.T) {
|
|||
ioThread, sqlThread = utils.ReplicationThreadsStatus(t, replicationStatus, clusterInstance.VtctlMajorVersion, clusterInstance.VtTabletMajorVersion)
|
||||
require.False(t, ioThread)
|
||||
require.False(t, sqlThread)
|
||||
// Assert that the 4 file log positions are non-empty
|
||||
assert.NotEmpty(t, replicationStatus.RelayLogSourceBinlogEquivalentPosition)
|
||||
assert.NotEmpty(t, replicationStatus.FilePosition)
|
||||
assert.NotEmpty(t, replicationStatus.Position)
|
||||
assert.NotEmpty(t, replicationStatus.RelayLogPosition)
|
||||
|
||||
// Start replication on tablets[1] and verify that both the threads are reported as running
|
||||
err = clusterInstance.VtctlclientProcess.ExecuteCommand("ExecuteFetchAsDba", tablets[1].Alias, `START SLAVE;`)
|
||||
|
@ -410,6 +420,11 @@ func TestReplicationStatus(t *testing.T) {
|
|||
ioThread, sqlThread = utils.ReplicationThreadsStatus(t, replicationStatus, clusterInstance.VtctlMajorVersion, clusterInstance.VtTabletMajorVersion)
|
||||
require.True(t, ioThread)
|
||||
require.True(t, sqlThread)
|
||||
// Assert that the 4 file log positions are non-empty
|
||||
assert.NotEmpty(t, replicationStatus.RelayLogSourceBinlogEquivalentPosition)
|
||||
assert.NotEmpty(t, replicationStatus.FilePosition)
|
||||
assert.NotEmpty(t, replicationStatus.Position)
|
||||
assert.NotEmpty(t, replicationStatus.RelayLogPosition)
|
||||
|
||||
// Stop IO_THREAD on tablets[1] and verify that the IO thread is read to be stopped and SQL thread is running
|
||||
err = clusterInstance.VtctlclientProcess.ExecuteCommand("ExecuteFetchAsDba", tablets[1].Alias, `STOP SLAVE IO_THREAD;`)
|
||||
|
@ -418,4 +433,9 @@ func TestReplicationStatus(t *testing.T) {
|
|||
ioThread, sqlThread = utils.ReplicationThreadsStatus(t, replicationStatus, clusterInstance.VtctlMajorVersion, clusterInstance.VtTabletMajorVersion)
|
||||
require.False(t, ioThread)
|
||||
require.True(t, sqlThread)
|
||||
// Assert that the 4 file log positions are non-empty
|
||||
assert.NotEmpty(t, replicationStatus.RelayLogSourceBinlogEquivalentPosition)
|
||||
assert.NotEmpty(t, replicationStatus.FilePosition)
|
||||
assert.NotEmpty(t, replicationStatus.Position)
|
||||
assert.NotEmpty(t, replicationStatus.RelayLogPosition)
|
||||
}
|
||||
|
|
|
@ -28,6 +28,8 @@ import (
|
|||
"testing"
|
||||
"time"
|
||||
|
||||
tmc "vitess.io/vitess/go/vt/vttablet/grpctmclient"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
|
@ -793,3 +795,18 @@ func ReplicationThreadsStatus(t *testing.T, status *replicationdatapb.Status, vt
|
|||
}
|
||||
return ioThread, sqlThread
|
||||
}
|
||||
|
||||
// TmcFullStatus retuns the result of the TabletManagerClient RPC FullStatus
|
||||
func TmcFullStatus(ctx context.Context, tablet *cluster.Vttablet) (*replicationdatapb.FullStatus, error) {
|
||||
// create tablet manager client
|
||||
tmClient := tmc.NewClient()
|
||||
|
||||
vttablet := getTablet(tablet.GrpcPort)
|
||||
return tmClient.FullStatus(ctx, vttablet)
|
||||
}
|
||||
|
||||
func getTablet(tabletGrpcPort int) *topodatapb.Tablet {
|
||||
portMap := make(map[string]int32)
|
||||
portMap["grpc"] = int32(tabletGrpcPort)
|
||||
return &topodatapb.Tablet{Hostname: Hostname, PortMap: portMap}
|
||||
}
|
||||
|
|
|
@ -176,6 +176,11 @@ func tmcStartReplication(ctx context.Context, tabletGrpcPort int) error {
|
|||
return tmClient.StartReplication(ctx, vtablet, false)
|
||||
}
|
||||
|
||||
func tmcResetReplicationParameters(ctx context.Context, tabletGrpcPort int) error {
|
||||
vttablet := getTablet(tabletGrpcPort)
|
||||
return tmClient.ResetReplicationParameters(ctx, vttablet)
|
||||
}
|
||||
|
||||
func tmcPrimaryPosition(ctx context.Context, tabletGrpcPort int) (string, error) {
|
||||
vtablet := getTablet(tabletGrpcPort)
|
||||
return tmClient.PrimaryPosition(ctx, vtablet)
|
||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
|||
package tabletmanager
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
|
@ -111,3 +112,38 @@ func TestLocalMetadata(t *testing.T) {
|
|||
clusterInstance.VtTabletExtraArgs = []string{}
|
||||
killTablets(t, rTablet, rTablet2)
|
||||
}
|
||||
|
||||
// TestResetReplicationParameters tests that the RPC ResetReplicationParameters works as intended.
|
||||
func TestResetReplicationParameters(t *testing.T) {
|
||||
defer cluster.PanicHandler(t)
|
||||
|
||||
// Create new tablet
|
||||
tablet := clusterInstance.NewVttabletInstance("replica", 0, "")
|
||||
tablet.MysqlctlProcess = *cluster.MysqlCtlProcessInstance(tablet.TabletUID, tablet.MySQLPort, clusterInstance.TmpDirectory)
|
||||
err := tablet.MysqlctlProcess.Start()
|
||||
require.NoError(t, err)
|
||||
|
||||
log.Info(fmt.Sprintf("Started vttablet %v", tablet))
|
||||
// Start vttablet process as replica. It won't be able to serve because there's no db.
|
||||
err = clusterInstance.StartVttablet(tablet, "NOT_SERVING", false, cell, "dbtest", hostname, "0")
|
||||
require.NoError(t, err)
|
||||
|
||||
// Set a replication source on the tablet and start replication
|
||||
_, err = tablet.VttabletProcess.QueryTablet("stop slave;change master to master_host = 'localhost', master_port = 123;start slave;", keyspaceName, false)
|
||||
require.NoError(t, err)
|
||||
|
||||
// Check the replica status.
|
||||
res, err := tablet.VttabletProcess.QueryTablet("show slave status", keyspaceName, false)
|
||||
require.NoError(t, err)
|
||||
// This is expected to return 1 row result
|
||||
require.Len(t, res.Rows, 1)
|
||||
|
||||
// Reset the replication parameters on the tablet
|
||||
err = tmcResetReplicationParameters(context.Background(), tablet.GrpcPort)
|
||||
require.NoError(t, err)
|
||||
|
||||
// Recheck the replica status and this time is should be empty
|
||||
res, err = tablet.VttabletProcess.QueryTablet("show slave status", keyspaceName, false)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, res.Rows, 0)
|
||||
}
|
||||
|
|
|
@ -368,6 +368,17 @@ func (fs *fuzzStore) callReplicationStatus() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// callFullStatus implements a wrapper
|
||||
// for fuzzing FullStatus
|
||||
func (fs *fuzzStore) callFullStatus() error {
|
||||
tablet, err := fs.getTablet()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, _ = fs.client.FullStatus(context.Background(), tablet)
|
||||
return nil
|
||||
}
|
||||
|
||||
// callPrimaryStatus implements a wrapper
|
||||
// for fuzzing PrimaryStatus
|
||||
func (fs *fuzzStore) callPrimaryStatus() error {
|
||||
|
@ -412,6 +423,17 @@ func (fs *fuzzStore) callReplicaWasPromoted() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// callResetReplicationParameters implements a wrapper
|
||||
// for fuzzing ResetReplicationParameters
|
||||
func (fs *fuzzStore) callResetReplicationParameters() error {
|
||||
tablet, err := fs.getTablet()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_ = fs.client.ResetReplicationParameters(context.Background(), tablet)
|
||||
return nil
|
||||
}
|
||||
|
||||
// callPromoteReplica implements a wrapper
|
||||
// for fuzzing PromoteReplica
|
||||
func (fs *fuzzStore) callPromoteReplica() error {
|
||||
|
@ -645,6 +667,10 @@ func (fs *fuzzStore) executeInRandomOrder() {
|
|||
err = fs.callInitReplica()
|
||||
case 23:
|
||||
err = fs.callPopulateReparentJournal()
|
||||
case 24:
|
||||
err = fs.callResetReplicationParameters()
|
||||
case 25:
|
||||
err = fs.callFullStatus()
|
||||
}
|
||||
|
||||
// err means that fuzzStore doesn't have any data
|
||||
|
|
|
@ -253,6 +253,16 @@ func (fmd *FakeMysqlDaemon) GetMysqlPort() (int32, error) {
|
|||
return fmd.MysqlPort.Get(), nil
|
||||
}
|
||||
|
||||
// GetServerID is part of the MysqlDaemon interface
|
||||
func (fmd *FakeMysqlDaemon) GetServerID(ctx context.Context) (uint32, error) {
|
||||
return 1, nil
|
||||
}
|
||||
|
||||
// GetServerUUID is part of the MysqlDaemon interface
|
||||
func (fmd *FakeMysqlDaemon) GetServerUUID(ctx context.Context) (string, error) {
|
||||
return "000000", nil
|
||||
}
|
||||
|
||||
// CurrentPrimaryPositionLocked is thread-safe
|
||||
func (fmd *FakeMysqlDaemon) CurrentPrimaryPositionLocked(pos mysql.Position) {
|
||||
fmd.mu.Lock()
|
||||
|
@ -268,10 +278,10 @@ func (fmd *FakeMysqlDaemon) ReplicationStatus() (mysql.ReplicationStatus, error)
|
|||
fmd.mu.Lock()
|
||||
defer fmd.mu.Unlock()
|
||||
return mysql.ReplicationStatus{
|
||||
Position: fmd.CurrentPrimaryPosition,
|
||||
FilePosition: fmd.CurrentSourceFilePosition,
|
||||
FileRelayLogPosition: fmd.CurrentSourceFilePosition,
|
||||
ReplicationLagSeconds: fmd.ReplicationLagSeconds,
|
||||
Position: fmd.CurrentPrimaryPosition,
|
||||
FilePosition: fmd.CurrentSourceFilePosition,
|
||||
RelayLogSourceBinlogEquivalentPosition: fmd.CurrentSourceFilePosition,
|
||||
ReplicationLagSeconds: fmd.ReplicationLagSeconds,
|
||||
// implemented as AND to avoid changing all tests that were
|
||||
// previously using Replicating = false
|
||||
IOState: mysql.ReplicationStatusToState(fmt.Sprintf("%v", fmd.Replicating && fmd.IOThreadRunning)),
|
||||
|
@ -292,6 +302,11 @@ func (fmd *FakeMysqlDaemon) PrimaryStatus(ctx context.Context) (mysql.PrimarySta
|
|||
}, nil
|
||||
}
|
||||
|
||||
// GetGTIDPurged is part of the MysqlDaemon interface
|
||||
func (fmd *FakeMysqlDaemon) GetGTIDPurged(ctx context.Context) (mysql.Position, error) {
|
||||
return mysql.Position{}, nil
|
||||
}
|
||||
|
||||
// ResetReplication is part of the MysqlDaemon interface.
|
||||
func (fmd *FakeMysqlDaemon) ResetReplication(ctx context.Context) error {
|
||||
return fmd.ExecuteSuperQueryList(ctx, []string{
|
||||
|
@ -299,6 +314,27 @@ func (fmd *FakeMysqlDaemon) ResetReplication(ctx context.Context) error {
|
|||
})
|
||||
}
|
||||
|
||||
// ResetReplicationParameters is part of the MysqlDaemon interface.
|
||||
func (fmd *FakeMysqlDaemon) ResetReplicationParameters(ctx context.Context) error {
|
||||
return fmd.ExecuteSuperQueryList(ctx, []string{
|
||||
"FAKE RESET REPLICA ALL",
|
||||
})
|
||||
}
|
||||
|
||||
// GetBinlogInformation is part of the MysqlDaemon interface.
|
||||
func (fmd *FakeMysqlDaemon) GetBinlogInformation(ctx context.Context) (binlogFormat string, logEnabled bool, logReplicaUpdate bool, binlogRowImage string, err error) {
|
||||
return "ROW", true, true, "FULL", fmd.ExecuteSuperQueryList(ctx, []string{
|
||||
"FAKE select @@global",
|
||||
})
|
||||
}
|
||||
|
||||
// GetGTIDMode is part of the MysqlDaemon interface.
|
||||
func (fmd *FakeMysqlDaemon) GetGTIDMode(ctx context.Context) (gtidMode string, err error) {
|
||||
return "ON", fmd.ExecuteSuperQueryList(ctx, []string{
|
||||
"FAKE select @@global",
|
||||
})
|
||||
}
|
||||
|
||||
// PrimaryPosition is part of the MysqlDaemon interface
|
||||
func (fmd *FakeMysqlDaemon) PrimaryPosition() (mysql.Position, error) {
|
||||
return fmd.CurrentPrimaryPosition, nil
|
||||
|
@ -592,6 +628,25 @@ func (fmd *FakeMysqlDaemon) SemiSyncEnabled() (primary, replica bool) {
|
|||
return fmd.SemiSyncPrimaryEnabled, fmd.SemiSyncReplicaEnabled
|
||||
}
|
||||
|
||||
// SemiSyncStatus is part of the MysqlDaemon interface.
|
||||
func (fmd *FakeMysqlDaemon) SemiSyncStatus() (bool, bool) {
|
||||
// The fake assumes the status worked.
|
||||
if fmd.SemiSyncPrimaryEnabled {
|
||||
return true, false
|
||||
}
|
||||
return false, fmd.SemiSyncReplicaEnabled
|
||||
}
|
||||
|
||||
// SemiSyncClients is part of the MysqlDaemon interface.
|
||||
func (fmd *FakeMysqlDaemon) SemiSyncClients() uint32 {
|
||||
return 0
|
||||
}
|
||||
|
||||
// SemiSyncSettings is part of the MysqlDaemon interface.
|
||||
func (fmd *FakeMysqlDaemon) SemiSyncSettings() (timeout uint64, numReplicas uint32) {
|
||||
return 10000000, 1
|
||||
}
|
||||
|
||||
// SemiSyncReplicationStatus is part of the MysqlDaemon interface.
|
||||
func (fmd *FakeMysqlDaemon) SemiSyncReplicationStatus() (bool, error) {
|
||||
// The fake assumes the status worked.
|
||||
|
@ -602,3 +657,8 @@ func (fmd *FakeMysqlDaemon) SemiSyncReplicationStatus() (bool, error) {
|
|||
func (fmd *FakeMysqlDaemon) GetVersionString() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
// GetVersionComment is part of the MysqlDeamon interface.
|
||||
func (fmd *FakeMysqlDaemon) GetVersionComment(ctx context.Context) string {
|
||||
return ""
|
||||
}
|
||||
|
|
|
@ -40,6 +40,12 @@ type MysqlDaemon interface {
|
|||
// GetMysqlPort returns the current port mysql is listening on.
|
||||
GetMysqlPort() (int32, error)
|
||||
|
||||
// GetServerID returns the servers ID.
|
||||
GetServerID(ctx context.Context) (uint32, error)
|
||||
|
||||
// GetServerUUID returns the servers UUID
|
||||
GetServerUUID(ctx context.Context) (string, error)
|
||||
|
||||
// replication related methods
|
||||
StartReplication(hookExtraEnv map[string]string) error
|
||||
RestartReplication(hookExtraEnv map[string]string) error
|
||||
|
@ -48,9 +54,16 @@ type MysqlDaemon interface {
|
|||
StopIOThread(ctx context.Context) error
|
||||
ReplicationStatus() (mysql.ReplicationStatus, error)
|
||||
PrimaryStatus(ctx context.Context) (mysql.PrimaryStatus, error)
|
||||
GetGTIDPurged(ctx context.Context) (mysql.Position, error)
|
||||
SetSemiSyncEnabled(source, replica bool) error
|
||||
SemiSyncEnabled() (source, replica bool)
|
||||
SemiSyncStatus() (source, replica bool)
|
||||
SemiSyncClients() (count uint32)
|
||||
SemiSyncSettings() (timeout uint64, numReplicas uint32)
|
||||
SemiSyncReplicationStatus() (bool, error)
|
||||
ResetReplicationParameters(ctx context.Context) error
|
||||
GetBinlogInformation(ctx context.Context) (binlogFormat string, logEnabled bool, logReplicaUpdate bool, binlogRowImage string, err error)
|
||||
GetGTIDMode(ctx context.Context) (gtidMode string, err error)
|
||||
|
||||
// reparenting related methods
|
||||
ResetReplication(ctx context.Context) error
|
||||
|
@ -86,6 +99,9 @@ type MysqlDaemon interface {
|
|||
// GetVersionString returns the database version as a string
|
||||
GetVersionString() string
|
||||
|
||||
// GetVersionComment returns the version comment
|
||||
GetVersionComment(ctx context.Context) string
|
||||
|
||||
// ExecuteSuperQueryList executes a list of queries, no result
|
||||
ExecuteSuperQueryList(ctx context.Context, queryList []string) error
|
||||
|
||||
|
|
|
@ -1146,3 +1146,17 @@ func buildLdPaths() ([]string, error) {
|
|||
func (mysqld *Mysqld) GetVersionString() string {
|
||||
return fmt.Sprintf("%d.%d.%d", mysqld.capabilities.version.Major, mysqld.capabilities.version.Minor, mysqld.capabilities.version.Patch)
|
||||
}
|
||||
|
||||
// GetVersionComment gets the version comment.
|
||||
func (mysqld *Mysqld) GetVersionComment(ctx context.Context) string {
|
||||
qr, err := mysqld.FetchSuperQuery(ctx, "select @@global.version_comment")
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
if len(qr.Rows) != 1 {
|
||||
return ""
|
||||
}
|
||||
res := qr.Named().Row()
|
||||
versionComment, _ := res.ToString("@@global.version_comment")
|
||||
return versionComment
|
||||
}
|
||||
|
|
|
@ -210,6 +210,24 @@ func (mysqld *Mysqld) fetchVariables(ctx context.Context, pattern string) (map[s
|
|||
return varMap, nil
|
||||
}
|
||||
|
||||
// fetchStatuses returns a map from MySQL status names to status value
|
||||
// for variables that match the given pattern.
|
||||
func (mysqld *Mysqld) fetchStatuses(ctx context.Context, pattern string) (map[string]string, error) {
|
||||
query := fmt.Sprintf("SHOW STATUS LIKE '%s'", pattern)
|
||||
qr, err := mysqld.FetchSuperQuery(ctx, query)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if len(qr.Fields) != 2 {
|
||||
return nil, fmt.Errorf("query %#v returned %d columns, expected 2", query, len(qr.Fields))
|
||||
}
|
||||
varMap := make(map[string]string, len(qr.Rows))
|
||||
for _, row := range qr.Rows {
|
||||
varMap[row[0].ToString()] = row[1].ToString()
|
||||
}
|
||||
return varMap, nil
|
||||
}
|
||||
|
||||
const (
|
||||
masterPasswordStart = " MASTER_PASSWORD = '"
|
||||
masterPasswordEnd = "',\n"
|
||||
|
|
|
@ -24,6 +24,7 @@ import (
|
|||
"errors"
|
||||
"fmt"
|
||||
"net"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
|
@ -188,6 +189,33 @@ func (mysqld *Mysqld) GetMysqlPort() (int32, error) {
|
|||
return int32(utemp), nil
|
||||
}
|
||||
|
||||
// GetServerID returns mysql server id
|
||||
func (mysqld *Mysqld) GetServerID(ctx context.Context) (uint32, error) {
|
||||
qr, err := mysqld.FetchSuperQuery(ctx, "select @@global.server_id")
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
if len(qr.Rows) != 1 {
|
||||
return 0, errors.New("no server_id in mysql")
|
||||
}
|
||||
utemp, err := evalengine.ToUint64(qr.Rows[0][0])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return uint32(utemp), nil
|
||||
}
|
||||
|
||||
// GetServerUUID returns mysql server uuid
|
||||
func (mysqld *Mysqld) GetServerUUID(ctx context.Context) (string, error) {
|
||||
conn, err := getPoolReconnect(ctx, mysqld.dbaPool)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
defer conn.Recycle()
|
||||
|
||||
return conn.GetServerUUID()
|
||||
}
|
||||
|
||||
// IsReadOnly return true if the instance is read only
|
||||
func (mysqld *Mysqld) IsReadOnly() (bool, error) {
|
||||
qr, err := mysqld.FetchSuperQuery(context.TODO(), "SHOW VARIABLES LIKE 'read_only'")
|
||||
|
@ -315,6 +343,17 @@ func (mysqld *Mysqld) PrimaryStatus(ctx context.Context) (mysql.PrimaryStatus, e
|
|||
return conn.ShowPrimaryStatus()
|
||||
}
|
||||
|
||||
// GetGTIDPurged returns the gtid purged statuses
|
||||
func (mysqld *Mysqld) GetGTIDPurged(ctx context.Context) (mysql.Position, error) {
|
||||
conn, err := getPoolReconnect(ctx, mysqld.dbaPool)
|
||||
if err != nil {
|
||||
return mysql.Position{}, err
|
||||
}
|
||||
defer conn.Recycle()
|
||||
|
||||
return conn.GetGTIDPurged()
|
||||
}
|
||||
|
||||
// PrimaryPosition returns the primary replication position.
|
||||
func (mysqld *Mysqld) PrimaryPosition() (mysql.Position, error) {
|
||||
conn, err := getPoolReconnect(context.TODO(), mysqld.dbaPool)
|
||||
|
@ -381,6 +420,18 @@ func (mysqld *Mysqld) ResetReplication(ctx context.Context) error {
|
|||
return mysqld.executeSuperQueryListConn(ctx, conn, cmds)
|
||||
}
|
||||
|
||||
// ResetReplicationParameters resets the replica replication parameters for this host.
|
||||
func (mysqld *Mysqld) ResetReplicationParameters(ctx context.Context) error {
|
||||
conn, connErr := getPoolReconnect(ctx, mysqld.dbaPool)
|
||||
if connErr != nil {
|
||||
return connErr
|
||||
}
|
||||
defer conn.Recycle()
|
||||
|
||||
cmds := conn.ResetReplicationParametersCommands()
|
||||
return mysqld.executeSuperQueryListConn(ctx, conn, cmds)
|
||||
}
|
||||
|
||||
// +------+---------+---------------------+------+-------------+------+----------------------------------------------------------------+------------------+
|
||||
// | Id | User | Host | db | Command | Time | State | Info |
|
||||
// +------+---------+---------------------+------+-------------+------+----------------------------------------------------------------+------------------+
|
||||
|
@ -484,6 +535,46 @@ func (mysqld *Mysqld) DisableBinlogPlayback() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// GetBinlogInformation gets the binlog format, whether binlog is enabled and if updates on replica logging is enabled.
|
||||
func (mysqld *Mysqld) GetBinlogInformation(ctx context.Context) (string, bool, bool, string, error) {
|
||||
qr, err := mysqld.FetchSuperQuery(ctx, "select @@global.binlog_format, @@global.log_bin, @@global.log_slave_updates, @@global.binlog_row_image")
|
||||
if err != nil {
|
||||
return "", false, false, "", err
|
||||
}
|
||||
if len(qr.Rows) != 1 {
|
||||
return "", false, false, "", errors.New("unable to read global variables binlog_format, log_bin, log_slave_updates, gtid_mode, binlog_rowge")
|
||||
}
|
||||
res := qr.Named().Row()
|
||||
binlogFormat, err := res.ToString("@@global.binlog_format")
|
||||
if err != nil {
|
||||
return "", false, false, "", err
|
||||
}
|
||||
logBin, err := res.ToInt64("@@global.log_bin")
|
||||
if err != nil {
|
||||
return "", false, false, "", err
|
||||
}
|
||||
logReplicaUpdates, err := res.ToInt64("@@global.log_slave_updates")
|
||||
if err != nil {
|
||||
return "", false, false, "", err
|
||||
}
|
||||
binlogRowImage, err := res.ToString("@@global.binlog_row_image")
|
||||
if err != nil {
|
||||
return "", false, false, "", err
|
||||
}
|
||||
return binlogFormat, logBin == 1, logReplicaUpdates == 1, binlogRowImage, nil
|
||||
}
|
||||
|
||||
// GetGTIDMode gets the GTID mode for the server
|
||||
func (mysqld *Mysqld) GetGTIDMode(ctx context.Context) (string, error) {
|
||||
conn, err := getPoolReconnect(ctx, mysqld.dbaPool)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
defer conn.Recycle()
|
||||
|
||||
return conn.GetGTIDMode()
|
||||
}
|
||||
|
||||
// SetSemiSyncEnabled enables or disables semi-sync replication for
|
||||
// primary and/or replica mode.
|
||||
func (mysqld *Mysqld) SetSemiSyncEnabled(primary, replica bool) error {
|
||||
|
@ -519,6 +610,42 @@ func (mysqld *Mysqld) SemiSyncEnabled() (primary, replica bool) {
|
|||
return primary, replica
|
||||
}
|
||||
|
||||
// SemiSyncStatus returns the current status of semi-sync for primary and replica.
|
||||
func (mysqld *Mysqld) SemiSyncStatus() (primary, replica bool) {
|
||||
vars, err := mysqld.fetchStatuses(context.TODO(), "Rpl_semi_sync_%_status")
|
||||
if err != nil {
|
||||
return false, false
|
||||
}
|
||||
primary = vars["Rpl_semi_sync_master_status"] == "ON"
|
||||
replica = vars["Rpl_semi_sync_slave_status"] == "ON"
|
||||
return primary, replica
|
||||
}
|
||||
|
||||
// SemiSyncClients returns the number of semi-sync clients for the primary.
|
||||
func (mysqld *Mysqld) SemiSyncClients() uint32 {
|
||||
qr, err := mysqld.FetchSuperQuery(context.TODO(), "SHOW STATUS LIKE 'Rpl_semi_sync_master_clients'")
|
||||
if err != nil {
|
||||
return 0
|
||||
}
|
||||
if len(qr.Rows) != 1 {
|
||||
return 0
|
||||
}
|
||||
countStr := qr.Rows[0][1].ToString()
|
||||
count, _ := strconv.ParseUint(countStr, 10, 0)
|
||||
return uint32(count)
|
||||
}
|
||||
|
||||
// SemiSyncSettings returns the settings of semi-sync which includes the timeout and the number of replicas to wait for.
|
||||
func (mysqld *Mysqld) SemiSyncSettings() (timeout uint64, numReplicas uint32) {
|
||||
vars, err := mysqld.fetchVariables(context.TODO(), "rpl_semi_sync_%")
|
||||
if err != nil {
|
||||
return 0, 0
|
||||
}
|
||||
timeout, _ = strconv.ParseUint(vars["rpl_semi_sync_master_timeout"], 10, 0)
|
||||
numReplicasUint, _ := strconv.ParseUint(vars["rpl_semi_sync_master_wait_for_slave_count"], 10, 0)
|
||||
return timeout, uint32(numReplicasUint)
|
||||
}
|
||||
|
||||
// SemiSyncReplicationStatus returns whether semi-sync is currently used by replication.
|
||||
func (mysqld *Mysqld) SemiSyncReplicationStatus() (bool, error) {
|
||||
qr, err := mysqld.FetchSuperQuery(context.TODO(), "SHOW STATUS LIKE 'rpl_semi_sync_slave_status'")
|
||||
|
|
|
@ -102,15 +102,23 @@ type Status struct {
|
|||
SourcePort int32 `protobuf:"varint,6,opt,name=source_port,json=sourcePort,proto3" json:"source_port,omitempty"`
|
||||
ConnectRetry int32 `protobuf:"varint,7,opt,name=connect_retry,json=connectRetry,proto3" json:"connect_retry,omitempty"`
|
||||
// RelayLogPosition will be empty for flavors that do not support returning the full GTIDSet from the relay log, such as MariaDB.
|
||||
RelayLogPosition string `protobuf:"bytes,8,opt,name=relay_log_position,json=relayLogPosition,proto3" json:"relay_log_position,omitempty"`
|
||||
FilePosition string `protobuf:"bytes,9,opt,name=file_position,json=filePosition,proto3" json:"file_position,omitempty"`
|
||||
FileRelayLogPosition string `protobuf:"bytes,10,opt,name=file_relay_log_position,json=fileRelayLogPosition,proto3" json:"file_relay_log_position,omitempty"`
|
||||
SourceServerId uint32 `protobuf:"varint,11,opt,name=source_server_id,json=sourceServerId,proto3" json:"source_server_id,omitempty"`
|
||||
SourceUuid string `protobuf:"bytes,12,opt,name=source_uuid,json=sourceUuid,proto3" json:"source_uuid,omitempty"`
|
||||
IoState int32 `protobuf:"varint,13,opt,name=io_state,json=ioState,proto3" json:"io_state,omitempty"`
|
||||
LastIoError string `protobuf:"bytes,14,opt,name=last_io_error,json=lastIoError,proto3" json:"last_io_error,omitempty"`
|
||||
SqlState int32 `protobuf:"varint,15,opt,name=sql_state,json=sqlState,proto3" json:"sql_state,omitempty"`
|
||||
LastSqlError string `protobuf:"bytes,16,opt,name=last_sql_error,json=lastSqlError,proto3" json:"last_sql_error,omitempty"`
|
||||
RelayLogPosition string `protobuf:"bytes,8,opt,name=relay_log_position,json=relayLogPosition,proto3" json:"relay_log_position,omitempty"`
|
||||
FilePosition string `protobuf:"bytes,9,opt,name=file_position,json=filePosition,proto3" json:"file_position,omitempty"`
|
||||
RelayLogSourceBinlogEquivalentPosition string `protobuf:"bytes,10,opt,name=relay_log_source_binlog_equivalent_position,json=relayLogSourceBinlogEquivalentPosition,proto3" json:"relay_log_source_binlog_equivalent_position,omitempty"`
|
||||
SourceServerId uint32 `protobuf:"varint,11,opt,name=source_server_id,json=sourceServerId,proto3" json:"source_server_id,omitempty"`
|
||||
SourceUuid string `protobuf:"bytes,12,opt,name=source_uuid,json=sourceUuid,proto3" json:"source_uuid,omitempty"`
|
||||
IoState int32 `protobuf:"varint,13,opt,name=io_state,json=ioState,proto3" json:"io_state,omitempty"`
|
||||
LastIoError string `protobuf:"bytes,14,opt,name=last_io_error,json=lastIoError,proto3" json:"last_io_error,omitempty"`
|
||||
SqlState int32 `protobuf:"varint,15,opt,name=sql_state,json=sqlState,proto3" json:"sql_state,omitempty"`
|
||||
LastSqlError string `protobuf:"bytes,16,opt,name=last_sql_error,json=lastSqlError,proto3" json:"last_sql_error,omitempty"`
|
||||
RelayLogFilePosition string `protobuf:"bytes,17,opt,name=relay_log_file_position,json=relayLogFilePosition,proto3" json:"relay_log_file_position,omitempty"`
|
||||
SourceUser string `protobuf:"bytes,18,opt,name=source_user,json=sourceUser,proto3" json:"source_user,omitempty"`
|
||||
SqlDelay uint32 `protobuf:"varint,19,opt,name=sql_delay,json=sqlDelay,proto3" json:"sql_delay,omitempty"`
|
||||
AutoPosition bool `protobuf:"varint,20,opt,name=auto_position,json=autoPosition,proto3" json:"auto_position,omitempty"`
|
||||
UsingGtid bool `protobuf:"varint,21,opt,name=using_gtid,json=usingGtid,proto3" json:"using_gtid,omitempty"`
|
||||
HasReplicationFilters bool `protobuf:"varint,22,opt,name=has_replication_filters,json=hasReplicationFilters,proto3" json:"has_replication_filters,omitempty"`
|
||||
SslAllowed bool `protobuf:"varint,23,opt,name=ssl_allowed,json=sslAllowed,proto3" json:"ssl_allowed,omitempty"`
|
||||
ReplicationLagUnknown bool `protobuf:"varint,24,opt,name=replication_lag_unknown,json=replicationLagUnknown,proto3" json:"replication_lag_unknown,omitempty"`
|
||||
}
|
||||
|
||||
func (x *Status) Reset() {
|
||||
|
@ -208,9 +216,9 @@ func (x *Status) GetFilePosition() string {
|
|||
return ""
|
||||
}
|
||||
|
||||
func (x *Status) GetFileRelayLogPosition() string {
|
||||
func (x *Status) GetRelayLogSourceBinlogEquivalentPosition() string {
|
||||
if x != nil {
|
||||
return x.FileRelayLogPosition
|
||||
return x.RelayLogSourceBinlogEquivalentPosition
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
@ -257,6 +265,62 @@ func (x *Status) GetLastSqlError() string {
|
|||
return ""
|
||||
}
|
||||
|
||||
func (x *Status) GetRelayLogFilePosition() string {
|
||||
if x != nil {
|
||||
return x.RelayLogFilePosition
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *Status) GetSourceUser() string {
|
||||
if x != nil {
|
||||
return x.SourceUser
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *Status) GetSqlDelay() uint32 {
|
||||
if x != nil {
|
||||
return x.SqlDelay
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *Status) GetAutoPosition() bool {
|
||||
if x != nil {
|
||||
return x.AutoPosition
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (x *Status) GetUsingGtid() bool {
|
||||
if x != nil {
|
||||
return x.UsingGtid
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (x *Status) GetHasReplicationFilters() bool {
|
||||
if x != nil {
|
||||
return x.HasReplicationFilters
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (x *Status) GetSslAllowed() bool {
|
||||
if x != nil {
|
||||
return x.SslAllowed
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (x *Status) GetReplicationLagUnknown() bool {
|
||||
if x != nil {
|
||||
return x.ReplicationLagUnknown
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// StopReplicationStatus represents the replication status before calling StopReplication, and the replication status collected immediately after
|
||||
// calling StopReplication.
|
||||
type StopReplicationStatus struct {
|
||||
|
@ -370,12 +434,212 @@ func (x *PrimaryStatus) GetFilePosition() string {
|
|||
return ""
|
||||
}
|
||||
|
||||
// FullStatus contains the full status of MySQL including the replication information, semi-sync information, GTID information among others
|
||||
type FullStatus struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
ServerId uint32 `protobuf:"varint,1,opt,name=server_id,json=serverId,proto3" json:"server_id,omitempty"`
|
||||
ServerUuid string `protobuf:"bytes,2,opt,name=server_uuid,json=serverUuid,proto3" json:"server_uuid,omitempty"`
|
||||
ReplicationStatus *Status `protobuf:"bytes,3,opt,name=replication_status,json=replicationStatus,proto3" json:"replication_status,omitempty"`
|
||||
PrimaryStatus *PrimaryStatus `protobuf:"bytes,4,opt,name=primary_status,json=primaryStatus,proto3" json:"primary_status,omitempty"`
|
||||
GtidPurged string `protobuf:"bytes,5,opt,name=gtid_purged,json=gtidPurged,proto3" json:"gtid_purged,omitempty"`
|
||||
Version string `protobuf:"bytes,6,opt,name=version,proto3" json:"version,omitempty"`
|
||||
VersionComment string `protobuf:"bytes,7,opt,name=version_comment,json=versionComment,proto3" json:"version_comment,omitempty"`
|
||||
ReadOnly bool `protobuf:"varint,8,opt,name=read_only,json=readOnly,proto3" json:"read_only,omitempty"`
|
||||
GtidMode string `protobuf:"bytes,9,opt,name=gtid_mode,json=gtidMode,proto3" json:"gtid_mode,omitempty"`
|
||||
BinlogFormat string `protobuf:"bytes,10,opt,name=binlog_format,json=binlogFormat,proto3" json:"binlog_format,omitempty"`
|
||||
BinlogRowImage string `protobuf:"bytes,11,opt,name=binlog_row_image,json=binlogRowImage,proto3" json:"binlog_row_image,omitempty"`
|
||||
LogBinEnabled bool `protobuf:"varint,12,opt,name=log_bin_enabled,json=logBinEnabled,proto3" json:"log_bin_enabled,omitempty"`
|
||||
LogReplicaUpdates bool `protobuf:"varint,13,opt,name=log_replica_updates,json=logReplicaUpdates,proto3" json:"log_replica_updates,omitempty"`
|
||||
SemiSyncPrimaryEnabled bool `protobuf:"varint,14,opt,name=semi_sync_primary_enabled,json=semiSyncPrimaryEnabled,proto3" json:"semi_sync_primary_enabled,omitempty"`
|
||||
SemiSyncReplicaEnabled bool `protobuf:"varint,15,opt,name=semi_sync_replica_enabled,json=semiSyncReplicaEnabled,proto3" json:"semi_sync_replica_enabled,omitempty"`
|
||||
SemiSyncPrimaryStatus bool `protobuf:"varint,16,opt,name=semi_sync_primary_status,json=semiSyncPrimaryStatus,proto3" json:"semi_sync_primary_status,omitempty"`
|
||||
SemiSyncReplicaStatus bool `protobuf:"varint,17,opt,name=semi_sync_replica_status,json=semiSyncReplicaStatus,proto3" json:"semi_sync_replica_status,omitempty"`
|
||||
SemiSyncPrimaryClients uint32 `protobuf:"varint,18,opt,name=semi_sync_primary_clients,json=semiSyncPrimaryClients,proto3" json:"semi_sync_primary_clients,omitempty"`
|
||||
SemiSyncPrimaryTimeout uint64 `protobuf:"varint,19,opt,name=semi_sync_primary_timeout,json=semiSyncPrimaryTimeout,proto3" json:"semi_sync_primary_timeout,omitempty"`
|
||||
SemiSyncWaitForReplicaCount uint32 `protobuf:"varint,20,opt,name=semi_sync_wait_for_replica_count,json=semiSyncWaitForReplicaCount,proto3" json:"semi_sync_wait_for_replica_count,omitempty"`
|
||||
}
|
||||
|
||||
func (x *FullStatus) Reset() {
|
||||
*x = FullStatus{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_replicationdata_proto_msgTypes[3]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *FullStatus) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*FullStatus) ProtoMessage() {}
|
||||
|
||||
func (x *FullStatus) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_replicationdata_proto_msgTypes[3]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use FullStatus.ProtoReflect.Descriptor instead.
|
||||
func (*FullStatus) Descriptor() ([]byte, []int) {
|
||||
return file_replicationdata_proto_rawDescGZIP(), []int{3}
|
||||
}
|
||||
|
||||
func (x *FullStatus) GetServerId() uint32 {
|
||||
if x != nil {
|
||||
return x.ServerId
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *FullStatus) GetServerUuid() string {
|
||||
if x != nil {
|
||||
return x.ServerUuid
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *FullStatus) GetReplicationStatus() *Status {
|
||||
if x != nil {
|
||||
return x.ReplicationStatus
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *FullStatus) GetPrimaryStatus() *PrimaryStatus {
|
||||
if x != nil {
|
||||
return x.PrimaryStatus
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *FullStatus) GetGtidPurged() string {
|
||||
if x != nil {
|
||||
return x.GtidPurged
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *FullStatus) GetVersion() string {
|
||||
if x != nil {
|
||||
return x.Version
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *FullStatus) GetVersionComment() string {
|
||||
if x != nil {
|
||||
return x.VersionComment
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *FullStatus) GetReadOnly() bool {
|
||||
if x != nil {
|
||||
return x.ReadOnly
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (x *FullStatus) GetGtidMode() string {
|
||||
if x != nil {
|
||||
return x.GtidMode
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *FullStatus) GetBinlogFormat() string {
|
||||
if x != nil {
|
||||
return x.BinlogFormat
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *FullStatus) GetBinlogRowImage() string {
|
||||
if x != nil {
|
||||
return x.BinlogRowImage
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *FullStatus) GetLogBinEnabled() bool {
|
||||
if x != nil {
|
||||
return x.LogBinEnabled
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (x *FullStatus) GetLogReplicaUpdates() bool {
|
||||
if x != nil {
|
||||
return x.LogReplicaUpdates
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (x *FullStatus) GetSemiSyncPrimaryEnabled() bool {
|
||||
if x != nil {
|
||||
return x.SemiSyncPrimaryEnabled
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (x *FullStatus) GetSemiSyncReplicaEnabled() bool {
|
||||
if x != nil {
|
||||
return x.SemiSyncReplicaEnabled
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (x *FullStatus) GetSemiSyncPrimaryStatus() bool {
|
||||
if x != nil {
|
||||
return x.SemiSyncPrimaryStatus
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (x *FullStatus) GetSemiSyncReplicaStatus() bool {
|
||||
if x != nil {
|
||||
return x.SemiSyncReplicaStatus
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (x *FullStatus) GetSemiSyncPrimaryClients() uint32 {
|
||||
if x != nil {
|
||||
return x.SemiSyncPrimaryClients
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *FullStatus) GetSemiSyncPrimaryTimeout() uint64 {
|
||||
if x != nil {
|
||||
return x.SemiSyncPrimaryTimeout
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *FullStatus) GetSemiSyncWaitForReplicaCount() uint32 {
|
||||
if x != nil {
|
||||
return x.SemiSyncWaitForReplicaCount
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
var File_replicationdata_proto protoreflect.FileDescriptor
|
||||
|
||||
var file_replicationdata_proto_rawDesc = []byte{
|
||||
0x0a, 0x15, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x64, 0x61, 0x74,
|
||||
0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61,
|
||||
0x74, 0x69, 0x6f, 0x6e, 0x64, 0x61, 0x74, 0x61, 0x22, 0xf4, 0x04, 0x0a, 0x06, 0x53, 0x74, 0x61,
|
||||
0x74, 0x69, 0x6f, 0x6e, 0x64, 0x61, 0x74, 0x61, 0x22, 0xe4, 0x07, 0x0a, 0x06, 0x53, 0x74, 0x61,
|
||||
0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18,
|
||||
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12,
|
||||
0x2a, 0x0a, 0x11, 0x69, 0x6f, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x72, 0x75, 0x6e,
|
||||
|
@ -398,23 +662,46 @@ var file_replicationdata_proto_rawDesc = []byte{
|
|||
0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x4c, 0x6f, 0x67, 0x50, 0x6f,
|
||||
0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70,
|
||||
0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66,
|
||||
0x69, 0x6c, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x17, 0x66,
|
||||
0x69, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x70, 0x6f,
|
||||
0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x66, 0x69,
|
||||
0x6c, 0x65, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x4c, 0x6f, 0x67, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69,
|
||||
0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x72,
|
||||
0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x73, 0x6f,
|
||||
0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b,
|
||||
0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28,
|
||||
0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x75, 0x69, 0x64, 0x12, 0x19, 0x0a,
|
||||
0x08, 0x69, 0x6f, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||
0x07, 0x69, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74,
|
||||
0x5f, 0x69, 0x6f, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52,
|
||||
0x0b, 0x6c, 0x61, 0x73, 0x74, 0x49, 0x6f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x09,
|
||||
0x73, 0x71, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||
0x08, 0x73, 0x71, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73,
|
||||
0x74, 0x5f, 0x73, 0x71, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28,
|
||||
0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x71, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22,
|
||||
0x69, 0x6c, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x2b, 0x72,
|
||||
0x65, 0x6c, 0x61, 0x79, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f,
|
||||
0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x5f, 0x65, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e,
|
||||
0x74, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09,
|
||||
0x52, 0x26, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x4c, 0x6f, 0x67, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,
|
||||
0x42, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x45, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x74,
|
||||
0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72,
|
||||
0x63, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01,
|
||||
0x28, 0x0d, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
|
||||
0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x75, 0x69,
|
||||
0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55,
|
||||
0x75, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6f, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18,
|
||||
0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x22,
|
||||
0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x69, 0x6f, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18,
|
||||
0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x49, 0x6f, 0x45, 0x72, 0x72,
|
||||
0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18,
|
||||
0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x71, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12,
|
||||
0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x71, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f,
|
||||
0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x71, 0x6c,
|
||||
0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x35, 0x0a, 0x17, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x6c,
|
||||
0x6f, 0x67, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e,
|
||||
0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x4c, 0x6f, 0x67,
|
||||
0x46, 0x69, 0x6c, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b,
|
||||
0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28,
|
||||
0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1b, 0x0a,
|
||||
0x09, 0x73, 0x71, 0x6c, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0d,
|
||||
0x52, 0x08, 0x73, 0x71, 0x6c, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x75,
|
||||
0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28,
|
||||
0x08, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x6f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12,
|
||||
0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x67, 0x74, 0x69, 0x64, 0x18, 0x15, 0x20,
|
||||
0x01, 0x28, 0x08, 0x52, 0x09, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x47, 0x74, 0x69, 0x64, 0x12, 0x36,
|
||||
0x0a, 0x17, 0x68, 0x61, 0x73, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
|
||||
0x6e, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52,
|
||||
0x15, 0x68, 0x61, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46,
|
||||
0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x73, 0x6c, 0x5f, 0x61, 0x6c,
|
||||
0x6c, 0x6f, 0x77, 0x65, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x73, 0x73, 0x6c,
|
||||
0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x17, 0x72, 0x65, 0x70, 0x6c, 0x69,
|
||||
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f,
|
||||
0x77, 0x6e, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63,
|
||||
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x61, 0x67, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x22,
|
||||
0x77, 0x0a, 0x15, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69,
|
||||
0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2f, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f,
|
||||
0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69,
|
||||
|
@ -427,14 +714,75 @@ var file_replicationdata_proto_rawDesc = []byte{
|
|||
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x73,
|
||||
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x6f,
|
||||
0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x69,
|
||||
0x6c, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x3b, 0x0a, 0x13, 0x53, 0x74,
|
||||
0x6f, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64,
|
||||
0x65, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4f, 0x41, 0x4e, 0x44, 0x53, 0x51, 0x4c, 0x54, 0x48, 0x52,
|
||||
0x45, 0x41, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x4f, 0x54, 0x48, 0x52, 0x45, 0x41,
|
||||
0x44, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x42, 0x2e, 0x5a, 0x2c, 0x76, 0x69, 0x74, 0x65, 0x73,
|
||||
0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76,
|
||||
0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
|
||||
0x69, 0x6f, 0x6e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
0x6c, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc3, 0x07, 0x0a, 0x0a, 0x46,
|
||||
0x75, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x72,
|
||||
0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x73, 0x65,
|
||||
0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
|
||||
0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72,
|
||||
0x76, 0x65, 0x72, 0x55, 0x75, 0x69, 0x64, 0x12, 0x46, 0x0a, 0x12, 0x72, 0x65, 0x70, 0x6c, 0x69,
|
||||
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20,
|
||||
0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
|
||||
0x6e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x11, 0x72, 0x65,
|
||||
0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
|
||||
0x45, 0x0a, 0x0e, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75,
|
||||
0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63,
|
||||
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72,
|
||||
0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0d, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79,
|
||||
0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x67, 0x74, 0x69, 0x64, 0x5f, 0x70,
|
||||
0x75, 0x72, 0x67, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x67, 0x74, 0x69,
|
||||
0x64, 0x50, 0x75, 0x72, 0x67, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
|
||||
0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
|
||||
0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6d,
|
||||
0x6d, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x76, 0x65, 0x72, 0x73,
|
||||
0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65,
|
||||
0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72,
|
||||
0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x74, 0x69, 0x64, 0x5f,
|
||||
0x6d, 0x6f, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x74, 0x69, 0x64,
|
||||
0x4d, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x5f, 0x66,
|
||||
0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x69, 0x6e,
|
||||
0x6c, 0x6f, 0x67, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x69, 0x6e,
|
||||
0x6c, 0x6f, 0x67, 0x5f, 0x72, 0x6f, 0x77, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20,
|
||||
0x01, 0x28, 0x09, 0x52, 0x0e, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x52, 0x6f, 0x77, 0x49, 0x6d,
|
||||
0x61, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x6f, 0x67, 0x5f, 0x62, 0x69, 0x6e, 0x5f, 0x65,
|
||||
0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6c, 0x6f,
|
||||
0x67, 0x42, 0x69, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x6c,
|
||||
0x6f, 0x67, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74,
|
||||
0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x70,
|
||||
0x6c, 0x69, 0x63, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x19, 0x73,
|
||||
0x65, 0x6d, 0x69, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79,
|
||||
0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16,
|
||||
0x73, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x45,
|
||||
0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x39, 0x0a, 0x19, 0x73, 0x65, 0x6d, 0x69, 0x5f, 0x73,
|
||||
0x79, 0x6e, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x65, 0x6e, 0x61, 0x62,
|
||||
0x6c, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x73, 0x65, 0x6d, 0x69, 0x53,
|
||||
0x79, 0x6e, 0x63, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65,
|
||||
0x64, 0x12, 0x37, 0x0a, 0x18, 0x73, 0x65, 0x6d, 0x69, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x70,
|
||||
0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x10, 0x20,
|
||||
0x01, 0x28, 0x08, 0x52, 0x15, 0x73, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x72, 0x69,
|
||||
0x6d, 0x61, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x37, 0x0a, 0x18, 0x73, 0x65,
|
||||
0x6d, 0x69, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f,
|
||||
0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x73, 0x65,
|
||||
0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x74, 0x61,
|
||||
0x74, 0x75, 0x73, 0x12, 0x39, 0x0a, 0x19, 0x73, 0x65, 0x6d, 0x69, 0x5f, 0x73, 0x79, 0x6e, 0x63,
|
||||
0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73,
|
||||
0x18, 0x12, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x16, 0x73, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63,
|
||||
0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x39,
|
||||
0x0a, 0x19, 0x73, 0x65, 0x6d, 0x69, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x70, 0x72, 0x69, 0x6d,
|
||||
0x61, 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28,
|
||||
0x04, 0x52, 0x16, 0x73, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x72, 0x69, 0x6d, 0x61,
|
||||
0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x45, 0x0a, 0x20, 0x73, 0x65, 0x6d,
|
||||
0x69, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x5f,
|
||||
0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x14, 0x20,
|
||||
0x01, 0x28, 0x0d, 0x52, 0x1b, 0x73, 0x65, 0x6d, 0x69, 0x53, 0x79, 0x6e, 0x63, 0x57, 0x61, 0x69,
|
||||
0x74, 0x46, 0x6f, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74,
|
||||
0x2a, 0x3b, 0x0a, 0x13, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
|
||||
0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4f, 0x41, 0x4e, 0x44,
|
||||
0x53, 0x51, 0x4c, 0x54, 0x48, 0x52, 0x45, 0x41, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x49,
|
||||
0x4f, 0x54, 0x48, 0x52, 0x45, 0x41, 0x44, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x42, 0x2e, 0x5a,
|
||||
0x2c, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73,
|
||||
0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x72, 0x65,
|
||||
0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70,
|
||||
0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
}
|
||||
|
||||
var (
|
||||
|
@ -450,21 +798,24 @@ func file_replicationdata_proto_rawDescGZIP() []byte {
|
|||
}
|
||||
|
||||
var file_replicationdata_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
|
||||
var file_replicationdata_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
|
||||
var file_replicationdata_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
|
||||
var file_replicationdata_proto_goTypes = []interface{}{
|
||||
(StopReplicationMode)(0), // 0: replicationdata.StopReplicationMode
|
||||
(*Status)(nil), // 1: replicationdata.Status
|
||||
(*StopReplicationStatus)(nil), // 2: replicationdata.StopReplicationStatus
|
||||
(*PrimaryStatus)(nil), // 3: replicationdata.PrimaryStatus
|
||||
(*FullStatus)(nil), // 4: replicationdata.FullStatus
|
||||
}
|
||||
var file_replicationdata_proto_depIdxs = []int32{
|
||||
1, // 0: replicationdata.StopReplicationStatus.before:type_name -> replicationdata.Status
|
||||
1, // 1: replicationdata.StopReplicationStatus.after:type_name -> replicationdata.Status
|
||||
2, // [2:2] is the sub-list for method output_type
|
||||
2, // [2:2] is the sub-list for method input_type
|
||||
2, // [2:2] is the sub-list for extension type_name
|
||||
2, // [2:2] is the sub-list for extension extendee
|
||||
0, // [0:2] is the sub-list for field type_name
|
||||
1, // 2: replicationdata.FullStatus.replication_status:type_name -> replicationdata.Status
|
||||
3, // 3: replicationdata.FullStatus.primary_status:type_name -> replicationdata.PrimaryStatus
|
||||
4, // [4:4] is the sub-list for method output_type
|
||||
4, // [4:4] is the sub-list for method input_type
|
||||
4, // [4:4] is the sub-list for extension type_name
|
||||
4, // [4:4] is the sub-list for extension extendee
|
||||
0, // [0:4] is the sub-list for field type_name
|
||||
}
|
||||
|
||||
func init() { file_replicationdata_proto_init() }
|
||||
|
@ -509,6 +860,18 @@ func file_replicationdata_proto_init() {
|
|||
return nil
|
||||
}
|
||||
}
|
||||
file_replicationdata_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*FullStatus); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
type x struct{}
|
||||
out := protoimpl.TypeBuilder{
|
||||
|
@ -516,7 +879,7 @@ func file_replicationdata_proto_init() {
|
|||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||
RawDescriptor: file_replicationdata_proto_rawDesc,
|
||||
NumEnums: 1,
|
||||
NumMessages: 3,
|
||||
NumMessages: 4,
|
||||
NumExtensions: 0,
|
||||
NumServices: 0,
|
||||
},
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -3478,6 +3478,148 @@ func (m *ReplicaWasPromotedResponse) MarshalToSizedBufferVT(dAtA []byte) (int, e
|
|||
return len(dAtA) - i, nil
|
||||
}
|
||||
|
||||
func (m *ResetReplicationParametersRequest) MarshalVT() (dAtA []byte, err error) {
|
||||
if m == nil {
|
||||
return nil, nil
|
||||
}
|
||||
size := m.SizeVT()
|
||||
dAtA = make([]byte, size)
|
||||
n, err := m.MarshalToSizedBufferVT(dAtA[:size])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return dAtA[:n], nil
|
||||
}
|
||||
|
||||
func (m *ResetReplicationParametersRequest) MarshalToVT(dAtA []byte) (int, error) {
|
||||
size := m.SizeVT()
|
||||
return m.MarshalToSizedBufferVT(dAtA[:size])
|
||||
}
|
||||
|
||||
func (m *ResetReplicationParametersRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
|
||||
if m == nil {
|
||||
return 0, nil
|
||||
}
|
||||
i := len(dAtA)
|
||||
_ = i
|
||||
var l int
|
||||
_ = l
|
||||
if m.unknownFields != nil {
|
||||
i -= len(m.unknownFields)
|
||||
copy(dAtA[i:], m.unknownFields)
|
||||
}
|
||||
return len(dAtA) - i, nil
|
||||
}
|
||||
|
||||
func (m *ResetReplicationParametersResponse) MarshalVT() (dAtA []byte, err error) {
|
||||
if m == nil {
|
||||
return nil, nil
|
||||
}
|
||||
size := m.SizeVT()
|
||||
dAtA = make([]byte, size)
|
||||
n, err := m.MarshalToSizedBufferVT(dAtA[:size])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return dAtA[:n], nil
|
||||
}
|
||||
|
||||
func (m *ResetReplicationParametersResponse) MarshalToVT(dAtA []byte) (int, error) {
|
||||
size := m.SizeVT()
|
||||
return m.MarshalToSizedBufferVT(dAtA[:size])
|
||||
}
|
||||
|
||||
func (m *ResetReplicationParametersResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
|
||||
if m == nil {
|
||||
return 0, nil
|
||||
}
|
||||
i := len(dAtA)
|
||||
_ = i
|
||||
var l int
|
||||
_ = l
|
||||
if m.unknownFields != nil {
|
||||
i -= len(m.unknownFields)
|
||||
copy(dAtA[i:], m.unknownFields)
|
||||
}
|
||||
return len(dAtA) - i, nil
|
||||
}
|
||||
|
||||
func (m *FullStatusRequest) MarshalVT() (dAtA []byte, err error) {
|
||||
if m == nil {
|
||||
return nil, nil
|
||||
}
|
||||
size := m.SizeVT()
|
||||
dAtA = make([]byte, size)
|
||||
n, err := m.MarshalToSizedBufferVT(dAtA[:size])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return dAtA[:n], nil
|
||||
}
|
||||
|
||||
func (m *FullStatusRequest) MarshalToVT(dAtA []byte) (int, error) {
|
||||
size := m.SizeVT()
|
||||
return m.MarshalToSizedBufferVT(dAtA[:size])
|
||||
}
|
||||
|
||||
func (m *FullStatusRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
|
||||
if m == nil {
|
||||
return 0, nil
|
||||
}
|
||||
i := len(dAtA)
|
||||
_ = i
|
||||
var l int
|
||||
_ = l
|
||||
if m.unknownFields != nil {
|
||||
i -= len(m.unknownFields)
|
||||
copy(dAtA[i:], m.unknownFields)
|
||||
}
|
||||
return len(dAtA) - i, nil
|
||||
}
|
||||
|
||||
func (m *FullStatusResponse) MarshalVT() (dAtA []byte, err error) {
|
||||
if m == nil {
|
||||
return nil, nil
|
||||
}
|
||||
size := m.SizeVT()
|
||||
dAtA = make([]byte, size)
|
||||
n, err := m.MarshalToSizedBufferVT(dAtA[:size])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return dAtA[:n], nil
|
||||
}
|
||||
|
||||
func (m *FullStatusResponse) MarshalToVT(dAtA []byte) (int, error) {
|
||||
size := m.SizeVT()
|
||||
return m.MarshalToSizedBufferVT(dAtA[:size])
|
||||
}
|
||||
|
||||
func (m *FullStatusResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
|
||||
if m == nil {
|
||||
return 0, nil
|
||||
}
|
||||
i := len(dAtA)
|
||||
_ = i
|
||||
var l int
|
||||
_ = l
|
||||
if m.unknownFields != nil {
|
||||
i -= len(m.unknownFields)
|
||||
copy(dAtA[i:], m.unknownFields)
|
||||
}
|
||||
if m.Status != nil {
|
||||
size, err := m.Status.MarshalToSizedBufferVT(dAtA[:i])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
i -= size
|
||||
i = encodeVarint(dAtA, i, uint64(size))
|
||||
i--
|
||||
dAtA[i] = 0xa
|
||||
}
|
||||
return len(dAtA) - i, nil
|
||||
}
|
||||
|
||||
func (m *SetReplicationSourceRequest) MarshalVT() (dAtA []byte, err error) {
|
||||
if m == nil {
|
||||
return nil, nil
|
||||
|
@ -5869,6 +6011,58 @@ func (m *ReplicaWasPromotedResponse) SizeVT() (n int) {
|
|||
return n
|
||||
}
|
||||
|
||||
func (m *ResetReplicationParametersRequest) SizeVT() (n int) {
|
||||
if m == nil {
|
||||
return 0
|
||||
}
|
||||
var l int
|
||||
_ = l
|
||||
if m.unknownFields != nil {
|
||||
n += len(m.unknownFields)
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
||||
func (m *ResetReplicationParametersResponse) SizeVT() (n int) {
|
||||
if m == nil {
|
||||
return 0
|
||||
}
|
||||
var l int
|
||||
_ = l
|
||||
if m.unknownFields != nil {
|
||||
n += len(m.unknownFields)
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
||||
func (m *FullStatusRequest) SizeVT() (n int) {
|
||||
if m == nil {
|
||||
return 0
|
||||
}
|
||||
var l int
|
||||
_ = l
|
||||
if m.unknownFields != nil {
|
||||
n += len(m.unknownFields)
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
||||
func (m *FullStatusResponse) SizeVT() (n int) {
|
||||
if m == nil {
|
||||
return 0
|
||||
}
|
||||
var l int
|
||||
_ = l
|
||||
if m.Status != nil {
|
||||
l = m.Status.SizeVT()
|
||||
n += 1 + l + sov(uint64(l))
|
||||
}
|
||||
if m.unknownFields != nil {
|
||||
n += len(m.unknownFields)
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
||||
func (m *SetReplicationSourceRequest) SizeVT() (n int) {
|
||||
if m == nil {
|
||||
return 0
|
||||
|
@ -13515,6 +13709,246 @@ func (m *ReplicaWasPromotedResponse) UnmarshalVT(dAtA []byte) error {
|
|||
}
|
||||
return nil
|
||||
}
|
||||
func (m *ResetReplicationParametersRequest) UnmarshalVT(dAtA []byte) error {
|
||||
l := len(dAtA)
|
||||
iNdEx := 0
|
||||
for iNdEx < l {
|
||||
preIndex := iNdEx
|
||||
var wire uint64
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflow
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
wire |= uint64(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
fieldNum := int32(wire >> 3)
|
||||
wireType := int(wire & 0x7)
|
||||
if wireType == 4 {
|
||||
return fmt.Errorf("proto: ResetReplicationParametersRequest: wiretype end group for non-group")
|
||||
}
|
||||
if fieldNum <= 0 {
|
||||
return fmt.Errorf("proto: ResetReplicationParametersRequest: illegal tag %d (wire type %d)", fieldNum, wire)
|
||||
}
|
||||
switch fieldNum {
|
||||
default:
|
||||
iNdEx = preIndex
|
||||
skippy, err := skip(dAtA[iNdEx:])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if (skippy < 0) || (iNdEx+skippy) < 0 {
|
||||
return ErrInvalidLength
|
||||
}
|
||||
if (iNdEx + skippy) > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
|
||||
iNdEx += skippy
|
||||
}
|
||||
}
|
||||
|
||||
if iNdEx > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (m *ResetReplicationParametersResponse) UnmarshalVT(dAtA []byte) error {
|
||||
l := len(dAtA)
|
||||
iNdEx := 0
|
||||
for iNdEx < l {
|
||||
preIndex := iNdEx
|
||||
var wire uint64
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflow
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
wire |= uint64(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
fieldNum := int32(wire >> 3)
|
||||
wireType := int(wire & 0x7)
|
||||
if wireType == 4 {
|
||||
return fmt.Errorf("proto: ResetReplicationParametersResponse: wiretype end group for non-group")
|
||||
}
|
||||
if fieldNum <= 0 {
|
||||
return fmt.Errorf("proto: ResetReplicationParametersResponse: illegal tag %d (wire type %d)", fieldNum, wire)
|
||||
}
|
||||
switch fieldNum {
|
||||
default:
|
||||
iNdEx = preIndex
|
||||
skippy, err := skip(dAtA[iNdEx:])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if (skippy < 0) || (iNdEx+skippy) < 0 {
|
||||
return ErrInvalidLength
|
||||
}
|
||||
if (iNdEx + skippy) > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
|
||||
iNdEx += skippy
|
||||
}
|
||||
}
|
||||
|
||||
if iNdEx > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (m *FullStatusRequest) UnmarshalVT(dAtA []byte) error {
|
||||
l := len(dAtA)
|
||||
iNdEx := 0
|
||||
for iNdEx < l {
|
||||
preIndex := iNdEx
|
||||
var wire uint64
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflow
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
wire |= uint64(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
fieldNum := int32(wire >> 3)
|
||||
wireType := int(wire & 0x7)
|
||||
if wireType == 4 {
|
||||
return fmt.Errorf("proto: FullStatusRequest: wiretype end group for non-group")
|
||||
}
|
||||
if fieldNum <= 0 {
|
||||
return fmt.Errorf("proto: FullStatusRequest: illegal tag %d (wire type %d)", fieldNum, wire)
|
||||
}
|
||||
switch fieldNum {
|
||||
default:
|
||||
iNdEx = preIndex
|
||||
skippy, err := skip(dAtA[iNdEx:])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if (skippy < 0) || (iNdEx+skippy) < 0 {
|
||||
return ErrInvalidLength
|
||||
}
|
||||
if (iNdEx + skippy) > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
|
||||
iNdEx += skippy
|
||||
}
|
||||
}
|
||||
|
||||
if iNdEx > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (m *FullStatusResponse) UnmarshalVT(dAtA []byte) error {
|
||||
l := len(dAtA)
|
||||
iNdEx := 0
|
||||
for iNdEx < l {
|
||||
preIndex := iNdEx
|
||||
var wire uint64
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflow
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
wire |= uint64(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
fieldNum := int32(wire >> 3)
|
||||
wireType := int(wire & 0x7)
|
||||
if wireType == 4 {
|
||||
return fmt.Errorf("proto: FullStatusResponse: wiretype end group for non-group")
|
||||
}
|
||||
if fieldNum <= 0 {
|
||||
return fmt.Errorf("proto: FullStatusResponse: illegal tag %d (wire type %d)", fieldNum, wire)
|
||||
}
|
||||
switch fieldNum {
|
||||
case 1:
|
||||
if wireType != 2 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
|
||||
}
|
||||
var msglen int
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflow
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
msglen |= int(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
if msglen < 0 {
|
||||
return ErrInvalidLength
|
||||
}
|
||||
postIndex := iNdEx + msglen
|
||||
if postIndex < 0 {
|
||||
return ErrInvalidLength
|
||||
}
|
||||
if postIndex > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
if m.Status == nil {
|
||||
m.Status = &replicationdata.FullStatus{}
|
||||
}
|
||||
if err := m.Status.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
|
||||
return err
|
||||
}
|
||||
iNdEx = postIndex
|
||||
default:
|
||||
iNdEx = preIndex
|
||||
skippy, err := skip(dAtA[iNdEx:])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if (skippy < 0) || (iNdEx+skippy) < 0 {
|
||||
return ErrInvalidLength
|
||||
}
|
||||
if (iNdEx + skippy) > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
|
||||
iNdEx += skippy
|
||||
}
|
||||
}
|
||||
|
||||
if iNdEx > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (m *SetReplicationSourceRequest) UnmarshalVT(dAtA []byte) error {
|
||||
l := len(dAtA)
|
||||
iNdEx := 0
|
||||
|
|
|
@ -45,7 +45,7 @@ var file_tabletmanagerservice_proto_rawDesc = []byte{
|
|||
0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14, 0x74, 0x61,
|
||||
0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x73, 0x65, 0x72, 0x76, 0x69,
|
||||
0x63, 0x65, 0x1a, 0x17, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65,
|
||||
0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xa9, 0x25, 0x0a, 0x0d,
|
||||
0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x94, 0x27, 0x0a, 0x0d,
|
||||
0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x12, 0x49, 0x0a,
|
||||
0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x1e, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61,
|
||||
0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65,
|
||||
|
@ -296,59 +296,73 @@ var file_tabletmanagerservice_proto_rawDesc = []byte{
|
|||
0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e,
|
||||
0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61,
|
||||
0x57, 0x61, 0x73, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f,
|
||||
0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x79, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6c,
|
||||
0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x2e, 0x2e,
|
||||
0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74,
|
||||
0x61, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
|
||||
0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e,
|
||||
0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74,
|
||||
0x61, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
|
||||
0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
|
||||
0x12, 0x76, 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x57, 0x61, 0x73, 0x52, 0x65,
|
||||
0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x2d, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74,
|
||||
0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x70, 0x6c,
|
||||
0x69, 0x63, 0x61, 0x57, 0x61, 0x73, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52,
|
||||
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d,
|
||||
0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69,
|
||||
0x63, 0x61, 0x57, 0x61, 0x73, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65,
|
||||
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8e, 0x01, 0x0a, 0x1b, 0x53, 0x74, 0x6f,
|
||||
0x70, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x47,
|
||||
0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x35, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65,
|
||||
0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x74, 0x6f,
|
||||
0x70, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x47,
|
||||
0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
|
||||
0x36, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64,
|
||||
0x61, 0x74, 0x61, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
|
||||
0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,
|
||||
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x67, 0x0a, 0x0e, 0x50, 0x72, 0x6f,
|
||||
0x6d, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x12, 0x28, 0x2e, 0x74, 0x61,
|
||||
0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e,
|
||||
0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65,
|
||||
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61,
|
||||
0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74,
|
||||
0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
|
||||
0x22, 0x00, 0x12, 0x51, 0x0a, 0x06, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x20, 0x2e, 0x74,
|
||||
0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61,
|
||||
0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21,
|
||||
0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61,
|
||||
0x74, 0x61, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
|
||||
0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x72, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65,
|
||||
0x46, 0x72, 0x6f, 0x6d, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x2b, 0x2e, 0x74, 0x61, 0x62,
|
||||
0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8b, 0x01, 0x0a, 0x1a, 0x52, 0x65, 0x73, 0x65, 0x74, 0x52,
|
||||
0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65,
|
||||
0x74, 0x65, 0x72, 0x73, 0x12, 0x34, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e,
|
||||
0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x52, 0x65,
|
||||
0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74,
|
||||
0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x74, 0x61, 0x62,
|
||||
0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52,
|
||||
0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70,
|
||||
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74,
|
||||
0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x74,
|
||||
0x6f, 0x72, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73,
|
||||
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x4c, 0x0a, 0x05, 0x56, 0x45, 0x78,
|
||||
0x65, 0x63, 0x12, 0x1f, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67,
|
||||
0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x45, 0x78, 0x65, 0x63, 0x52, 0x65, 0x71, 0x75,
|
||||
0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61,
|
||||
0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x45, 0x78, 0x65, 0x63, 0x52, 0x65, 0x73,
|
||||
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, 0x76, 0x69, 0x74, 0x65, 0x73,
|
||||
0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76,
|
||||
0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61,
|
||||
0x6e, 0x61, 0x67, 0x65, 0x72, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72,
|
||||
0x6f, 0x74, 0x6f, 0x33,
|
||||
0x65, 0x73, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
|
||||
0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
|
||||
0x65, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x0a, 0x46, 0x75, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75,
|
||||
0x73, 0x12, 0x24, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65,
|
||||
0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x46, 0x75, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
|
||||
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74,
|
||||
0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x46, 0x75, 0x6c, 0x6c,
|
||||
0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
|
||||
0x12, 0x79, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69,
|
||||
0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x2e, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65,
|
||||
0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x74,
|
||||
0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63,
|
||||
0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65,
|
||||
0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x74,
|
||||
0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63,
|
||||
0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x76, 0x0a, 0x13, 0x52,
|
||||
0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x57, 0x61, 0x73, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74,
|
||||
0x65, 0x64, 0x12, 0x2d, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67,
|
||||
0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x57, 0x61,
|
||||
0x73, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
||||
0x74, 0x1a, 0x2e, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65,
|
||||
0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x57, 0x61, 0x73,
|
||||
0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
|
||||
0x65, 0x22, 0x00, 0x12, 0x8e, 0x01, 0x0a, 0x1b, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6c,
|
||||
0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61,
|
||||
0x74, 0x75, 0x73, 0x12, 0x35, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61,
|
||||
0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6c,
|
||||
0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61,
|
||||
0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x74, 0x61, 0x62,
|
||||
0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53,
|
||||
0x74, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e,
|
||||
0x64, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
|
||||
0x73, 0x65, 0x22, 0x00, 0x12, 0x67, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x52,
|
||||
0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x12, 0x28, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d,
|
||||
0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f,
|
||||
0x74, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
||||
0x1a, 0x29, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72,
|
||||
0x64, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6c,
|
||||
0x69, 0x63, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a,
|
||||
0x06, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x20, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74,
|
||||
0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x61, 0x63, 0x6b,
|
||||
0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x74, 0x61, 0x62, 0x6c,
|
||||
0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x61,
|
||||
0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01,
|
||||
0x12, 0x72, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x42,
|
||||
0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x2b, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61,
|
||||
0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72,
|
||||
0x65, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65,
|
||||
0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67,
|
||||
0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x72,
|
||||
0x6f, 0x6d, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
|
||||
0x22, 0x00, 0x30, 0x01, 0x12, 0x4c, 0x0a, 0x05, 0x56, 0x45, 0x78, 0x65, 0x63, 0x12, 0x1f, 0x2e,
|
||||
0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74,
|
||||
0x61, 0x2e, 0x56, 0x45, 0x78, 0x65, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20,
|
||||
0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61,
|
||||
0x74, 0x61, 0x2e, 0x56, 0x45, 0x78, 0x65, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
|
||||
0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2e, 0x69, 0x6f, 0x2f,
|
||||
0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f,
|
||||
0x74, 0x6f, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72,
|
||||
0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
}
|
||||
|
||||
var file_tabletmanagerservice_proto_goTypes = []interface{}{
|
||||
|
@ -390,58 +404,62 @@ var file_tabletmanagerservice_proto_goTypes = []interface{}{
|
|||
(*tabletmanagerdata.DemotePrimaryRequest)(nil), // 35: tabletmanagerdata.DemotePrimaryRequest
|
||||
(*tabletmanagerdata.UndoDemotePrimaryRequest)(nil), // 36: tabletmanagerdata.UndoDemotePrimaryRequest
|
||||
(*tabletmanagerdata.ReplicaWasPromotedRequest)(nil), // 37: tabletmanagerdata.ReplicaWasPromotedRequest
|
||||
(*tabletmanagerdata.SetReplicationSourceRequest)(nil), // 38: tabletmanagerdata.SetReplicationSourceRequest
|
||||
(*tabletmanagerdata.ReplicaWasRestartedRequest)(nil), // 39: tabletmanagerdata.ReplicaWasRestartedRequest
|
||||
(*tabletmanagerdata.StopReplicationAndGetStatusRequest)(nil), // 40: tabletmanagerdata.StopReplicationAndGetStatusRequest
|
||||
(*tabletmanagerdata.PromoteReplicaRequest)(nil), // 41: tabletmanagerdata.PromoteReplicaRequest
|
||||
(*tabletmanagerdata.BackupRequest)(nil), // 42: tabletmanagerdata.BackupRequest
|
||||
(*tabletmanagerdata.RestoreFromBackupRequest)(nil), // 43: tabletmanagerdata.RestoreFromBackupRequest
|
||||
(*tabletmanagerdata.VExecRequest)(nil), // 44: tabletmanagerdata.VExecRequest
|
||||
(*tabletmanagerdata.PingResponse)(nil), // 45: tabletmanagerdata.PingResponse
|
||||
(*tabletmanagerdata.SleepResponse)(nil), // 46: tabletmanagerdata.SleepResponse
|
||||
(*tabletmanagerdata.ExecuteHookResponse)(nil), // 47: tabletmanagerdata.ExecuteHookResponse
|
||||
(*tabletmanagerdata.GetSchemaResponse)(nil), // 48: tabletmanagerdata.GetSchemaResponse
|
||||
(*tabletmanagerdata.GetPermissionsResponse)(nil), // 49: tabletmanagerdata.GetPermissionsResponse
|
||||
(*tabletmanagerdata.SetReadOnlyResponse)(nil), // 50: tabletmanagerdata.SetReadOnlyResponse
|
||||
(*tabletmanagerdata.SetReadWriteResponse)(nil), // 51: tabletmanagerdata.SetReadWriteResponse
|
||||
(*tabletmanagerdata.ChangeTypeResponse)(nil), // 52: tabletmanagerdata.ChangeTypeResponse
|
||||
(*tabletmanagerdata.RefreshStateResponse)(nil), // 53: tabletmanagerdata.RefreshStateResponse
|
||||
(*tabletmanagerdata.RunHealthCheckResponse)(nil), // 54: tabletmanagerdata.RunHealthCheckResponse
|
||||
(*tabletmanagerdata.ReloadSchemaResponse)(nil), // 55: tabletmanagerdata.ReloadSchemaResponse
|
||||
(*tabletmanagerdata.PreflightSchemaResponse)(nil), // 56: tabletmanagerdata.PreflightSchemaResponse
|
||||
(*tabletmanagerdata.ApplySchemaResponse)(nil), // 57: tabletmanagerdata.ApplySchemaResponse
|
||||
(*tabletmanagerdata.LockTablesResponse)(nil), // 58: tabletmanagerdata.LockTablesResponse
|
||||
(*tabletmanagerdata.UnlockTablesResponse)(nil), // 59: tabletmanagerdata.UnlockTablesResponse
|
||||
(*tabletmanagerdata.ExecuteQueryResponse)(nil), // 60: tabletmanagerdata.ExecuteQueryResponse
|
||||
(*tabletmanagerdata.ExecuteFetchAsDbaResponse)(nil), // 61: tabletmanagerdata.ExecuteFetchAsDbaResponse
|
||||
(*tabletmanagerdata.ExecuteFetchAsAllPrivsResponse)(nil), // 62: tabletmanagerdata.ExecuteFetchAsAllPrivsResponse
|
||||
(*tabletmanagerdata.ExecuteFetchAsAppResponse)(nil), // 63: tabletmanagerdata.ExecuteFetchAsAppResponse
|
||||
(*tabletmanagerdata.ReplicationStatusResponse)(nil), // 64: tabletmanagerdata.ReplicationStatusResponse
|
||||
(*tabletmanagerdata.PrimaryStatusResponse)(nil), // 65: tabletmanagerdata.PrimaryStatusResponse
|
||||
(*tabletmanagerdata.PrimaryPositionResponse)(nil), // 66: tabletmanagerdata.PrimaryPositionResponse
|
||||
(*tabletmanagerdata.WaitForPositionResponse)(nil), // 67: tabletmanagerdata.WaitForPositionResponse
|
||||
(*tabletmanagerdata.StopReplicationResponse)(nil), // 68: tabletmanagerdata.StopReplicationResponse
|
||||
(*tabletmanagerdata.StopReplicationMinimumResponse)(nil), // 69: tabletmanagerdata.StopReplicationMinimumResponse
|
||||
(*tabletmanagerdata.StartReplicationResponse)(nil), // 70: tabletmanagerdata.StartReplicationResponse
|
||||
(*tabletmanagerdata.StartReplicationUntilAfterResponse)(nil), // 71: tabletmanagerdata.StartReplicationUntilAfterResponse
|
||||
(*tabletmanagerdata.GetReplicasResponse)(nil), // 72: tabletmanagerdata.GetReplicasResponse
|
||||
(*tabletmanagerdata.VReplicationExecResponse)(nil), // 73: tabletmanagerdata.VReplicationExecResponse
|
||||
(*tabletmanagerdata.VReplicationWaitForPosResponse)(nil), // 74: tabletmanagerdata.VReplicationWaitForPosResponse
|
||||
(*tabletmanagerdata.VDiffResponse)(nil), // 75: tabletmanagerdata.VDiffResponse
|
||||
(*tabletmanagerdata.ResetReplicationResponse)(nil), // 76: tabletmanagerdata.ResetReplicationResponse
|
||||
(*tabletmanagerdata.InitPrimaryResponse)(nil), // 77: tabletmanagerdata.InitPrimaryResponse
|
||||
(*tabletmanagerdata.PopulateReparentJournalResponse)(nil), // 78: tabletmanagerdata.PopulateReparentJournalResponse
|
||||
(*tabletmanagerdata.InitReplicaResponse)(nil), // 79: tabletmanagerdata.InitReplicaResponse
|
||||
(*tabletmanagerdata.DemotePrimaryResponse)(nil), // 80: tabletmanagerdata.DemotePrimaryResponse
|
||||
(*tabletmanagerdata.UndoDemotePrimaryResponse)(nil), // 81: tabletmanagerdata.UndoDemotePrimaryResponse
|
||||
(*tabletmanagerdata.ReplicaWasPromotedResponse)(nil), // 82: tabletmanagerdata.ReplicaWasPromotedResponse
|
||||
(*tabletmanagerdata.SetReplicationSourceResponse)(nil), // 83: tabletmanagerdata.SetReplicationSourceResponse
|
||||
(*tabletmanagerdata.ReplicaWasRestartedResponse)(nil), // 84: tabletmanagerdata.ReplicaWasRestartedResponse
|
||||
(*tabletmanagerdata.StopReplicationAndGetStatusResponse)(nil), // 85: tabletmanagerdata.StopReplicationAndGetStatusResponse
|
||||
(*tabletmanagerdata.PromoteReplicaResponse)(nil), // 86: tabletmanagerdata.PromoteReplicaResponse
|
||||
(*tabletmanagerdata.BackupResponse)(nil), // 87: tabletmanagerdata.BackupResponse
|
||||
(*tabletmanagerdata.RestoreFromBackupResponse)(nil), // 88: tabletmanagerdata.RestoreFromBackupResponse
|
||||
(*tabletmanagerdata.VExecResponse)(nil), // 89: tabletmanagerdata.VExecResponse
|
||||
(*tabletmanagerdata.ResetReplicationParametersRequest)(nil), // 38: tabletmanagerdata.ResetReplicationParametersRequest
|
||||
(*tabletmanagerdata.FullStatusRequest)(nil), // 39: tabletmanagerdata.FullStatusRequest
|
||||
(*tabletmanagerdata.SetReplicationSourceRequest)(nil), // 40: tabletmanagerdata.SetReplicationSourceRequest
|
||||
(*tabletmanagerdata.ReplicaWasRestartedRequest)(nil), // 41: tabletmanagerdata.ReplicaWasRestartedRequest
|
||||
(*tabletmanagerdata.StopReplicationAndGetStatusRequest)(nil), // 42: tabletmanagerdata.StopReplicationAndGetStatusRequest
|
||||
(*tabletmanagerdata.PromoteReplicaRequest)(nil), // 43: tabletmanagerdata.PromoteReplicaRequest
|
||||
(*tabletmanagerdata.BackupRequest)(nil), // 44: tabletmanagerdata.BackupRequest
|
||||
(*tabletmanagerdata.RestoreFromBackupRequest)(nil), // 45: tabletmanagerdata.RestoreFromBackupRequest
|
||||
(*tabletmanagerdata.VExecRequest)(nil), // 46: tabletmanagerdata.VExecRequest
|
||||
(*tabletmanagerdata.PingResponse)(nil), // 47: tabletmanagerdata.PingResponse
|
||||
(*tabletmanagerdata.SleepResponse)(nil), // 48: tabletmanagerdata.SleepResponse
|
||||
(*tabletmanagerdata.ExecuteHookResponse)(nil), // 49: tabletmanagerdata.ExecuteHookResponse
|
||||
(*tabletmanagerdata.GetSchemaResponse)(nil), // 50: tabletmanagerdata.GetSchemaResponse
|
||||
(*tabletmanagerdata.GetPermissionsResponse)(nil), // 51: tabletmanagerdata.GetPermissionsResponse
|
||||
(*tabletmanagerdata.SetReadOnlyResponse)(nil), // 52: tabletmanagerdata.SetReadOnlyResponse
|
||||
(*tabletmanagerdata.SetReadWriteResponse)(nil), // 53: tabletmanagerdata.SetReadWriteResponse
|
||||
(*tabletmanagerdata.ChangeTypeResponse)(nil), // 54: tabletmanagerdata.ChangeTypeResponse
|
||||
(*tabletmanagerdata.RefreshStateResponse)(nil), // 55: tabletmanagerdata.RefreshStateResponse
|
||||
(*tabletmanagerdata.RunHealthCheckResponse)(nil), // 56: tabletmanagerdata.RunHealthCheckResponse
|
||||
(*tabletmanagerdata.ReloadSchemaResponse)(nil), // 57: tabletmanagerdata.ReloadSchemaResponse
|
||||
(*tabletmanagerdata.PreflightSchemaResponse)(nil), // 58: tabletmanagerdata.PreflightSchemaResponse
|
||||
(*tabletmanagerdata.ApplySchemaResponse)(nil), // 59: tabletmanagerdata.ApplySchemaResponse
|
||||
(*tabletmanagerdata.LockTablesResponse)(nil), // 60: tabletmanagerdata.LockTablesResponse
|
||||
(*tabletmanagerdata.UnlockTablesResponse)(nil), // 61: tabletmanagerdata.UnlockTablesResponse
|
||||
(*tabletmanagerdata.ExecuteQueryResponse)(nil), // 62: tabletmanagerdata.ExecuteQueryResponse
|
||||
(*tabletmanagerdata.ExecuteFetchAsDbaResponse)(nil), // 63: tabletmanagerdata.ExecuteFetchAsDbaResponse
|
||||
(*tabletmanagerdata.ExecuteFetchAsAllPrivsResponse)(nil), // 64: tabletmanagerdata.ExecuteFetchAsAllPrivsResponse
|
||||
(*tabletmanagerdata.ExecuteFetchAsAppResponse)(nil), // 65: tabletmanagerdata.ExecuteFetchAsAppResponse
|
||||
(*tabletmanagerdata.ReplicationStatusResponse)(nil), // 66: tabletmanagerdata.ReplicationStatusResponse
|
||||
(*tabletmanagerdata.PrimaryStatusResponse)(nil), // 67: tabletmanagerdata.PrimaryStatusResponse
|
||||
(*tabletmanagerdata.PrimaryPositionResponse)(nil), // 68: tabletmanagerdata.PrimaryPositionResponse
|
||||
(*tabletmanagerdata.WaitForPositionResponse)(nil), // 69: tabletmanagerdata.WaitForPositionResponse
|
||||
(*tabletmanagerdata.StopReplicationResponse)(nil), // 70: tabletmanagerdata.StopReplicationResponse
|
||||
(*tabletmanagerdata.StopReplicationMinimumResponse)(nil), // 71: tabletmanagerdata.StopReplicationMinimumResponse
|
||||
(*tabletmanagerdata.StartReplicationResponse)(nil), // 72: tabletmanagerdata.StartReplicationResponse
|
||||
(*tabletmanagerdata.StartReplicationUntilAfterResponse)(nil), // 73: tabletmanagerdata.StartReplicationUntilAfterResponse
|
||||
(*tabletmanagerdata.GetReplicasResponse)(nil), // 74: tabletmanagerdata.GetReplicasResponse
|
||||
(*tabletmanagerdata.VReplicationExecResponse)(nil), // 75: tabletmanagerdata.VReplicationExecResponse
|
||||
(*tabletmanagerdata.VReplicationWaitForPosResponse)(nil), // 76: tabletmanagerdata.VReplicationWaitForPosResponse
|
||||
(*tabletmanagerdata.VDiffResponse)(nil), // 77: tabletmanagerdata.VDiffResponse
|
||||
(*tabletmanagerdata.ResetReplicationResponse)(nil), // 78: tabletmanagerdata.ResetReplicationResponse
|
||||
(*tabletmanagerdata.InitPrimaryResponse)(nil), // 79: tabletmanagerdata.InitPrimaryResponse
|
||||
(*tabletmanagerdata.PopulateReparentJournalResponse)(nil), // 80: tabletmanagerdata.PopulateReparentJournalResponse
|
||||
(*tabletmanagerdata.InitReplicaResponse)(nil), // 81: tabletmanagerdata.InitReplicaResponse
|
||||
(*tabletmanagerdata.DemotePrimaryResponse)(nil), // 82: tabletmanagerdata.DemotePrimaryResponse
|
||||
(*tabletmanagerdata.UndoDemotePrimaryResponse)(nil), // 83: tabletmanagerdata.UndoDemotePrimaryResponse
|
||||
(*tabletmanagerdata.ReplicaWasPromotedResponse)(nil), // 84: tabletmanagerdata.ReplicaWasPromotedResponse
|
||||
(*tabletmanagerdata.ResetReplicationParametersResponse)(nil), // 85: tabletmanagerdata.ResetReplicationParametersResponse
|
||||
(*tabletmanagerdata.FullStatusResponse)(nil), // 86: tabletmanagerdata.FullStatusResponse
|
||||
(*tabletmanagerdata.SetReplicationSourceResponse)(nil), // 87: tabletmanagerdata.SetReplicationSourceResponse
|
||||
(*tabletmanagerdata.ReplicaWasRestartedResponse)(nil), // 88: tabletmanagerdata.ReplicaWasRestartedResponse
|
||||
(*tabletmanagerdata.StopReplicationAndGetStatusResponse)(nil), // 89: tabletmanagerdata.StopReplicationAndGetStatusResponse
|
||||
(*tabletmanagerdata.PromoteReplicaResponse)(nil), // 90: tabletmanagerdata.PromoteReplicaResponse
|
||||
(*tabletmanagerdata.BackupResponse)(nil), // 91: tabletmanagerdata.BackupResponse
|
||||
(*tabletmanagerdata.RestoreFromBackupResponse)(nil), // 92: tabletmanagerdata.RestoreFromBackupResponse
|
||||
(*tabletmanagerdata.VExecResponse)(nil), // 93: tabletmanagerdata.VExecResponse
|
||||
}
|
||||
var file_tabletmanagerservice_proto_depIdxs = []int32{
|
||||
0, // 0: tabletmanagerservice.TabletManager.Ping:input_type -> tabletmanagerdata.PingRequest
|
||||
|
@ -482,60 +500,64 @@ var file_tabletmanagerservice_proto_depIdxs = []int32{
|
|||
35, // 35: tabletmanagerservice.TabletManager.DemotePrimary:input_type -> tabletmanagerdata.DemotePrimaryRequest
|
||||
36, // 36: tabletmanagerservice.TabletManager.UndoDemotePrimary:input_type -> tabletmanagerdata.UndoDemotePrimaryRequest
|
||||
37, // 37: tabletmanagerservice.TabletManager.ReplicaWasPromoted:input_type -> tabletmanagerdata.ReplicaWasPromotedRequest
|
||||
38, // 38: tabletmanagerservice.TabletManager.SetReplicationSource:input_type -> tabletmanagerdata.SetReplicationSourceRequest
|
||||
39, // 39: tabletmanagerservice.TabletManager.ReplicaWasRestarted:input_type -> tabletmanagerdata.ReplicaWasRestartedRequest
|
||||
40, // 40: tabletmanagerservice.TabletManager.StopReplicationAndGetStatus:input_type -> tabletmanagerdata.StopReplicationAndGetStatusRequest
|
||||
41, // 41: tabletmanagerservice.TabletManager.PromoteReplica:input_type -> tabletmanagerdata.PromoteReplicaRequest
|
||||
42, // 42: tabletmanagerservice.TabletManager.Backup:input_type -> tabletmanagerdata.BackupRequest
|
||||
43, // 43: tabletmanagerservice.TabletManager.RestoreFromBackup:input_type -> tabletmanagerdata.RestoreFromBackupRequest
|
||||
44, // 44: tabletmanagerservice.TabletManager.VExec:input_type -> tabletmanagerdata.VExecRequest
|
||||
45, // 45: tabletmanagerservice.TabletManager.Ping:output_type -> tabletmanagerdata.PingResponse
|
||||
46, // 46: tabletmanagerservice.TabletManager.Sleep:output_type -> tabletmanagerdata.SleepResponse
|
||||
47, // 47: tabletmanagerservice.TabletManager.ExecuteHook:output_type -> tabletmanagerdata.ExecuteHookResponse
|
||||
48, // 48: tabletmanagerservice.TabletManager.GetSchema:output_type -> tabletmanagerdata.GetSchemaResponse
|
||||
49, // 49: tabletmanagerservice.TabletManager.GetPermissions:output_type -> tabletmanagerdata.GetPermissionsResponse
|
||||
50, // 50: tabletmanagerservice.TabletManager.SetReadOnly:output_type -> tabletmanagerdata.SetReadOnlyResponse
|
||||
51, // 51: tabletmanagerservice.TabletManager.SetReadWrite:output_type -> tabletmanagerdata.SetReadWriteResponse
|
||||
52, // 52: tabletmanagerservice.TabletManager.ChangeType:output_type -> tabletmanagerdata.ChangeTypeResponse
|
||||
53, // 53: tabletmanagerservice.TabletManager.RefreshState:output_type -> tabletmanagerdata.RefreshStateResponse
|
||||
54, // 54: tabletmanagerservice.TabletManager.RunHealthCheck:output_type -> tabletmanagerdata.RunHealthCheckResponse
|
||||
55, // 55: tabletmanagerservice.TabletManager.ReloadSchema:output_type -> tabletmanagerdata.ReloadSchemaResponse
|
||||
56, // 56: tabletmanagerservice.TabletManager.PreflightSchema:output_type -> tabletmanagerdata.PreflightSchemaResponse
|
||||
57, // 57: tabletmanagerservice.TabletManager.ApplySchema:output_type -> tabletmanagerdata.ApplySchemaResponse
|
||||
58, // 58: tabletmanagerservice.TabletManager.LockTables:output_type -> tabletmanagerdata.LockTablesResponse
|
||||
59, // 59: tabletmanagerservice.TabletManager.UnlockTables:output_type -> tabletmanagerdata.UnlockTablesResponse
|
||||
60, // 60: tabletmanagerservice.TabletManager.ExecuteQuery:output_type -> tabletmanagerdata.ExecuteQueryResponse
|
||||
61, // 61: tabletmanagerservice.TabletManager.ExecuteFetchAsDba:output_type -> tabletmanagerdata.ExecuteFetchAsDbaResponse
|
||||
62, // 62: tabletmanagerservice.TabletManager.ExecuteFetchAsAllPrivs:output_type -> tabletmanagerdata.ExecuteFetchAsAllPrivsResponse
|
||||
63, // 63: tabletmanagerservice.TabletManager.ExecuteFetchAsApp:output_type -> tabletmanagerdata.ExecuteFetchAsAppResponse
|
||||
64, // 64: tabletmanagerservice.TabletManager.ReplicationStatus:output_type -> tabletmanagerdata.ReplicationStatusResponse
|
||||
65, // 65: tabletmanagerservice.TabletManager.PrimaryStatus:output_type -> tabletmanagerdata.PrimaryStatusResponse
|
||||
66, // 66: tabletmanagerservice.TabletManager.PrimaryPosition:output_type -> tabletmanagerdata.PrimaryPositionResponse
|
||||
67, // 67: tabletmanagerservice.TabletManager.WaitForPosition:output_type -> tabletmanagerdata.WaitForPositionResponse
|
||||
68, // 68: tabletmanagerservice.TabletManager.StopReplication:output_type -> tabletmanagerdata.StopReplicationResponse
|
||||
69, // 69: tabletmanagerservice.TabletManager.StopReplicationMinimum:output_type -> tabletmanagerdata.StopReplicationMinimumResponse
|
||||
70, // 70: tabletmanagerservice.TabletManager.StartReplication:output_type -> tabletmanagerdata.StartReplicationResponse
|
||||
71, // 71: tabletmanagerservice.TabletManager.StartReplicationUntilAfter:output_type -> tabletmanagerdata.StartReplicationUntilAfterResponse
|
||||
72, // 72: tabletmanagerservice.TabletManager.GetReplicas:output_type -> tabletmanagerdata.GetReplicasResponse
|
||||
73, // 73: tabletmanagerservice.TabletManager.VReplicationExec:output_type -> tabletmanagerdata.VReplicationExecResponse
|
||||
74, // 74: tabletmanagerservice.TabletManager.VReplicationWaitForPos:output_type -> tabletmanagerdata.VReplicationWaitForPosResponse
|
||||
75, // 75: tabletmanagerservice.TabletManager.VDiff:output_type -> tabletmanagerdata.VDiffResponse
|
||||
76, // 76: tabletmanagerservice.TabletManager.ResetReplication:output_type -> tabletmanagerdata.ResetReplicationResponse
|
||||
77, // 77: tabletmanagerservice.TabletManager.InitPrimary:output_type -> tabletmanagerdata.InitPrimaryResponse
|
||||
78, // 78: tabletmanagerservice.TabletManager.PopulateReparentJournal:output_type -> tabletmanagerdata.PopulateReparentJournalResponse
|
||||
79, // 79: tabletmanagerservice.TabletManager.InitReplica:output_type -> tabletmanagerdata.InitReplicaResponse
|
||||
80, // 80: tabletmanagerservice.TabletManager.DemotePrimary:output_type -> tabletmanagerdata.DemotePrimaryResponse
|
||||
81, // 81: tabletmanagerservice.TabletManager.UndoDemotePrimary:output_type -> tabletmanagerdata.UndoDemotePrimaryResponse
|
||||
82, // 82: tabletmanagerservice.TabletManager.ReplicaWasPromoted:output_type -> tabletmanagerdata.ReplicaWasPromotedResponse
|
||||
83, // 83: tabletmanagerservice.TabletManager.SetReplicationSource:output_type -> tabletmanagerdata.SetReplicationSourceResponse
|
||||
84, // 84: tabletmanagerservice.TabletManager.ReplicaWasRestarted:output_type -> tabletmanagerdata.ReplicaWasRestartedResponse
|
||||
85, // 85: tabletmanagerservice.TabletManager.StopReplicationAndGetStatus:output_type -> tabletmanagerdata.StopReplicationAndGetStatusResponse
|
||||
86, // 86: tabletmanagerservice.TabletManager.PromoteReplica:output_type -> tabletmanagerdata.PromoteReplicaResponse
|
||||
87, // 87: tabletmanagerservice.TabletManager.Backup:output_type -> tabletmanagerdata.BackupResponse
|
||||
88, // 88: tabletmanagerservice.TabletManager.RestoreFromBackup:output_type -> tabletmanagerdata.RestoreFromBackupResponse
|
||||
89, // 89: tabletmanagerservice.TabletManager.VExec:output_type -> tabletmanagerdata.VExecResponse
|
||||
45, // [45:90] is the sub-list for method output_type
|
||||
0, // [0:45] is the sub-list for method input_type
|
||||
38, // 38: tabletmanagerservice.TabletManager.ResetReplicationParameters:input_type -> tabletmanagerdata.ResetReplicationParametersRequest
|
||||
39, // 39: tabletmanagerservice.TabletManager.FullStatus:input_type -> tabletmanagerdata.FullStatusRequest
|
||||
40, // 40: tabletmanagerservice.TabletManager.SetReplicationSource:input_type -> tabletmanagerdata.SetReplicationSourceRequest
|
||||
41, // 41: tabletmanagerservice.TabletManager.ReplicaWasRestarted:input_type -> tabletmanagerdata.ReplicaWasRestartedRequest
|
||||
42, // 42: tabletmanagerservice.TabletManager.StopReplicationAndGetStatus:input_type -> tabletmanagerdata.StopReplicationAndGetStatusRequest
|
||||
43, // 43: tabletmanagerservice.TabletManager.PromoteReplica:input_type -> tabletmanagerdata.PromoteReplicaRequest
|
||||
44, // 44: tabletmanagerservice.TabletManager.Backup:input_type -> tabletmanagerdata.BackupRequest
|
||||
45, // 45: tabletmanagerservice.TabletManager.RestoreFromBackup:input_type -> tabletmanagerdata.RestoreFromBackupRequest
|
||||
46, // 46: tabletmanagerservice.TabletManager.VExec:input_type -> tabletmanagerdata.VExecRequest
|
||||
47, // 47: tabletmanagerservice.TabletManager.Ping:output_type -> tabletmanagerdata.PingResponse
|
||||
48, // 48: tabletmanagerservice.TabletManager.Sleep:output_type -> tabletmanagerdata.SleepResponse
|
||||
49, // 49: tabletmanagerservice.TabletManager.ExecuteHook:output_type -> tabletmanagerdata.ExecuteHookResponse
|
||||
50, // 50: tabletmanagerservice.TabletManager.GetSchema:output_type -> tabletmanagerdata.GetSchemaResponse
|
||||
51, // 51: tabletmanagerservice.TabletManager.GetPermissions:output_type -> tabletmanagerdata.GetPermissionsResponse
|
||||
52, // 52: tabletmanagerservice.TabletManager.SetReadOnly:output_type -> tabletmanagerdata.SetReadOnlyResponse
|
||||
53, // 53: tabletmanagerservice.TabletManager.SetReadWrite:output_type -> tabletmanagerdata.SetReadWriteResponse
|
||||
54, // 54: tabletmanagerservice.TabletManager.ChangeType:output_type -> tabletmanagerdata.ChangeTypeResponse
|
||||
55, // 55: tabletmanagerservice.TabletManager.RefreshState:output_type -> tabletmanagerdata.RefreshStateResponse
|
||||
56, // 56: tabletmanagerservice.TabletManager.RunHealthCheck:output_type -> tabletmanagerdata.RunHealthCheckResponse
|
||||
57, // 57: tabletmanagerservice.TabletManager.ReloadSchema:output_type -> tabletmanagerdata.ReloadSchemaResponse
|
||||
58, // 58: tabletmanagerservice.TabletManager.PreflightSchema:output_type -> tabletmanagerdata.PreflightSchemaResponse
|
||||
59, // 59: tabletmanagerservice.TabletManager.ApplySchema:output_type -> tabletmanagerdata.ApplySchemaResponse
|
||||
60, // 60: tabletmanagerservice.TabletManager.LockTables:output_type -> tabletmanagerdata.LockTablesResponse
|
||||
61, // 61: tabletmanagerservice.TabletManager.UnlockTables:output_type -> tabletmanagerdata.UnlockTablesResponse
|
||||
62, // 62: tabletmanagerservice.TabletManager.ExecuteQuery:output_type -> tabletmanagerdata.ExecuteQueryResponse
|
||||
63, // 63: tabletmanagerservice.TabletManager.ExecuteFetchAsDba:output_type -> tabletmanagerdata.ExecuteFetchAsDbaResponse
|
||||
64, // 64: tabletmanagerservice.TabletManager.ExecuteFetchAsAllPrivs:output_type -> tabletmanagerdata.ExecuteFetchAsAllPrivsResponse
|
||||
65, // 65: tabletmanagerservice.TabletManager.ExecuteFetchAsApp:output_type -> tabletmanagerdata.ExecuteFetchAsAppResponse
|
||||
66, // 66: tabletmanagerservice.TabletManager.ReplicationStatus:output_type -> tabletmanagerdata.ReplicationStatusResponse
|
||||
67, // 67: tabletmanagerservice.TabletManager.PrimaryStatus:output_type -> tabletmanagerdata.PrimaryStatusResponse
|
||||
68, // 68: tabletmanagerservice.TabletManager.PrimaryPosition:output_type -> tabletmanagerdata.PrimaryPositionResponse
|
||||
69, // 69: tabletmanagerservice.TabletManager.WaitForPosition:output_type -> tabletmanagerdata.WaitForPositionResponse
|
||||
70, // 70: tabletmanagerservice.TabletManager.StopReplication:output_type -> tabletmanagerdata.StopReplicationResponse
|
||||
71, // 71: tabletmanagerservice.TabletManager.StopReplicationMinimum:output_type -> tabletmanagerdata.StopReplicationMinimumResponse
|
||||
72, // 72: tabletmanagerservice.TabletManager.StartReplication:output_type -> tabletmanagerdata.StartReplicationResponse
|
||||
73, // 73: tabletmanagerservice.TabletManager.StartReplicationUntilAfter:output_type -> tabletmanagerdata.StartReplicationUntilAfterResponse
|
||||
74, // 74: tabletmanagerservice.TabletManager.GetReplicas:output_type -> tabletmanagerdata.GetReplicasResponse
|
||||
75, // 75: tabletmanagerservice.TabletManager.VReplicationExec:output_type -> tabletmanagerdata.VReplicationExecResponse
|
||||
76, // 76: tabletmanagerservice.TabletManager.VReplicationWaitForPos:output_type -> tabletmanagerdata.VReplicationWaitForPosResponse
|
||||
77, // 77: tabletmanagerservice.TabletManager.VDiff:output_type -> tabletmanagerdata.VDiffResponse
|
||||
78, // 78: tabletmanagerservice.TabletManager.ResetReplication:output_type -> tabletmanagerdata.ResetReplicationResponse
|
||||
79, // 79: tabletmanagerservice.TabletManager.InitPrimary:output_type -> tabletmanagerdata.InitPrimaryResponse
|
||||
80, // 80: tabletmanagerservice.TabletManager.PopulateReparentJournal:output_type -> tabletmanagerdata.PopulateReparentJournalResponse
|
||||
81, // 81: tabletmanagerservice.TabletManager.InitReplica:output_type -> tabletmanagerdata.InitReplicaResponse
|
||||
82, // 82: tabletmanagerservice.TabletManager.DemotePrimary:output_type -> tabletmanagerdata.DemotePrimaryResponse
|
||||
83, // 83: tabletmanagerservice.TabletManager.UndoDemotePrimary:output_type -> tabletmanagerdata.UndoDemotePrimaryResponse
|
||||
84, // 84: tabletmanagerservice.TabletManager.ReplicaWasPromoted:output_type -> tabletmanagerdata.ReplicaWasPromotedResponse
|
||||
85, // 85: tabletmanagerservice.TabletManager.ResetReplicationParameters:output_type -> tabletmanagerdata.ResetReplicationParametersResponse
|
||||
86, // 86: tabletmanagerservice.TabletManager.FullStatus:output_type -> tabletmanagerdata.FullStatusResponse
|
||||
87, // 87: tabletmanagerservice.TabletManager.SetReplicationSource:output_type -> tabletmanagerdata.SetReplicationSourceResponse
|
||||
88, // 88: tabletmanagerservice.TabletManager.ReplicaWasRestarted:output_type -> tabletmanagerdata.ReplicaWasRestartedResponse
|
||||
89, // 89: tabletmanagerservice.TabletManager.StopReplicationAndGetStatus:output_type -> tabletmanagerdata.StopReplicationAndGetStatusResponse
|
||||
90, // 90: tabletmanagerservice.TabletManager.PromoteReplica:output_type -> tabletmanagerdata.PromoteReplicaResponse
|
||||
91, // 91: tabletmanagerservice.TabletManager.Backup:output_type -> tabletmanagerdata.BackupResponse
|
||||
92, // 92: tabletmanagerservice.TabletManager.RestoreFromBackup:output_type -> tabletmanagerdata.RestoreFromBackupResponse
|
||||
93, // 93: tabletmanagerservice.TabletManager.VExec:output_type -> tabletmanagerdata.VExecResponse
|
||||
47, // [47:94] is the sub-list for method output_type
|
||||
0, // [0:47] is the sub-list for method input_type
|
||||
0, // [0:0] is the sub-list for extension type_name
|
||||
0, // [0:0] is the sub-list for extension extendee
|
||||
0, // [0:0] is the sub-list for field type_name
|
||||
|
|
|
@ -88,6 +88,10 @@ type TabletManagerClient interface {
|
|||
UndoDemotePrimary(ctx context.Context, in *tabletmanagerdata.UndoDemotePrimaryRequest, opts ...grpc.CallOption) (*tabletmanagerdata.UndoDemotePrimaryResponse, error)
|
||||
// ReplicaWasPromoted tells the remote tablet it is now the primary
|
||||
ReplicaWasPromoted(ctx context.Context, in *tabletmanagerdata.ReplicaWasPromotedRequest, opts ...grpc.CallOption) (*tabletmanagerdata.ReplicaWasPromotedResponse, error)
|
||||
// ResetReplicationParameters resets the replica replication parameters
|
||||
ResetReplicationParameters(ctx context.Context, in *tabletmanagerdata.ResetReplicationParametersRequest, opts ...grpc.CallOption) (*tabletmanagerdata.ResetReplicationParametersResponse, error)
|
||||
// FullStatus collects and returns the full status of MySQL including the replication information, semi-sync information, GTID information among others
|
||||
FullStatus(ctx context.Context, in *tabletmanagerdata.FullStatusRequest, opts ...grpc.CallOption) (*tabletmanagerdata.FullStatusResponse, error)
|
||||
// SetReplicationSource tells the replica to reparent
|
||||
SetReplicationSource(ctx context.Context, in *tabletmanagerdata.SetReplicationSourceRequest, opts ...grpc.CallOption) (*tabletmanagerdata.SetReplicationSourceResponse, error)
|
||||
// ReplicaWasRestarted tells the remote tablet its primary has changed
|
||||
|
@ -454,6 +458,24 @@ func (c *tabletManagerClient) ReplicaWasPromoted(ctx context.Context, in *tablet
|
|||
return out, nil
|
||||
}
|
||||
|
||||
func (c *tabletManagerClient) ResetReplicationParameters(ctx context.Context, in *tabletmanagerdata.ResetReplicationParametersRequest, opts ...grpc.CallOption) (*tabletmanagerdata.ResetReplicationParametersResponse, error) {
|
||||
out := new(tabletmanagerdata.ResetReplicationParametersResponse)
|
||||
err := c.cc.Invoke(ctx, "/tabletmanagerservice.TabletManager/ResetReplicationParameters", in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *tabletManagerClient) FullStatus(ctx context.Context, in *tabletmanagerdata.FullStatusRequest, opts ...grpc.CallOption) (*tabletmanagerdata.FullStatusResponse, error) {
|
||||
out := new(tabletmanagerdata.FullStatusResponse)
|
||||
err := c.cc.Invoke(ctx, "/tabletmanagerservice.TabletManager/FullStatus", in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *tabletManagerClient) SetReplicationSource(ctx context.Context, in *tabletmanagerdata.SetReplicationSourceRequest, opts ...grpc.CallOption) (*tabletmanagerdata.SetReplicationSourceResponse, error) {
|
||||
out := new(tabletmanagerdata.SetReplicationSourceResponse)
|
||||
err := c.cc.Invoke(ctx, "/tabletmanagerservice.TabletManager/SetReplicationSource", in, out, opts...)
|
||||
|
@ -632,6 +654,10 @@ type TabletManagerServer interface {
|
|||
UndoDemotePrimary(context.Context, *tabletmanagerdata.UndoDemotePrimaryRequest) (*tabletmanagerdata.UndoDemotePrimaryResponse, error)
|
||||
// ReplicaWasPromoted tells the remote tablet it is now the primary
|
||||
ReplicaWasPromoted(context.Context, *tabletmanagerdata.ReplicaWasPromotedRequest) (*tabletmanagerdata.ReplicaWasPromotedResponse, error)
|
||||
// ResetReplicationParameters resets the replica replication parameters
|
||||
ResetReplicationParameters(context.Context, *tabletmanagerdata.ResetReplicationParametersRequest) (*tabletmanagerdata.ResetReplicationParametersResponse, error)
|
||||
// FullStatus collects and returns the full status of MySQL including the replication information, semi-sync information, GTID information among others
|
||||
FullStatus(context.Context, *tabletmanagerdata.FullStatusRequest) (*tabletmanagerdata.FullStatusResponse, error)
|
||||
// SetReplicationSource tells the replica to reparent
|
||||
SetReplicationSource(context.Context, *tabletmanagerdata.SetReplicationSourceRequest) (*tabletmanagerdata.SetReplicationSourceResponse, error)
|
||||
// ReplicaWasRestarted tells the remote tablet its primary has changed
|
||||
|
@ -767,6 +793,12 @@ func (UnimplementedTabletManagerServer) UndoDemotePrimary(context.Context, *tabl
|
|||
func (UnimplementedTabletManagerServer) ReplicaWasPromoted(context.Context, *tabletmanagerdata.ReplicaWasPromotedRequest) (*tabletmanagerdata.ReplicaWasPromotedResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method ReplicaWasPromoted not implemented")
|
||||
}
|
||||
func (UnimplementedTabletManagerServer) ResetReplicationParameters(context.Context, *tabletmanagerdata.ResetReplicationParametersRequest) (*tabletmanagerdata.ResetReplicationParametersResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method ResetReplicationParameters not implemented")
|
||||
}
|
||||
func (UnimplementedTabletManagerServer) FullStatus(context.Context, *tabletmanagerdata.FullStatusRequest) (*tabletmanagerdata.FullStatusResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method FullStatus not implemented")
|
||||
}
|
||||
func (UnimplementedTabletManagerServer) SetReplicationSource(context.Context, *tabletmanagerdata.SetReplicationSourceRequest) (*tabletmanagerdata.SetReplicationSourceResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method SetReplicationSource not implemented")
|
||||
}
|
||||
|
@ -1485,6 +1517,42 @@ func _TabletManager_ReplicaWasPromoted_Handler(srv interface{}, ctx context.Cont
|
|||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _TabletManager_ResetReplicationParameters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(tabletmanagerdata.ResetReplicationParametersRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(TabletManagerServer).ResetReplicationParameters(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: "/tabletmanagerservice.TabletManager/ResetReplicationParameters",
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(TabletManagerServer).ResetReplicationParameters(ctx, req.(*tabletmanagerdata.ResetReplicationParametersRequest))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _TabletManager_FullStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(tabletmanagerdata.FullStatusRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(TabletManagerServer).FullStatus(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: "/tabletmanagerservice.TabletManager/FullStatus",
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(TabletManagerServer).FullStatus(ctx, req.(*tabletmanagerdata.FullStatusRequest))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _TabletManager_SetReplicationSource_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(tabletmanagerdata.SetReplicationSourceRequest)
|
||||
if err := dec(in); err != nil {
|
||||
|
@ -1776,6 +1844,14 @@ var TabletManager_ServiceDesc = grpc.ServiceDesc{
|
|||
MethodName: "ReplicaWasPromoted",
|
||||
Handler: _TabletManager_ReplicaWasPromoted_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "ResetReplicationParameters",
|
||||
Handler: _TabletManager_ResetReplicationParameters_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "FullStatus",
|
||||
Handler: _TabletManager_FullStatus_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "SetReplicationSource",
|
||||
Handler: _TabletManager_SetReplicationSource_Handler,
|
||||
|
|
|
@ -925,6 +925,10 @@ func (itmc *internalTabletManagerClient) ReplicationStatus(context.Context, *top
|
|||
return nil, fmt.Errorf("not implemented in vtcombo")
|
||||
}
|
||||
|
||||
func (itmc *internalTabletManagerClient) FullStatus(context.Context, *topodatapb.Tablet) (*replicationdatapb.FullStatus, error) {
|
||||
return nil, fmt.Errorf("not implemented in vtcombo")
|
||||
}
|
||||
|
||||
func (itmc *internalTabletManagerClient) StopReplication(context.Context, *topodatapb.Tablet) error {
|
||||
return fmt.Errorf("not implemented in vtcombo")
|
||||
}
|
||||
|
@ -953,6 +957,10 @@ func (itmc *internalTabletManagerClient) ReplicaWasPromoted(context.Context, *to
|
|||
return fmt.Errorf("not implemented in vtcombo")
|
||||
}
|
||||
|
||||
func (itmc *internalTabletManagerClient) ResetReplicationParameters(context.Context, *topodatapb.Tablet) error {
|
||||
return fmt.Errorf("not implemented in vtcombo")
|
||||
}
|
||||
|
||||
func (itmc *internalTabletManagerClient) ReplicaWasRestarted(context.Context, *topodatapb.Tablet, *topodatapb.TabletAlias) error {
|
||||
return fmt.Errorf("not implemented in vtcombo")
|
||||
}
|
||||
|
|
|
@ -336,7 +336,7 @@ func stopReplicationAndBuildStatusMaps(
|
|||
func WaitForRelayLogsToApply(ctx context.Context, tmc tmclient.TabletManagerClient, tabletInfo *topo.TabletInfo, status *replicationdatapb.StopReplicationStatus) error {
|
||||
switch status.After.RelayLogPosition {
|
||||
case "":
|
||||
return tmc.WaitForPosition(ctx, tabletInfo.Tablet, status.After.FileRelayLogPosition)
|
||||
return tmc.WaitForPosition(ctx, tabletInfo.Tablet, status.After.RelayLogSourceBinlogEquivalentPosition)
|
||||
default:
|
||||
return tmc.WaitForPosition(ctx, tabletInfo.Tablet, status.After.RelayLogPosition)
|
||||
}
|
||||
|
|
|
@ -1349,7 +1349,7 @@ func TestWaitForRelayLogsToApply(t *testing.T) {
|
|||
client: &waitForRelayLogsToApplyTestTMClient{},
|
||||
status: &replicationdatapb.StopReplicationStatus{
|
||||
After: &replicationdatapb.Status{
|
||||
FileRelayLogPosition: "file-relay-pos",
|
||||
RelayLogSourceBinlogEquivalentPosition: "file-relay-pos",
|
||||
},
|
||||
},
|
||||
expectedCalledPositions: []string{"file-relay-pos"},
|
||||
|
|
|
@ -180,6 +180,11 @@ func (client *FakeTabletManagerClient) ReplicationStatus(ctx context.Context, ta
|
|||
return &replicationdatapb.Status{}, nil
|
||||
}
|
||||
|
||||
// FullStatus is part of the tmclient.TabletManagerClient interface.
|
||||
func (client *FakeTabletManagerClient) FullStatus(ctx context.Context, tablet *topodatapb.Tablet) (*replicationdatapb.FullStatus, error) {
|
||||
return &replicationdatapb.FullStatus{}, nil
|
||||
}
|
||||
|
||||
// StopReplication is part of the tmclient.TabletManagerClient interface.
|
||||
func (client *FakeTabletManagerClient) StopReplication(ctx context.Context, tablet *topodatapb.Tablet) error {
|
||||
return nil
|
||||
|
@ -220,6 +225,11 @@ func (client *FakeTabletManagerClient) ReplicaWasPromoted(ctx context.Context, t
|
|||
return nil
|
||||
}
|
||||
|
||||
// ResetReplicationParameters is part of the tmclient.TabletManagerClient interface.
|
||||
func (client *FakeTabletManagerClient) ResetReplicationParameters(ctx context.Context, tablet *topodatapb.Tablet) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// ReplicaWasRestarted is part of the tmclient.TabletManagerClient interface.
|
||||
func (client *FakeTabletManagerClient) ReplicaWasRestarted(ctx context.Context, tablet *topodatapb.Tablet, parent *topodatapb.TabletAlias) error {
|
||||
return nil
|
||||
|
|
|
@ -532,6 +532,20 @@ func (client *Client) ReplicationStatus(ctx context.Context, tablet *topodatapb.
|
|||
return response.Status, nil
|
||||
}
|
||||
|
||||
// FullStatus is part of the tmclient.TabletManagerClient interface.
|
||||
func (client *Client) FullStatus(ctx context.Context, tablet *topodatapb.Tablet) (*replicationdatapb.FullStatus, error) {
|
||||
c, closer, err := client.dialer.dial(ctx, tablet)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer closer.Close()
|
||||
response, err := c.FullStatus(ctx, &tabletmanagerdatapb.FullStatusRequest{})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return response.Status, nil
|
||||
}
|
||||
|
||||
// PrimaryStatus is part of the tmclient.TabletManagerClient interface.
|
||||
func (client *Client) PrimaryStatus(ctx context.Context, tablet *topodatapb.Tablet) (*replicationdatapb.PrimaryStatus, error) {
|
||||
c, closer, err := client.dialer.dial(ctx, tablet)
|
||||
|
@ -807,6 +821,17 @@ func (client *Client) ReplicaWasPromoted(ctx context.Context, tablet *topodatapb
|
|||
return err
|
||||
}
|
||||
|
||||
// ResetReplicationParameters is part of the tmclient.TabletManagerClient interface.
|
||||
func (client *Client) ResetReplicationParameters(ctx context.Context, tablet *topodatapb.Tablet) error {
|
||||
c, closer, err := client.dialer.dial(ctx, tablet)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer closer.Close()
|
||||
_, err = c.ResetReplicationParameters(ctx, &tabletmanagerdatapb.ResetReplicationParametersRequest{})
|
||||
return err
|
||||
}
|
||||
|
||||
// SetReplicationSource is part of the tmclient.TabletManagerClient interface.
|
||||
func (client *Client) SetReplicationSource(ctx context.Context, tablet *topodatapb.Tablet, parent *topodatapb.TabletAlias, timeCreatedNS int64, waitPosition string, forceStartReplication bool, semiSync bool) error {
|
||||
c, closer, err := client.dialer.dial(ctx, tablet)
|
||||
|
|
|
@ -261,6 +261,17 @@ func (s *server) ReplicationStatus(ctx context.Context, request *tabletmanagerda
|
|||
return response, err
|
||||
}
|
||||
|
||||
func (s *server) FullStatus(ctx context.Context, request *tabletmanagerdatapb.FullStatusRequest) (response *tabletmanagerdatapb.FullStatusResponse, err error) {
|
||||
defer s.tm.HandleRPCPanic(ctx, "FullStatus", request, response, false /*verbose*/, &err)
|
||||
ctx = callinfo.GRPCCallInfo(ctx)
|
||||
response = &tabletmanagerdatapb.FullStatusResponse{}
|
||||
status, err := s.tm.FullStatus(ctx)
|
||||
if err == nil {
|
||||
response.Status = status
|
||||
}
|
||||
return response, err
|
||||
}
|
||||
|
||||
func (s *server) PrimaryStatus(ctx context.Context, request *tabletmanagerdatapb.PrimaryStatusRequest) (response *tabletmanagerdatapb.PrimaryStatusResponse, err error) {
|
||||
defer s.tm.HandleRPCPanic(ctx, "PrimaryStatus", request, response, false /*verbose*/, &err)
|
||||
ctx = callinfo.GRPCCallInfo(ctx)
|
||||
|
@ -426,6 +437,13 @@ func (s *server) ReplicaWasPromoted(ctx context.Context, request *tabletmanagerd
|
|||
return response, s.tm.ReplicaWasPromoted(ctx)
|
||||
}
|
||||
|
||||
func (s *server) ResetReplicationParameters(ctx context.Context, request *tabletmanagerdatapb.ResetReplicationParametersRequest) (response *tabletmanagerdatapb.ResetReplicationParametersResponse, err error) {
|
||||
defer s.tm.HandleRPCPanic(ctx, "ResetReplicationParameters", request, response, true /*verbose*/, &err)
|
||||
ctx = callinfo.GRPCCallInfo(ctx)
|
||||
response = &tabletmanagerdatapb.ResetReplicationParametersResponse{}
|
||||
return response, s.tm.ResetReplicationParameters(ctx)
|
||||
}
|
||||
|
||||
func (s *server) SetReplicationSource(ctx context.Context, request *tabletmanagerdatapb.SetReplicationSourceRequest) (response *tabletmanagerdatapb.SetReplicationSourceResponse, err error) {
|
||||
defer s.tm.HandleRPCPanic(ctx, "SetReplicationSource", request, response, true /*verbose*/, &err)
|
||||
ctx = callinfo.GRPCCallInfo(ctx)
|
||||
|
|
|
@ -81,6 +81,8 @@ type RPCTM interface {
|
|||
|
||||
ReplicationStatus(ctx context.Context) (*replicationdatapb.Status, error)
|
||||
|
||||
FullStatus(ctx context.Context) (*replicationdatapb.FullStatus, error)
|
||||
|
||||
StopReplication(ctx context.Context) error
|
||||
|
||||
StopReplicationMinimum(ctx context.Context, position string, waitTime time.Duration) (string, error)
|
||||
|
@ -121,6 +123,8 @@ type RPCTM interface {
|
|||
|
||||
ReplicaWasPromoted(ctx context.Context) error
|
||||
|
||||
ResetReplicationParameters(ctx context.Context) error
|
||||
|
||||
SetReplicationSource(ctx context.Context, parent *topodatapb.TabletAlias, timeCreatedNS int64, waitPosition string, forceStartReplication bool, semiSync bool) error
|
||||
|
||||
StopReplicationAndGetStatus(ctx context.Context, stopReplicationMode replicationdatapb.StopReplicationMode) (StopReplicationAndGetStatusResponse, error)
|
||||
|
|
|
@ -52,6 +52,106 @@ func (tm *TabletManager) ReplicationStatus(ctx context.Context) (*replicationdat
|
|||
return mysql.ReplicationStatusToProto(status), nil
|
||||
}
|
||||
|
||||
// FullStatus returns the full status of MySQL including the replication information, semi-sync information, GTID information among others
|
||||
func (tm *TabletManager) FullStatus(ctx context.Context) (*replicationdatapb.FullStatus, error) {
|
||||
// Server ID - "select @@global.server_id"
|
||||
serverID, err := tm.MysqlDaemon.GetServerID(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Server UUID - "select @@global.server_uuid"
|
||||
serverUUID, err := tm.MysqlDaemon.GetServerUUID(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Replication status - "SHOW REPLICA STATUS"
|
||||
replicationStatus, err := tm.MysqlDaemon.ReplicationStatus()
|
||||
var replicationStatusProto *replicationdatapb.Status
|
||||
if err != nil && err != mysql.ErrNotReplica {
|
||||
return nil, err
|
||||
}
|
||||
if err == nil {
|
||||
replicationStatusProto = mysql.ReplicationStatusToProto(replicationStatus)
|
||||
}
|
||||
|
||||
// Primary status - "SHOW MASTER STATUS"
|
||||
primaryStatus, err := tm.MysqlDaemon.PrimaryStatus(ctx)
|
||||
var primaryStatusProto *replicationdatapb.PrimaryStatus
|
||||
if err != nil && err != mysql.ErrNoPrimaryStatus {
|
||||
return nil, err
|
||||
}
|
||||
if err == nil {
|
||||
primaryStatusProto = mysql.PrimaryStatusToProto(primaryStatus)
|
||||
}
|
||||
|
||||
// Purged GTID set
|
||||
purgedGTIDs, err := tm.MysqlDaemon.GetGTIDPurged(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Version string "majorVersion.minorVersion.patchRelease"
|
||||
version := tm.MysqlDaemon.GetVersionString()
|
||||
|
||||
// Version comment "select @@global.version_comment"
|
||||
versionComment := tm.MysqlDaemon.GetVersionComment(ctx)
|
||||
|
||||
// Read only - "SHOW VARIABLES LIKE 'read_only'"
|
||||
readOnly, err := tm.MysqlDaemon.IsReadOnly()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Binlog Information - "select @@global.binlog_format, @@global.log_bin, @@global.log_slave_updates, @@global.binlog_row_image"
|
||||
binlogFormat, logBin, logReplicaUpdates, binlogRowImage, err := tm.MysqlDaemon.GetBinlogInformation(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// GTID Mode - "select @@global.gtid_mode" - Only applicable for MySQL variants
|
||||
gtidMode, err := tm.MysqlDaemon.GetGTIDMode(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Semi sync settings - "show global variables like 'rpl_semi_sync_%_enabled'"
|
||||
primarySemiSync, replicaSemiSync := tm.MysqlDaemon.SemiSyncEnabled()
|
||||
|
||||
// Semi sync status - "show status like 'Rpl_semi_sync_%_status'"
|
||||
primarySemiSyncStatus, replicaSemiSyncStatus := tm.MysqlDaemon.SemiSyncStatus()
|
||||
|
||||
// Semi sync clients count - "show status like 'semi_sync_primary_clients'"
|
||||
semiSyncClients := tm.MysqlDaemon.SemiSyncClients()
|
||||
|
||||
// Semi sync settings - "show status like 'rpl_semi_sync_%'
|
||||
semiSyncTimeout, semiSyncNumReplicas := tm.MysqlDaemon.SemiSyncSettings()
|
||||
|
||||
return &replicationdatapb.FullStatus{
|
||||
ServerId: serverID,
|
||||
ServerUuid: serverUUID,
|
||||
ReplicationStatus: replicationStatusProto,
|
||||
PrimaryStatus: primaryStatusProto,
|
||||
GtidPurged: mysql.EncodePosition(purgedGTIDs),
|
||||
Version: version,
|
||||
VersionComment: versionComment,
|
||||
ReadOnly: readOnly,
|
||||
GtidMode: gtidMode,
|
||||
BinlogFormat: binlogFormat,
|
||||
BinlogRowImage: binlogRowImage,
|
||||
LogBinEnabled: logBin,
|
||||
LogReplicaUpdates: logReplicaUpdates,
|
||||
SemiSyncPrimaryEnabled: primarySemiSync,
|
||||
SemiSyncReplicaEnabled: replicaSemiSync,
|
||||
SemiSyncPrimaryStatus: primarySemiSyncStatus,
|
||||
SemiSyncReplicaStatus: replicaSemiSyncStatus,
|
||||
SemiSyncPrimaryClients: semiSyncClients,
|
||||
SemiSyncPrimaryTimeout: semiSyncTimeout,
|
||||
SemiSyncWaitForReplicaCount: semiSyncNumReplicas,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// PrimaryStatus returns the replication status for a primary tablet.
|
||||
func (tm *TabletManager) PrimaryStatus(ctx context.Context) (*replicationdatapb.PrimaryStatus, error) {
|
||||
status, err := tm.MysqlDaemon.PrimaryStatus(ctx)
|
||||
|
@ -529,6 +629,27 @@ func (tm *TabletManager) ReplicaWasPromoted(ctx context.Context) error {
|
|||
return tm.changeTypeLocked(ctx, topodatapb.TabletType_PRIMARY, DBActionNone, SemiSyncActionNone)
|
||||
}
|
||||
|
||||
// ResetReplicationParameters resets the replica replication parameters
|
||||
func (tm *TabletManager) ResetReplicationParameters(ctx context.Context) error {
|
||||
log.Infof("ResetReplicationParameters")
|
||||
if err := tm.lock(ctx); err != nil {
|
||||
return err
|
||||
}
|
||||
defer tm.unlock()
|
||||
|
||||
tm.replManager.setReplicationStopped(true)
|
||||
err := tm.MysqlDaemon.StopReplication(tm.hookExtraEnv())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = tm.MysqlDaemon.ResetReplicationParameters(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// SetReplicationSource sets replication primary, and waits for the
|
||||
// reparent_journal table entry up to context timeout
|
||||
func (tm *TabletManager) SetReplicationSource(ctx context.Context, parentAlias *topodatapb.TabletAlias, timeCreatedNS int64, waitPosition string, forceStartReplication bool, semiSync bool) error {
|
||||
|
@ -776,7 +897,7 @@ func (tm *TabletManager) StopReplicationAndGetStatus(ctx context.Context, stopRe
|
|||
rs.Position = rsAfter.Position
|
||||
rs.RelayLogPosition = rsAfter.RelayLogPosition
|
||||
rs.FilePosition = rsAfter.FilePosition
|
||||
rs.FileRelayLogPosition = rsAfter.FileRelayLogPosition
|
||||
rs.RelayLogSourceBinlogEquivalentPosition = rsAfter.RelayLogSourceBinlogEquivalentPosition
|
||||
|
||||
return StopReplicationAndGetStatusResponse{
|
||||
HybridStatus: mysql.ReplicationStatusToProto(rs),
|
||||
|
|
|
@ -115,6 +115,9 @@ type TabletManagerClient interface {
|
|||
// ReplicationStatus returns the tablet's mysql replication status.
|
||||
ReplicationStatus(ctx context.Context, tablet *topodatapb.Tablet) (*replicationdatapb.Status, error)
|
||||
|
||||
// FullStatus returns the tablet's mysql replication status.
|
||||
FullStatus(ctx context.Context, tablet *topodatapb.Tablet) (*replicationdatapb.FullStatus, error)
|
||||
|
||||
// StopReplication stops the mysql replication
|
||||
StopReplication(ctx context.Context, tablet *topodatapb.Tablet) error
|
||||
|
||||
|
@ -180,6 +183,9 @@ type TabletManagerClient interface {
|
|||
// ReplicaWasPromoted tells the remote tablet it is now the primary
|
||||
ReplicaWasPromoted(ctx context.Context, tablet *topodatapb.Tablet) error
|
||||
|
||||
// ResetReplicationParameters resets the replica replication parameters
|
||||
ResetReplicationParameters(ctx context.Context, tablet *topodatapb.Tablet) error
|
||||
|
||||
// SetReplicationSource tells a tablet to start replicating from the
|
||||
// passed in tablet alias, and wait for the row in the
|
||||
// reparent_journal table (if timeCreatedNS is non-zero).
|
||||
|
|
|
@ -699,6 +699,10 @@ var testReplicationStatus = &replicationdatapb.Status{
|
|||
ConnectRetry: 12,
|
||||
}
|
||||
|
||||
var testFullStatus = &replicationdatapb.FullStatus{
|
||||
ReplicationStatus: testReplicationStatus,
|
||||
}
|
||||
|
||||
var testPrimaryStatus = &replicationdatapb.PrimaryStatus{Position: "MariaDB/1-345-789"}
|
||||
|
||||
func (fra *fakeRPCTM) PrimaryStatus(ctx context.Context) (*replicationdatapb.PrimaryStatus, error) {
|
||||
|
@ -725,6 +729,23 @@ func tmRPCTestReplicationStatusPanic(ctx context.Context, t *testing.T, client t
|
|||
expectHandleRPCPanic(t, "ReplicationStatus", false /*verbose*/, err)
|
||||
}
|
||||
|
||||
func (fra *fakeRPCTM) FullStatus(ctx context.Context) (*replicationdatapb.FullStatus, error) {
|
||||
if fra.panics {
|
||||
panic(fmt.Errorf("test-triggered panic"))
|
||||
}
|
||||
return testFullStatus, nil
|
||||
}
|
||||
|
||||
func tmRPCTestFullStatus(ctx context.Context, t *testing.T, client tmclient.TabletManagerClient, tablet *topodatapb.Tablet) {
|
||||
rs, err := client.FullStatus(ctx, tablet)
|
||||
compareError(t, "FullStatus", err, rs, testFullStatus)
|
||||
}
|
||||
|
||||
func tmRPCTestFullStatusPanic(ctx context.Context, t *testing.T, client tmclient.TabletManagerClient, tablet *topodatapb.Tablet) {
|
||||
_, err := client.FullStatus(ctx, tablet)
|
||||
expectHandleRPCPanic(t, "FullStatus", false /*verbose*/, err)
|
||||
}
|
||||
|
||||
var testReplicationPosition = "MariaDB/5-456-890"
|
||||
|
||||
func (fra *fakeRPCTM) PrimaryPosition(ctx context.Context) (string, error) {
|
||||
|
@ -1049,6 +1070,26 @@ func tmRPCTestReplicaWasPromotedPanic(ctx context.Context, t *testing.T, client
|
|||
expectHandleRPCPanic(t, "ReplicaWasPromoted", true /*verbose*/, err)
|
||||
}
|
||||
|
||||
var testResetReplicationParametersCalled = false
|
||||
|
||||
func (fra *fakeRPCTM) ResetReplicationParameters(ctx context.Context) error {
|
||||
if fra.panics {
|
||||
panic(fmt.Errorf("test-triggered panic"))
|
||||
}
|
||||
testResetReplicationParametersCalled = true
|
||||
return nil
|
||||
}
|
||||
|
||||
func tmRPCTestResetReplicationParameters(ctx context.Context, t *testing.T, client tmclient.TabletManagerClient, tablet *topodatapb.Tablet) {
|
||||
err := client.ResetReplicationParameters(ctx, tablet)
|
||||
compareError(t, "ResetReplicationParameters", err, true, testResetReplicationParametersCalled)
|
||||
}
|
||||
|
||||
func tmRPCTestResetReplicationParametersPanic(ctx context.Context, t *testing.T, client tmclient.TabletManagerClient, tablet *topodatapb.Tablet) {
|
||||
err := client.ResetReplicationParameters(ctx, tablet)
|
||||
expectHandleRPCPanic(t, "ResetReplicationParameters", true /*verbose*/, err)
|
||||
}
|
||||
|
||||
var testSetReplicationSourceCalled = false
|
||||
var testForceStartReplica = true
|
||||
|
||||
|
@ -1260,6 +1301,7 @@ func Run(t *testing.T, client tmclient.TabletManagerClient, tablet *topodatapb.T
|
|||
tmRPCTestPrimaryPosition(ctx, t, client, tablet)
|
||||
|
||||
tmRPCTestReplicationStatus(ctx, t, client, tablet)
|
||||
tmRPCTestFullStatus(ctx, t, client, tablet)
|
||||
tmRPCTestPrimaryPosition(ctx, t, client, tablet)
|
||||
tmRPCTestStopReplication(ctx, t, client, tablet)
|
||||
tmRPCTestStopReplicationMinimum(ctx, t, client, tablet)
|
||||
|
@ -1284,6 +1326,7 @@ func Run(t *testing.T, client tmclient.TabletManagerClient, tablet *topodatapb.T
|
|||
tmRPCTestInitReplica(ctx, t, client, tablet)
|
||||
tmRPCTestReplicaWasPromoted(ctx, t, client, tablet)
|
||||
tmRPCTestReplicaWasRestarted(ctx, t, client, tablet)
|
||||
tmRPCTestResetReplicationParameters(ctx, t, client, tablet)
|
||||
|
||||
// Backup / restore related methods
|
||||
tmRPCTestBackup(ctx, t, client, tablet)
|
||||
|
@ -1314,6 +1357,7 @@ func Run(t *testing.T, client tmclient.TabletManagerClient, tablet *topodatapb.T
|
|||
// Replication related methods
|
||||
tmRPCTestPrimaryPositionPanic(ctx, t, client, tablet)
|
||||
tmRPCTestReplicationStatusPanic(ctx, t, client, tablet)
|
||||
tmRPCTestFullStatusPanic(ctx, t, client, tablet)
|
||||
tmRPCTestStopReplicationPanic(ctx, t, client, tablet)
|
||||
tmRPCTestStopReplicationMinimumPanic(ctx, t, client, tablet)
|
||||
tmRPCTestStartReplicationPanic(ctx, t, client, tablet)
|
||||
|
@ -1334,6 +1378,7 @@ func Run(t *testing.T, client tmclient.TabletManagerClient, tablet *topodatapb.T
|
|||
|
||||
tmRPCTestInitReplicaPanic(ctx, t, client, tablet)
|
||||
tmRPCTestReplicaWasPromotedPanic(ctx, t, client, tablet)
|
||||
tmRPCTestResetReplicationParametersPanic(ctx, t, client, tablet)
|
||||
tmRPCTestReplicaWasRestartedPanic(ctx, t, client, tablet)
|
||||
// Backup / restore related methods
|
||||
tmRPCTestBackupPanic(ctx, t, client, tablet)
|
||||
|
|
|
@ -37,13 +37,21 @@ message Status {
|
|||
// RelayLogPosition will be empty for flavors that do not support returning the full GTIDSet from the relay log, such as MariaDB.
|
||||
string relay_log_position = 8;
|
||||
string file_position = 9;
|
||||
string file_relay_log_position = 10;
|
||||
string relay_log_source_binlog_equivalent_position = 10;
|
||||
uint32 source_server_id = 11;
|
||||
string source_uuid = 12;
|
||||
int32 io_state = 13;
|
||||
string last_io_error = 14;
|
||||
int32 sql_state = 15;
|
||||
string last_sql_error = 16;
|
||||
string relay_log_file_position = 17;
|
||||
string source_user = 18;
|
||||
uint32 sql_delay = 19;
|
||||
bool auto_position = 20;
|
||||
bool using_gtid = 21;
|
||||
bool has_replication_filters = 22;
|
||||
bool ssl_allowed = 23;
|
||||
bool replication_lag_unknown = 24;
|
||||
}
|
||||
|
||||
// StopReplicationStatus represents the replication status before calling StopReplication, and the replication status collected immediately after
|
||||
|
@ -64,3 +72,27 @@ message PrimaryStatus {
|
|||
string position = 1;
|
||||
string file_position = 2;
|
||||
}
|
||||
|
||||
// FullStatus contains the full status of MySQL including the replication information, semi-sync information, GTID information among others
|
||||
message FullStatus {
|
||||
uint32 server_id = 1;
|
||||
string server_uuid = 2;
|
||||
replicationdata.Status replication_status = 3;
|
||||
replicationdata.PrimaryStatus primary_status = 4;
|
||||
string gtid_purged = 5;
|
||||
string version = 6;
|
||||
string version_comment = 7;
|
||||
bool read_only = 8;
|
||||
string gtid_mode = 9;
|
||||
string binlog_format = 10;
|
||||
string binlog_row_image = 11;
|
||||
bool log_bin_enabled = 12;
|
||||
bool log_replica_updates = 13;
|
||||
bool semi_sync_primary_enabled = 14;
|
||||
bool semi_sync_replica_enabled = 15;
|
||||
bool semi_sync_primary_status = 16;
|
||||
bool semi_sync_replica_status = 17;
|
||||
uint32 semi_sync_primary_clients = 18;
|
||||
uint64 semi_sync_primary_timeout = 19;
|
||||
uint32 semi_sync_wait_for_replica_count = 20;
|
||||
}
|
|
@ -410,6 +410,19 @@ message ReplicaWasPromotedRequest {
|
|||
message ReplicaWasPromotedResponse {
|
||||
}
|
||||
|
||||
message ResetReplicationParametersRequest {
|
||||
}
|
||||
|
||||
message ResetReplicationParametersResponse {
|
||||
}
|
||||
|
||||
message FullStatusRequest {
|
||||
}
|
||||
|
||||
message FullStatusResponse {
|
||||
replicationdata.FullStatus status = 1;
|
||||
}
|
||||
|
||||
message SetReplicationSourceRequest {
|
||||
topodata.TabletAlias parent = 1;
|
||||
int64 time_created_ns = 2;
|
||||
|
|
|
@ -144,6 +144,12 @@ service TabletManager {
|
|||
// ReplicaWasPromoted tells the remote tablet it is now the primary
|
||||
rpc ReplicaWasPromoted(tabletmanagerdata.ReplicaWasPromotedRequest) returns (tabletmanagerdata.ReplicaWasPromotedResponse) {};
|
||||
|
||||
// ResetReplicationParameters resets the replica replication parameters
|
||||
rpc ResetReplicationParameters(tabletmanagerdata.ResetReplicationParametersRequest) returns (tabletmanagerdata.ResetReplicationParametersResponse) {};
|
||||
|
||||
// FullStatus collects and returns the full status of MySQL including the replication information, semi-sync information, GTID information among others
|
||||
rpc FullStatus(tabletmanagerdata.FullStatusRequest) returns (tabletmanagerdata.FullStatusResponse) {};
|
||||
|
||||
// SetReplicationSource tells the replica to reparent
|
||||
rpc SetReplicationSource(tabletmanagerdata.SetReplicationSourceRequest) returns (tabletmanagerdata.SetReplicationSourceResponse) {};
|
||||
|
||||
|
|
|
@ -20627,6 +20627,348 @@ export namespace tabletmanagerdata {
|
|||
public toJSON(): { [k: string]: any };
|
||||
}
|
||||
|
||||
/** Properties of a ResetReplicationParametersRequest. */
|
||||
interface IResetReplicationParametersRequest {
|
||||
}
|
||||
|
||||
/** Represents a ResetReplicationParametersRequest. */
|
||||
class ResetReplicationParametersRequest implements IResetReplicationParametersRequest {
|
||||
|
||||
/**
|
||||
* Constructs a new ResetReplicationParametersRequest.
|
||||
* @param [properties] Properties to set
|
||||
*/
|
||||
constructor(properties?: tabletmanagerdata.IResetReplicationParametersRequest);
|
||||
|
||||
/**
|
||||
* Creates a new ResetReplicationParametersRequest instance using the specified properties.
|
||||
* @param [properties] Properties to set
|
||||
* @returns ResetReplicationParametersRequest instance
|
||||
*/
|
||||
public static create(properties?: tabletmanagerdata.IResetReplicationParametersRequest): tabletmanagerdata.ResetReplicationParametersRequest;
|
||||
|
||||
/**
|
||||
* Encodes the specified ResetReplicationParametersRequest message. Does not implicitly {@link tabletmanagerdata.ResetReplicationParametersRequest.verify|verify} messages.
|
||||
* @param message ResetReplicationParametersRequest message or plain object to encode
|
||||
* @param [writer] Writer to encode to
|
||||
* @returns Writer
|
||||
*/
|
||||
public static encode(message: tabletmanagerdata.IResetReplicationParametersRequest, writer?: $protobuf.Writer): $protobuf.Writer;
|
||||
|
||||
/**
|
||||
* Encodes the specified ResetReplicationParametersRequest message, length delimited. Does not implicitly {@link tabletmanagerdata.ResetReplicationParametersRequest.verify|verify} messages.
|
||||
* @param message ResetReplicationParametersRequest message or plain object to encode
|
||||
* @param [writer] Writer to encode to
|
||||
* @returns Writer
|
||||
*/
|
||||
public static encodeDelimited(message: tabletmanagerdata.IResetReplicationParametersRequest, writer?: $protobuf.Writer): $protobuf.Writer;
|
||||
|
||||
/**
|
||||
* Decodes a ResetReplicationParametersRequest message from the specified reader or buffer.
|
||||
* @param reader Reader or buffer to decode from
|
||||
* @param [length] Message length if known beforehand
|
||||
* @returns ResetReplicationParametersRequest
|
||||
* @throws {Error} If the payload is not a reader or valid buffer
|
||||
* @throws {$protobuf.util.ProtocolError} If required fields are missing
|
||||
*/
|
||||
public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): tabletmanagerdata.ResetReplicationParametersRequest;
|
||||
|
||||
/**
|
||||
* Decodes a ResetReplicationParametersRequest message from the specified reader or buffer, length delimited.
|
||||
* @param reader Reader or buffer to decode from
|
||||
* @returns ResetReplicationParametersRequest
|
||||
* @throws {Error} If the payload is not a reader or valid buffer
|
||||
* @throws {$protobuf.util.ProtocolError} If required fields are missing
|
||||
*/
|
||||
public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): tabletmanagerdata.ResetReplicationParametersRequest;
|
||||
|
||||
/**
|
||||
* Verifies a ResetReplicationParametersRequest message.
|
||||
* @param message Plain object to verify
|
||||
* @returns `null` if valid, otherwise the reason why it is not
|
||||
*/
|
||||
public static verify(message: { [k: string]: any }): (string|null);
|
||||
|
||||
/**
|
||||
* Creates a ResetReplicationParametersRequest message from a plain object. Also converts values to their respective internal types.
|
||||
* @param object Plain object
|
||||
* @returns ResetReplicationParametersRequest
|
||||
*/
|
||||
public static fromObject(object: { [k: string]: any }): tabletmanagerdata.ResetReplicationParametersRequest;
|
||||
|
||||
/**
|
||||
* Creates a plain object from a ResetReplicationParametersRequest message. Also converts values to other types if specified.
|
||||
* @param message ResetReplicationParametersRequest
|
||||
* @param [options] Conversion options
|
||||
* @returns Plain object
|
||||
*/
|
||||
public static toObject(message: tabletmanagerdata.ResetReplicationParametersRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };
|
||||
|
||||
/**
|
||||
* Converts this ResetReplicationParametersRequest to JSON.
|
||||
* @returns JSON object
|
||||
*/
|
||||
public toJSON(): { [k: string]: any };
|
||||
}
|
||||
|
||||
/** Properties of a ResetReplicationParametersResponse. */
|
||||
interface IResetReplicationParametersResponse {
|
||||
}
|
||||
|
||||
/** Represents a ResetReplicationParametersResponse. */
|
||||
class ResetReplicationParametersResponse implements IResetReplicationParametersResponse {
|
||||
|
||||
/**
|
||||
* Constructs a new ResetReplicationParametersResponse.
|
||||
* @param [properties] Properties to set
|
||||
*/
|
||||
constructor(properties?: tabletmanagerdata.IResetReplicationParametersResponse);
|
||||
|
||||
/**
|
||||
* Creates a new ResetReplicationParametersResponse instance using the specified properties.
|
||||
* @param [properties] Properties to set
|
||||
* @returns ResetReplicationParametersResponse instance
|
||||
*/
|
||||
public static create(properties?: tabletmanagerdata.IResetReplicationParametersResponse): tabletmanagerdata.ResetReplicationParametersResponse;
|
||||
|
||||
/**
|
||||
* Encodes the specified ResetReplicationParametersResponse message. Does not implicitly {@link tabletmanagerdata.ResetReplicationParametersResponse.verify|verify} messages.
|
||||
* @param message ResetReplicationParametersResponse message or plain object to encode
|
||||
* @param [writer] Writer to encode to
|
||||
* @returns Writer
|
||||
*/
|
||||
public static encode(message: tabletmanagerdata.IResetReplicationParametersResponse, writer?: $protobuf.Writer): $protobuf.Writer;
|
||||
|
||||
/**
|
||||
* Encodes the specified ResetReplicationParametersResponse message, length delimited. Does not implicitly {@link tabletmanagerdata.ResetReplicationParametersResponse.verify|verify} messages.
|
||||
* @param message ResetReplicationParametersResponse message or plain object to encode
|
||||
* @param [writer] Writer to encode to
|
||||
* @returns Writer
|
||||
*/
|
||||
public static encodeDelimited(message: tabletmanagerdata.IResetReplicationParametersResponse, writer?: $protobuf.Writer): $protobuf.Writer;
|
||||
|
||||
/**
|
||||
* Decodes a ResetReplicationParametersResponse message from the specified reader or buffer.
|
||||
* @param reader Reader or buffer to decode from
|
||||
* @param [length] Message length if known beforehand
|
||||
* @returns ResetReplicationParametersResponse
|
||||
* @throws {Error} If the payload is not a reader or valid buffer
|
||||
* @throws {$protobuf.util.ProtocolError} If required fields are missing
|
||||
*/
|
||||
public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): tabletmanagerdata.ResetReplicationParametersResponse;
|
||||
|
||||
/**
|
||||
* Decodes a ResetReplicationParametersResponse message from the specified reader or buffer, length delimited.
|
||||
* @param reader Reader or buffer to decode from
|
||||
* @returns ResetReplicationParametersResponse
|
||||
* @throws {Error} If the payload is not a reader or valid buffer
|
||||
* @throws {$protobuf.util.ProtocolError} If required fields are missing
|
||||
*/
|
||||
public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): tabletmanagerdata.ResetReplicationParametersResponse;
|
||||
|
||||
/**
|
||||
* Verifies a ResetReplicationParametersResponse message.
|
||||
* @param message Plain object to verify
|
||||
* @returns `null` if valid, otherwise the reason why it is not
|
||||
*/
|
||||
public static verify(message: { [k: string]: any }): (string|null);
|
||||
|
||||
/**
|
||||
* Creates a ResetReplicationParametersResponse message from a plain object. Also converts values to their respective internal types.
|
||||
* @param object Plain object
|
||||
* @returns ResetReplicationParametersResponse
|
||||
*/
|
||||
public static fromObject(object: { [k: string]: any }): tabletmanagerdata.ResetReplicationParametersResponse;
|
||||
|
||||
/**
|
||||
* Creates a plain object from a ResetReplicationParametersResponse message. Also converts values to other types if specified.
|
||||
* @param message ResetReplicationParametersResponse
|
||||
* @param [options] Conversion options
|
||||
* @returns Plain object
|
||||
*/
|
||||
public static toObject(message: tabletmanagerdata.ResetReplicationParametersResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };
|
||||
|
||||
/**
|
||||
* Converts this ResetReplicationParametersResponse to JSON.
|
||||
* @returns JSON object
|
||||
*/
|
||||
public toJSON(): { [k: string]: any };
|
||||
}
|
||||
|
||||
/** Properties of a FullStatusRequest. */
|
||||
interface IFullStatusRequest {
|
||||
}
|
||||
|
||||
/** Represents a FullStatusRequest. */
|
||||
class FullStatusRequest implements IFullStatusRequest {
|
||||
|
||||
/**
|
||||
* Constructs a new FullStatusRequest.
|
||||
* @param [properties] Properties to set
|
||||
*/
|
||||
constructor(properties?: tabletmanagerdata.IFullStatusRequest);
|
||||
|
||||
/**
|
||||
* Creates a new FullStatusRequest instance using the specified properties.
|
||||
* @param [properties] Properties to set
|
||||
* @returns FullStatusRequest instance
|
||||
*/
|
||||
public static create(properties?: tabletmanagerdata.IFullStatusRequest): tabletmanagerdata.FullStatusRequest;
|
||||
|
||||
/**
|
||||
* Encodes the specified FullStatusRequest message. Does not implicitly {@link tabletmanagerdata.FullStatusRequest.verify|verify} messages.
|
||||
* @param message FullStatusRequest message or plain object to encode
|
||||
* @param [writer] Writer to encode to
|
||||
* @returns Writer
|
||||
*/
|
||||
public static encode(message: tabletmanagerdata.IFullStatusRequest, writer?: $protobuf.Writer): $protobuf.Writer;
|
||||
|
||||
/**
|
||||
* Encodes the specified FullStatusRequest message, length delimited. Does not implicitly {@link tabletmanagerdata.FullStatusRequest.verify|verify} messages.
|
||||
* @param message FullStatusRequest message or plain object to encode
|
||||
* @param [writer] Writer to encode to
|
||||
* @returns Writer
|
||||
*/
|
||||
public static encodeDelimited(message: tabletmanagerdata.IFullStatusRequest, writer?: $protobuf.Writer): $protobuf.Writer;
|
||||
|
||||
/**
|
||||
* Decodes a FullStatusRequest message from the specified reader or buffer.
|
||||
* @param reader Reader or buffer to decode from
|
||||
* @param [length] Message length if known beforehand
|
||||
* @returns FullStatusRequest
|
||||
* @throws {Error} If the payload is not a reader or valid buffer
|
||||
* @throws {$protobuf.util.ProtocolError} If required fields are missing
|
||||
*/
|
||||
public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): tabletmanagerdata.FullStatusRequest;
|
||||
|
||||
/**
|
||||
* Decodes a FullStatusRequest message from the specified reader or buffer, length delimited.
|
||||
* @param reader Reader or buffer to decode from
|
||||
* @returns FullStatusRequest
|
||||
* @throws {Error} If the payload is not a reader or valid buffer
|
||||
* @throws {$protobuf.util.ProtocolError} If required fields are missing
|
||||
*/
|
||||
public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): tabletmanagerdata.FullStatusRequest;
|
||||
|
||||
/**
|
||||
* Verifies a FullStatusRequest message.
|
||||
* @param message Plain object to verify
|
||||
* @returns `null` if valid, otherwise the reason why it is not
|
||||
*/
|
||||
public static verify(message: { [k: string]: any }): (string|null);
|
||||
|
||||
/**
|
||||
* Creates a FullStatusRequest message from a plain object. Also converts values to their respective internal types.
|
||||
* @param object Plain object
|
||||
* @returns FullStatusRequest
|
||||
*/
|
||||
public static fromObject(object: { [k: string]: any }): tabletmanagerdata.FullStatusRequest;
|
||||
|
||||
/**
|
||||
* Creates a plain object from a FullStatusRequest message. Also converts values to other types if specified.
|
||||
* @param message FullStatusRequest
|
||||
* @param [options] Conversion options
|
||||
* @returns Plain object
|
||||
*/
|
||||
public static toObject(message: tabletmanagerdata.FullStatusRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };
|
||||
|
||||
/**
|
||||
* Converts this FullStatusRequest to JSON.
|
||||
* @returns JSON object
|
||||
*/
|
||||
public toJSON(): { [k: string]: any };
|
||||
}
|
||||
|
||||
/** Properties of a FullStatusResponse. */
|
||||
interface IFullStatusResponse {
|
||||
|
||||
/** FullStatusResponse status */
|
||||
status?: (replicationdata.IFullStatus|null);
|
||||
}
|
||||
|
||||
/** Represents a FullStatusResponse. */
|
||||
class FullStatusResponse implements IFullStatusResponse {
|
||||
|
||||
/**
|
||||
* Constructs a new FullStatusResponse.
|
||||
* @param [properties] Properties to set
|
||||
*/
|
||||
constructor(properties?: tabletmanagerdata.IFullStatusResponse);
|
||||
|
||||
/** FullStatusResponse status. */
|
||||
public status?: (replicationdata.IFullStatus|null);
|
||||
|
||||
/**
|
||||
* Creates a new FullStatusResponse instance using the specified properties.
|
||||
* @param [properties] Properties to set
|
||||
* @returns FullStatusResponse instance
|
||||
*/
|
||||
public static create(properties?: tabletmanagerdata.IFullStatusResponse): tabletmanagerdata.FullStatusResponse;
|
||||
|
||||
/**
|
||||
* Encodes the specified FullStatusResponse message. Does not implicitly {@link tabletmanagerdata.FullStatusResponse.verify|verify} messages.
|
||||
* @param message FullStatusResponse message or plain object to encode
|
||||
* @param [writer] Writer to encode to
|
||||
* @returns Writer
|
||||
*/
|
||||
public static encode(message: tabletmanagerdata.IFullStatusResponse, writer?: $protobuf.Writer): $protobuf.Writer;
|
||||
|
||||
/**
|
||||
* Encodes the specified FullStatusResponse message, length delimited. Does not implicitly {@link tabletmanagerdata.FullStatusResponse.verify|verify} messages.
|
||||
* @param message FullStatusResponse message or plain object to encode
|
||||
* @param [writer] Writer to encode to
|
||||
* @returns Writer
|
||||
*/
|
||||
public static encodeDelimited(message: tabletmanagerdata.IFullStatusResponse, writer?: $protobuf.Writer): $protobuf.Writer;
|
||||
|
||||
/**
|
||||
* Decodes a FullStatusResponse message from the specified reader or buffer.
|
||||
* @param reader Reader or buffer to decode from
|
||||
* @param [length] Message length if known beforehand
|
||||
* @returns FullStatusResponse
|
||||
* @throws {Error} If the payload is not a reader or valid buffer
|
||||
* @throws {$protobuf.util.ProtocolError} If required fields are missing
|
||||
*/
|
||||
public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): tabletmanagerdata.FullStatusResponse;
|
||||
|
||||
/**
|
||||
* Decodes a FullStatusResponse message from the specified reader or buffer, length delimited.
|
||||
* @param reader Reader or buffer to decode from
|
||||
* @returns FullStatusResponse
|
||||
* @throws {Error} If the payload is not a reader or valid buffer
|
||||
* @throws {$protobuf.util.ProtocolError} If required fields are missing
|
||||
*/
|
||||
public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): tabletmanagerdata.FullStatusResponse;
|
||||
|
||||
/**
|
||||
* Verifies a FullStatusResponse message.
|
||||
* @param message Plain object to verify
|
||||
* @returns `null` if valid, otherwise the reason why it is not
|
||||
*/
|
||||
public static verify(message: { [k: string]: any }): (string|null);
|
||||
|
||||
/**
|
||||
* Creates a FullStatusResponse message from a plain object. Also converts values to their respective internal types.
|
||||
* @param object Plain object
|
||||
* @returns FullStatusResponse
|
||||
*/
|
||||
public static fromObject(object: { [k: string]: any }): tabletmanagerdata.FullStatusResponse;
|
||||
|
||||
/**
|
||||
* Creates a plain object from a FullStatusResponse message. Also converts values to other types if specified.
|
||||
* @param message FullStatusResponse
|
||||
* @param [options] Conversion options
|
||||
* @returns Plain object
|
||||
*/
|
||||
public static toObject(message: tabletmanagerdata.FullStatusResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };
|
||||
|
||||
/**
|
||||
* Converts this FullStatusResponse to JSON.
|
||||
* @returns JSON object
|
||||
*/
|
||||
public toJSON(): { [k: string]: any };
|
||||
}
|
||||
|
||||
/** Properties of a SetReplicationSourceRequest. */
|
||||
interface ISetReplicationSourceRequest {
|
||||
|
||||
|
@ -29628,8 +29970,8 @@ export namespace replicationdata {
|
|||
/** Status file_position */
|
||||
file_position?: (string|null);
|
||||
|
||||
/** Status file_relay_log_position */
|
||||
file_relay_log_position?: (string|null);
|
||||
/** Status relay_log_source_binlog_equivalent_position */
|
||||
relay_log_source_binlog_equivalent_position?: (string|null);
|
||||
|
||||
/** Status source_server_id */
|
||||
source_server_id?: (number|null);
|
||||
|
@ -29648,6 +29990,30 @@ export namespace replicationdata {
|
|||
|
||||
/** Status last_sql_error */
|
||||
last_sql_error?: (string|null);
|
||||
|
||||
/** Status relay_log_file_position */
|
||||
relay_log_file_position?: (string|null);
|
||||
|
||||
/** Status source_user */
|
||||
source_user?: (string|null);
|
||||
|
||||
/** Status sql_delay */
|
||||
sql_delay?: (number|null);
|
||||
|
||||
/** Status auto_position */
|
||||
auto_position?: (boolean|null);
|
||||
|
||||
/** Status using_gtid */
|
||||
using_gtid?: (boolean|null);
|
||||
|
||||
/** Status has_replication_filters */
|
||||
has_replication_filters?: (boolean|null);
|
||||
|
||||
/** Status ssl_allowed */
|
||||
ssl_allowed?: (boolean|null);
|
||||
|
||||
/** Status replication_lag_unknown */
|
||||
replication_lag_unknown?: (boolean|null);
|
||||
}
|
||||
|
||||
/** Represents a Status. */
|
||||
|
@ -29686,8 +30052,8 @@ export namespace replicationdata {
|
|||
/** Status file_position. */
|
||||
public file_position: string;
|
||||
|
||||
/** Status file_relay_log_position. */
|
||||
public file_relay_log_position: string;
|
||||
/** Status relay_log_source_binlog_equivalent_position. */
|
||||
public relay_log_source_binlog_equivalent_position: string;
|
||||
|
||||
/** Status source_server_id. */
|
||||
public source_server_id: number;
|
||||
|
@ -29707,6 +30073,30 @@ export namespace replicationdata {
|
|||
/** Status last_sql_error. */
|
||||
public last_sql_error: string;
|
||||
|
||||
/** Status relay_log_file_position. */
|
||||
public relay_log_file_position: string;
|
||||
|
||||
/** Status source_user. */
|
||||
public source_user: string;
|
||||
|
||||
/** Status sql_delay. */
|
||||
public sql_delay: number;
|
||||
|
||||
/** Status auto_position. */
|
||||
public auto_position: boolean;
|
||||
|
||||
/** Status using_gtid. */
|
||||
public using_gtid: boolean;
|
||||
|
||||
/** Status has_replication_filters. */
|
||||
public has_replication_filters: boolean;
|
||||
|
||||
/** Status ssl_allowed. */
|
||||
public ssl_allowed: boolean;
|
||||
|
||||
/** Status replication_lag_unknown. */
|
||||
public replication_lag_unknown: boolean;
|
||||
|
||||
/**
|
||||
* Creates a new Status instance using the specified properties.
|
||||
* @param [properties] Properties to set
|
||||
|
@ -29975,6 +30365,210 @@ export namespace replicationdata {
|
|||
*/
|
||||
public toJSON(): { [k: string]: any };
|
||||
}
|
||||
|
||||
/** Properties of a FullStatus. */
|
||||
interface IFullStatus {
|
||||
|
||||
/** FullStatus server_id */
|
||||
server_id?: (number|null);
|
||||
|
||||
/** FullStatus server_uuid */
|
||||
server_uuid?: (string|null);
|
||||
|
||||
/** FullStatus replication_status */
|
||||
replication_status?: (replicationdata.IStatus|null);
|
||||
|
||||
/** FullStatus primary_status */
|
||||
primary_status?: (replicationdata.IPrimaryStatus|null);
|
||||
|
||||
/** FullStatus gtid_purged */
|
||||
gtid_purged?: (string|null);
|
||||
|
||||
/** FullStatus version */
|
||||
version?: (string|null);
|
||||
|
||||
/** FullStatus version_comment */
|
||||
version_comment?: (string|null);
|
||||
|
||||
/** FullStatus read_only */
|
||||
read_only?: (boolean|null);
|
||||
|
||||
/** FullStatus gtid_mode */
|
||||
gtid_mode?: (string|null);
|
||||
|
||||
/** FullStatus binlog_format */
|
||||
binlog_format?: (string|null);
|
||||
|
||||
/** FullStatus binlog_row_image */
|
||||
binlog_row_image?: (string|null);
|
||||
|
||||
/** FullStatus log_bin_enabled */
|
||||
log_bin_enabled?: (boolean|null);
|
||||
|
||||
/** FullStatus log_replica_updates */
|
||||
log_replica_updates?: (boolean|null);
|
||||
|
||||
/** FullStatus semi_sync_primary_enabled */
|
||||
semi_sync_primary_enabled?: (boolean|null);
|
||||
|
||||
/** FullStatus semi_sync_replica_enabled */
|
||||
semi_sync_replica_enabled?: (boolean|null);
|
||||
|
||||
/** FullStatus semi_sync_primary_status */
|
||||
semi_sync_primary_status?: (boolean|null);
|
||||
|
||||
/** FullStatus semi_sync_replica_status */
|
||||
semi_sync_replica_status?: (boolean|null);
|
||||
|
||||
/** FullStatus semi_sync_primary_clients */
|
||||
semi_sync_primary_clients?: (number|null);
|
||||
|
||||
/** FullStatus semi_sync_primary_timeout */
|
||||
semi_sync_primary_timeout?: (number|Long|null);
|
||||
|
||||
/** FullStatus semi_sync_wait_for_replica_count */
|
||||
semi_sync_wait_for_replica_count?: (number|null);
|
||||
}
|
||||
|
||||
/** Represents a FullStatus. */
|
||||
class FullStatus implements IFullStatus {
|
||||
|
||||
/**
|
||||
* Constructs a new FullStatus.
|
||||
* @param [properties] Properties to set
|
||||
*/
|
||||
constructor(properties?: replicationdata.IFullStatus);
|
||||
|
||||
/** FullStatus server_id. */
|
||||
public server_id: number;
|
||||
|
||||
/** FullStatus server_uuid. */
|
||||
public server_uuid: string;
|
||||
|
||||
/** FullStatus replication_status. */
|
||||
public replication_status?: (replicationdata.IStatus|null);
|
||||
|
||||
/** FullStatus primary_status. */
|
||||
public primary_status?: (replicationdata.IPrimaryStatus|null);
|
||||
|
||||
/** FullStatus gtid_purged. */
|
||||
public gtid_purged: string;
|
||||
|
||||
/** FullStatus version. */
|
||||
public version: string;
|
||||
|
||||
/** FullStatus version_comment. */
|
||||
public version_comment: string;
|
||||
|
||||
/** FullStatus read_only. */
|
||||
public read_only: boolean;
|
||||
|
||||
/** FullStatus gtid_mode. */
|
||||
public gtid_mode: string;
|
||||
|
||||
/** FullStatus binlog_format. */
|
||||
public binlog_format: string;
|
||||
|
||||
/** FullStatus binlog_row_image. */
|
||||
public binlog_row_image: string;
|
||||
|
||||
/** FullStatus log_bin_enabled. */
|
||||
public log_bin_enabled: boolean;
|
||||
|
||||
/** FullStatus log_replica_updates. */
|
||||
public log_replica_updates: boolean;
|
||||
|
||||
/** FullStatus semi_sync_primary_enabled. */
|
||||
public semi_sync_primary_enabled: boolean;
|
||||
|
||||
/** FullStatus semi_sync_replica_enabled. */
|
||||
public semi_sync_replica_enabled: boolean;
|
||||
|
||||
/** FullStatus semi_sync_primary_status. */
|
||||
public semi_sync_primary_status: boolean;
|
||||
|
||||
/** FullStatus semi_sync_replica_status. */
|
||||
public semi_sync_replica_status: boolean;
|
||||
|
||||
/** FullStatus semi_sync_primary_clients. */
|
||||
public semi_sync_primary_clients: number;
|
||||
|
||||
/** FullStatus semi_sync_primary_timeout. */
|
||||
public semi_sync_primary_timeout: (number|Long);
|
||||
|
||||
/** FullStatus semi_sync_wait_for_replica_count. */
|
||||
public semi_sync_wait_for_replica_count: number;
|
||||
|
||||
/**
|
||||
* Creates a new FullStatus instance using the specified properties.
|
||||
* @param [properties] Properties to set
|
||||
* @returns FullStatus instance
|
||||
*/
|
||||
public static create(properties?: replicationdata.IFullStatus): replicationdata.FullStatus;
|
||||
|
||||
/**
|
||||
* Encodes the specified FullStatus message. Does not implicitly {@link replicationdata.FullStatus.verify|verify} messages.
|
||||
* @param message FullStatus message or plain object to encode
|
||||
* @param [writer] Writer to encode to
|
||||
* @returns Writer
|
||||
*/
|
||||
public static encode(message: replicationdata.IFullStatus, writer?: $protobuf.Writer): $protobuf.Writer;
|
||||
|
||||
/**
|
||||
* Encodes the specified FullStatus message, length delimited. Does not implicitly {@link replicationdata.FullStatus.verify|verify} messages.
|
||||
* @param message FullStatus message or plain object to encode
|
||||
* @param [writer] Writer to encode to
|
||||
* @returns Writer
|
||||
*/
|
||||
public static encodeDelimited(message: replicationdata.IFullStatus, writer?: $protobuf.Writer): $protobuf.Writer;
|
||||
|
||||
/**
|
||||
* Decodes a FullStatus message from the specified reader or buffer.
|
||||
* @param reader Reader or buffer to decode from
|
||||
* @param [length] Message length if known beforehand
|
||||
* @returns FullStatus
|
||||
* @throws {Error} If the payload is not a reader or valid buffer
|
||||
* @throws {$protobuf.util.ProtocolError} If required fields are missing
|
||||
*/
|
||||
public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): replicationdata.FullStatus;
|
||||
|
||||
/**
|
||||
* Decodes a FullStatus message from the specified reader or buffer, length delimited.
|
||||
* @param reader Reader or buffer to decode from
|
||||
* @returns FullStatus
|
||||
* @throws {Error} If the payload is not a reader or valid buffer
|
||||
* @throws {$protobuf.util.ProtocolError} If required fields are missing
|
||||
*/
|
||||
public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): replicationdata.FullStatus;
|
||||
|
||||
/**
|
||||
* Verifies a FullStatus message.
|
||||
* @param message Plain object to verify
|
||||
* @returns `null` if valid, otherwise the reason why it is not
|
||||
*/
|
||||
public static verify(message: { [k: string]: any }): (string|null);
|
||||
|
||||
/**
|
||||
* Creates a FullStatus message from a plain object. Also converts values to their respective internal types.
|
||||
* @param object Plain object
|
||||
* @returns FullStatus
|
||||
*/
|
||||
public static fromObject(object: { [k: string]: any }): replicationdata.FullStatus;
|
||||
|
||||
/**
|
||||
* Creates a plain object from a FullStatus message. Also converts values to other types if specified.
|
||||
* @param message FullStatus
|
||||
* @param [options] Conversion options
|
||||
* @returns Plain object
|
||||
*/
|
||||
public static toObject(message: replicationdata.FullStatus, options?: $protobuf.IConversionOptions): { [k: string]: any };
|
||||
|
||||
/**
|
||||
* Converts this FullStatus to JSON.
|
||||
* @returns JSON object
|
||||
*/
|
||||
public toJSON(): { [k: string]: any };
|
||||
}
|
||||
}
|
||||
|
||||
/** Namespace vschema. */
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Загрузка…
Ссылка в новой задаче