Documentation ¶
Index ¶
- Constants
- Variables
- func ValidateConfigKey(k string) bool
- type AgentStat
- type AuthInfo
- type AuthUser
- type AuthUserRoles
- type BackupCmd
- type BackupMeta
- type BackupReplset
- type ClusterTime
- type Cmd
- type Command
- type CompressionType
- type Condition
- type Config
- type ConfigServerState
- type ConnectionStatus
- type DeleteBackupCmd
- type Epoch
- type ErrConcurrentOp
- type ErrDuplicateOp
- type ErrWasStaleLock
- type ErrorCursor
- type Lock
- type LockData
- type LockHeader
- type MongoLastWrite
- type MongoVersion
- type Node
- func (n *Node) ConnURI() string
- func (n *Node) Connect() error
- func (n *Node) CurrentUser() (*AuthInfo, error)
- func (n *Node) DropTMPcoll() error
- func (n *Node) DumpConns() int
- func (n *Node) EnsureNoTMPcoll() error
- func (n *Node) GetInfo() (*NodeInfo, error)
- func (n *Node) GetMongoVersion() (*MongoVersion, error)
- func (n *Node) GetReplsetStatus() (*ReplsetStatus, error)
- func (n *Node) ID() string
- func (n *Node) IsSharded() (bool, error)
- func (n *Node) Name() string
- func (n *Node) RS() string
- func (n *Node) ReplicationLag() (int, error)
- func (n *Node) Session() *mongo.Client
- func (n *Node) SizeDBs() (int, error)
- func (n *Node) Status() (*NodeStatus, error)
- type NodeHealth
- type NodeInfo
- type NodeState
- type NodeStatus
- type OPID
- type OpLog
- type OpTime
- type Operation
- type PBM
- func (p *PBM) AddRSMeta(bcpName string, rs BackupReplset) error
- func (p *PBM) AddRestoreRSMeta(name string, rs RestoreReplset) error
- func (p *PBM) AgentStatusGC() error
- func (p *PBM) BackupGetNext(backup *BackupMeta) (*BackupMeta, error)
- func (p *PBM) BackupHB(bcpName string) error
- func (p *PBM) BackupsList(limit int64) ([]BackupMeta, error)
- func (p *PBM) ChangeBackupState(bcpName string, s Status, msg string) error
- func (p *PBM) ChangeBackupStateOPID(opid string, s Status, msg string) error
- func (p *PBM) ChangeRSState(bcpName string, rsName string, s Status, msg string) error
- func (p *PBM) ChangeRestoreRSState(name string, rsName string, s Status, msg string) error
- func (p *PBM) ChangeRestoreState(name string, s Status, msg string) error
- func (p *PBM) ChangeRestoreStateOPID(opid string, s Status, msg string) error
- func (p *PBM) ClusterTime() (primitive.Timestamp, error)
- func (p *PBM) Context() context.Context
- func (p *PBM) DeleteBackup(name string, l *log.Event) error
- func (p *PBM) DeleteBackupFiles(meta *BackupMeta, stg storage.Storage) (err error)
- func (p *PBM) DeleteOlderThan(t time.Time, l *log.Event) error
- func (p *PBM) GetAgentStatus(rs, node string) (s AgentStat, err error)
- func (p *PBM) GetBackupByOPID(opid string) (*BackupMeta, error)
- func (p *PBM) GetBackupMeta(name string) (*BackupMeta, error)
- func (p *PBM) GetConfig() (Config, error)
- func (p *PBM) GetConfigVar(key string) (interface{}, error)
- func (p *PBM) GetConfigYaml(fieldRedaction bool) ([]byte, error)
- func (p *PBM) GetEpoch() (Epoch, error)
- func (p *PBM) GetFirstBackup() (*BackupMeta, error)
- func (p *PBM) GetLastBackup(before *primitive.Timestamp) (*BackupMeta, error)
- func (p *PBM) GetLastRestore() (*RestoreMeta, error)
- func (p *PBM) GetLockData(lh *LockHeader) (LockData, error)
- func (p *PBM) GetLocks(lh *LockHeader) ([]LockData, error)
- func (p *PBM) GetNodeInfo() (*NodeInfo, error)
- func (p *PBM) GetOpLockData(lh *LockHeader) (LockData, error)
- func (p *PBM) GetOpLocks(lh *LockHeader) ([]LockData, error)
- func (p *PBM) GetRestoreMeta(name string) (*RestoreMeta, error)
- func (p *PBM) GetRestoreMetaByOPID(opid string) (*RestoreMeta, error)
- func (p *PBM) GetShards() ([]Shard, error)
- func (p *PBM) GetStorage(l *log.Event) (storage.Storage, error)
- func (p *PBM) InitLogger(rs, node string)
- func (p *PBM) IsPITR() (bool, error)
- func (p *PBM) ListenCmd() (<-chan Cmd, <-chan error, error)
- func (p *PBM) LogGet(r *log.LogRequest, limit int64) ([]log.LogEntry, error)
- func (p *PBM) LogGetExactSeverity(r *log.LogRequest, limit int64) ([]log.LogEntry, error)
- func (p *PBM) Logger() *log.Logger
- func (p *PBM) MarkBcpStale(opid string) error
- func (p *PBM) MarkRestoreStale(opid string) error
- func (p *PBM) NewLock(h LockHeader) *Lock
- func (p *PBM) NewLockCol(h LockHeader, collection string) *Lock
- func (p *PBM) PITRAddChunk(c PITRChunk) error
- func (p *PBM) PITRFirstChunkMeta(rs string) (*PITRChunk, error)
- func (p *PBM) PITRGetChunkContains(rs string, ts primitive.Timestamp) (*PITRChunk, error)
- func (p *PBM) PITRGetChunkStarts(rs string, ts primitive.Timestamp) (*PITRChunk, error)
- func (p *PBM) PITRGetChunksSlice(rs string, from, to primitive.Timestamp) ([]PITRChunk, error)
- func (p *PBM) PITRGetValidTimelines(rs string, until int64, stg storage.Storage) (tlines []Timeline, err error)
- func (p *PBM) PITRLastChunkMeta(rs string) (*PITRChunk, error)
- func (p *PBM) ResetEpoch() (Epoch, error)
- func (p *PBM) RestoreHB(name string) error
- func (p *PBM) RestoresList(limit int64) ([]RestoreMeta, error)
- func (p *PBM) ResyncStorage(l *log.Event) error
- func (p *PBM) RmAgentStatus(stat AgentStat) error
- func (p *PBM) SendCmd(cmd Cmd) error
- func (p *PBM) SetAgentStatus(stat AgentStat) error
- func (p *PBM) SetBackupMeta(m *BackupMeta) error
- func (p *PBM) SetConfig(cfg Config) error
- func (p *PBM) SetConfigByte(buf []byte) error
- func (p *PBM) SetConfigVar(key, val string) error
- func (p *PBM) SetLastWrite(bcpName string, ts primitive.Timestamp) error
- func (p *PBM) SetRSFirstWrite(bcpName string, rsName string, ts primitive.Timestamp) error
- func (p *PBM) SetRSLastWrite(bcpName string, rsName string, ts primitive.Timestamp) error
- func (p *PBM) SetRestoreBackup(name, backupName string) error
- func (p *PBM) SetRestoreMeta(m *RestoreMeta) error
- func (p *PBM) SetRestorePITR(name string, ts int64) error
- type PITRChunk
- type PITRConf
- type PITRestoreCmd
- type ReplRole
- type ReplsetStatus
- type RestoreCmd
- type RestoreConf
- type RestoreMeta
- type RestoreReplset
- type Shard
- type Status
- type StatusOpTimes
- type StorageConf
- type StorageType
- type SubsysStatus
- type Timeline
Constants ¶
const ( ReplRoleUnknown = "unknown" ReplRoleShard = "shard" ReplRoleConfigSrv = "configsrv" // TmpUsersCollection and TmpRoles are tmp collections used to avoid // user related issues while resoring on new cluster. // See https://jira.percona.com/browse/PBM-425 // // Backup should ensure abscense of this collection to avoid // restore conflicts. See https://jira.percona.com/browse/PBM-460 TmpUsersCollection = `pbmRUsers` TmpRolesCollection = `pbmRRoles` )
const ( // DB is a name of the PBM database DB = "admin" // LogCollection is the name of the mongo collection that contains PBM logs LogCollection = "pbmLog" // ConfigCollection is the name of the mongo collection that contains PBM configs ConfigCollection = "pbmConfig" // LockCollection is the name of the mongo collection that is used // by agents to coordinate mutually exclusive operations (e.g. backup/restore) LockCollection = "pbmLock" // LockOpCollection is the name of the mongo collection that is used // by agents to coordinate operations that doesn't need to be // mutually exclusive to other operation types (e.g. backup-delete) LockOpCollection = "pbmLockOp" // BcpCollection is a collection for backups metadata BcpCollection = "pbmBackups" // BcpOldCollection contains a backup of backups metadata BcpOldCollection = "pbmBackups.old" // RestoresCollection is a collection for restores metadata RestoresCollection = "pbmRestores" // CmdStreamCollection is the name of the mongo collection that contains backup/restore commands stream CmdStreamCollection = "pbmCmd" // PITRCollection represents current incremental backups state PITRCollection = "pbmPITRState" //PITRChunksCollection contains index metadata of PITR chunks PITRChunksCollection = "pbmPITRChunks" //PITRChunksOldCollection contains archived index metadata of PITR chunks PITRChunksOldCollection = "pbmPITRChunks.old" // StatusCollection stores pbm status StatusCollection = "pbmStatus" // PBMOpLogCollection contains log of aquired locks (hence run ops) PBMOpLogCollection = "pbmOpLog" // AgentsStatusCollection is a agents registry with its status/health checks AgentsStatusCollection = "pbmAgents" // MetadataFileSuffix is a suffix for the metadata file on a storage MetadataFileSuffix = ".pbm.json" )
const ( PITRcheckRange = time.Second * 15 AgentsStatCheckRange = time.Second * 5 )
const ( // PITRdefaultSpan oplog slicing time span PITRdefaultSpan = time.Minute * 10 // PITRfsPrefix is a prefix (folder) for PITR chunks on the storage PITRfsPrefix = "pbmPitr" )
const StaleFrameSec uint32 = 30
const StorInitFile = ".pbm.init"
Variables ¶
var ( WaitActionStart = time.Second * 15 WaitBackupStart = WaitActionStart + PITRcheckRange*12/10 )
var ErrStorageUndefined = errors.New("storage undefined")
ErrStorageUndefined is an error for undefined storage
Functions ¶
func ValidateConfigKey ¶ added in v1.1.0
ValidateConfigKey checks if a config key valid
Types ¶
type AgentStat ¶ added in v1.4.0
type AgentStat struct { Node string `bson:"n"` RS string `bson:"rs"` Ver string `bson:"v"` PBMStatus SubsysStatus `bson:"pbms"` NodeStatus SubsysStatus `bson:"nodes"` StorageStatus SubsysStatus `bson:"stors"` Heartbeat primitive.Timestamp `bson:"hb"` }
type AuthInfo ¶ added in v1.1.3
type AuthInfo struct { Users []AuthUser `bson:"authenticatedUsers" json:"authenticatedUsers"` UserRoles []AuthUserRoles `bson:"authenticatedUserRoles" json:"authenticatedUserRoles"` }
type AuthUserRoles ¶ added in v1.1.3
type BackupCmd ¶
type BackupCmd struct { Name string `bson:"name"` Compression CompressionType `bson:"compression"` }
type BackupMeta ¶
type BackupMeta struct { OPID string `bson:"opid" json:"opid"` Name string `bson:"name" json:"name"` Replsets []BackupReplset `bson:"replsets" json:"replsets"` Compression CompressionType `bson:"compression" json:"compression"` Store StorageConf `bson:"store" json:"store"` MongoVersion string `bson:"mongodb_version" json:"mongodb_version,omitempty"` StartTS int64 `bson:"start_ts" json:"start_ts"` LastTransitionTS int64 `bson:"last_transition_ts" json:"last_transition_ts"` LastWriteTS primitive.Timestamp `bson:"last_write_ts" json:"last_write_ts"` Hb primitive.Timestamp `bson:"hb" json:"hb"` Status Status `bson:"status" json:"status"` Conditions []Condition `bson:"conditions" json:"conditions"` Error string `bson:"error,omitempty" json:"error,omitempty"` PBMVersion string `bson:"pbm_version,omitempty" json:"pbm_version,omitempty"` }
BackupMeta is a backup's metadata
func (*BackupMeta) RS ¶ added in v1.3.0
func (b *BackupMeta) RS(name string) *BackupReplset
RS returns the metada of the replset with given name. It returns nil if no replsent found.
type BackupReplset ¶
type BackupReplset struct { Name string `bson:"name" json:"name"` DumpName string `bson:"dump_name" json:"backup_name" ` OplogName string `bson:"oplog_name" json:"oplog_name"` StartTS int64 `bson:"start_ts" json:"start_ts"` Status Status `bson:"status" json:"status"` LastTransitionTS int64 `bson:"last_transition_ts" json:"last_transition_ts"` FirstWriteTS primitive.Timestamp `bson:"first_write_ts" json:"first_write_ts"` LastWriteTS primitive.Timestamp `bson:"last_write_ts" json:"last_write_ts"` Error string `bson:"error,omitempty" json:"error,omitempty"` Conditions []Condition `bson:"conditions" json:"conditions"` }
type ClusterTime ¶
type Cmd ¶
type Cmd struct { Cmd Command `bson:"cmd"` Backup BackupCmd `bson:"backup,omitempty"` Restore RestoreCmd `bson:"restore,omitempty"` PITRestore PITRestoreCmd `bson:"pitrestore,omitempty"` Delete DeleteBackupCmd `bson:"delete,omitempty"` TS int64 `bson:"ts"` OPID OPID `bson:"-"` }
type Command ¶
type Command string
Command represents actions that could be done on behalf of the client by the agents
type CompressionType ¶
type CompressionType string
const ( CompressionTypeNone CompressionType = "none" CompressionTypeGZIP CompressionType = "gzip" CompressionTypePGZIP CompressionType = "pgzip" CompressionTypeSNAPPY CompressionType = "snappy" CompressionTypeLZ4 CompressionType = "lz4" CompressionTypeS2 CompressionType = "s2" )
func FileCompression ¶ added in v1.3.0
func FileCompression(ext string) CompressionType
FileCompression return compression alg based on given file extention
type Config ¶ added in v1.1.0
type Config struct { PITR PITRConf `bson:"pitr" json:"pitr" yaml:"pitr"` Storage StorageConf `bson:"storage" json:"storage" yaml:"storage"` Restore RestoreConf `bson:"restore" json:"restore,omitempty" yaml:"restore,omitempty"` Epoch primitive.Timestamp `bson:"epoch" json:"-" yaml:"-"` }
Config is a pbm config
type ConfigServerState ¶
type ConfigServerState struct {
OpTime *OpTime `bson:"opTime"`
}
type ConnectionStatus ¶ added in v1.1.3
type ConnectionStatus struct {
AuthInfo AuthInfo `bson:"authInfo" json:"authInfo"`
}
type DeleteBackupCmd ¶ added in v1.3.2
func (DeleteBackupCmd) String ¶ added in v1.3.2
func (d DeleteBackupCmd) String() string
type ErrConcurrentOp ¶ added in v1.1.0
type ErrConcurrentOp struct {
Lock LockHeader
}
ErrConcurrentOp means lock was already aquired by another node
func (ErrConcurrentOp) Error ¶ added in v1.1.0
func (e ErrConcurrentOp) Error() string
type ErrDuplicateOp ¶ added in v1.4.0
type ErrDuplicateOp struct {
Lock LockHeader
}
ErrDuplicateOp means the operation with the same ID alredy had been running
func (ErrDuplicateOp) Error ¶ added in v1.4.0
func (e ErrDuplicateOp) Error() string
type ErrWasStaleLock ¶ added in v1.3.0
type ErrWasStaleLock struct {
Lock LockHeader
}
ErrWasStaleLock - the lock was already got but the operation seems to be staled (no hb from the node)
func (ErrWasStaleLock) Error ¶ added in v1.3.0
func (e ErrWasStaleLock) Error() string
type ErrorCursor ¶
type ErrorCursor struct {
// contains filtered or unexported fields
}
func (ErrorCursor) Error ¶
func (c ErrorCursor) Error() string
type Lock ¶
type Lock struct { LockData // contains filtered or unexported fields }
Lock is a lock for the PBM operation (e.g. backup, restore)
func (*Lock) Acquire ¶ added in v1.1.0
Acquire tries to acquire the lock. It returns true in case of success and false if a lock already acquired by another process or some error happened. In case of concurrent lock exists is stale it will be deleted and ErrWasStaleLock gonna be returned. A client shell mark respective operation as stale and retry if it needs to
type LockData ¶ added in v1.1.0
type LockData struct { LockHeader `bson:",inline"` Heartbeat primitive.Timestamp `bson:"hb"` // separated in order the lock can be searchable by the header }
type LockHeader ¶ added in v1.1.0
type LockHeader struct { Type Command `bson:"type,omitempty"` Replset string `bson:"replset,omitempty"` Node string `bson:"node,omitempty"` OPID string `bson:"opid,omitempty"` // should be a pointer so mongo find with empty epoch would work // otherwise it always set it at least to "epoch":{"$timestamp":{"t":0,"i":0}} Epoch *primitive.Timestamp `bson:"epoch,omitempty"` }
LockHeader describes the lock. This data will be serialased into the mongo document.
type MongoLastWrite ¶ added in v1.3.0
type MongoLastWrite struct { OpTime OpTime `bson:"opTime"` LastWriteDate time.Time `bson:"lastWriteDate"` MajorityOpTime OpTime `bson:"majorityOpTime"` MajorityWriteDate time.Time `bson:"majorityWriteDate"` }
MongoLastWrite represents the last write to the MongoDB server
type MongoVersion ¶
type Node ¶
type Node struct {
// contains filtered or unexported fields
}
func (*Node) CurrentUser ¶ added in v1.1.3
func (*Node) DropTMPcoll ¶ added in v1.3.4
func (*Node) EnsureNoTMPcoll ¶ added in v1.3.4
func (*Node) GetMongoVersion ¶
func (n *Node) GetMongoVersion() (*MongoVersion, error)
func (*Node) GetReplsetStatus ¶
func (n *Node) GetReplsetStatus() (*ReplsetStatus, error)
func (*Node) IsSharded ¶
IsSharded return true if node is part of the sharded cluster (in shard or configsrv replset).
func (*Node) ReplicationLag ¶
ReplicationLag returns node replication lag in seconds
func (*Node) SizeDBs ¶ added in v1.3.2
SizeDBs returns the total size in bytes of all databases' files on disk on replicaset
func (*Node) Status ¶
func (n *Node) Status() (*NodeStatus, error)
type NodeInfo ¶ added in v1.3.0
type NodeInfo struct { Hosts []string `bson:"hosts,omitempty"` Msg string `bson:"msg"` MaxBsonObjectSise int64 `bson:"maxBsonObjectSize"` MaxMessageSizeBytes int64 `bson:"maxMessageSizeBytes"` MaxWriteBatchSize int64 `bson:"maxWriteBatchSize"` LocalTime time.Time `bson:"localTime"` LogicalSessionTimeoutMinutes int64 `bson:"logicalSessionTimeoutMinutes"` MaxWireVersion int64 `bson:"maxWireVersion"` MinWireVersion int64 `bson:"minWireVersion"` OK int `bson:"ok"` SetName string `bson:"setName,omitempty"` Primary string `bson:"primary,omitempty"` SetVersion int32 `bson:"setVersion,omitempty"` IsPrimary bool `bson:"ismaster"` Secondary bool `bson:"secondary,omitempty"` Hidden bool `bson:"hidden,omitempty"` ConfigSvr int `bson:"configsvr,omitempty"` Me string `bson:"me"` LastWrite MongoLastWrite `bson:"lastWrite"` ClusterTime *ClusterTime `bson:"$clusterTime,omitempty"` ConfigServerState *ConfigServerState `bson:"$configServerState,omitempty"` OperationTime *primitive.Timestamp `bson:"operationTime,omitempty"` }
NodeInfo represents the mongo's node info
func (*NodeInfo) IsLeader ¶ added in v1.3.0
IsLeader returns true if node can act as backup leader (it's configsrv or non shareded rs)
func (*NodeInfo) IsSharded ¶ added in v1.3.0
IsSharded returns true is replset is part sharded cluster
func (*NodeInfo) IsStandalone ¶ added in v1.3.0
IsStandalone returns true if node is not a part of replica set
func (*NodeInfo) ReplsetRole ¶ added in v1.3.0
ReplsetRole returns replset role in sharded clister
type NodeStatus ¶
type NodeStatus struct { ID int `bson:"_id" json:"_id"` Name string `bson:"name" json:"name"` Health NodeHealth `bson:"health" json:"health"` State NodeState `bson:"state" json:"state"` StateStr string `bson:"stateStr" json:"stateStr"` Uptime int64 `bson:"uptime" json:"uptime"` Optime *OpTime `bson:"optime" json:"optime"` OptimeDate time.Time `bson:"optimeDate" json:"optimeDate"` ConfigVersion int `bson:"configVersion" json:"configVersion"` ElectionTime primitive.Timestamp `bson:"electionTime,omitempty" json:"electionTime,omitempty"` ElectionDate time.Time `bson:"electionDate,omitempty" json:"electionDate,omitempty"` InfoMessage string `bson:"infoMessage,omitempty" json:"infoMessage,omitempty"` OptimeDurable *OpTime `bson:"optimeDurable,omitempty" json:"optimeDurable,omitempty"` OptimeDurableDate time.Time `bson:"optimeDurableDate,omitempty" json:"optimeDurableDate,omitempty"` LastHeartbeat time.Time `bson:"lastHeartbeat,omitempty" json:"lastHeartbeat,omitempty"` LastHeartbeatRecv time.Time `bson:"lastHeartbeatRecv,omitempty" json:"lastHeartbeatRecv,omitempty"` PingMs int64 `bson:"pingMs,omitempty" json:"pingMs,omitempty"` Self bool `bson:"self,omitempty" json:"self,omitempty"` SyncingTo string `bson:"syncingTo,omitempty" json:"syncingTo,omitempty"` }
type OPID ¶ added in v1.4.0
func OPIDfromStr ¶ added in v1.4.0
type OpLog ¶ added in v1.4.0
type OpLog struct {
LockHeader `bson:",inline" json:",inline"`
}
OpLog represents log of started operation. Operation progress can be get from logs by OPID. Basically it is a log of all ever taken locks. With the uniqueness by rs + opid
type PBM ¶
func New ¶
New creates a new PBM object. In the sharded cluster both agents and ctls should have a connection to ConfigServer replica set in order to communicate via PBM collections. If agent's or ctl's local node is not a member of CongigServer, after discovering current topology connection will be established to ConfigServer.
func (*PBM) AddRSMeta ¶ added in v1.1.0
func (p *PBM) AddRSMeta(bcpName string, rs BackupReplset) error
func (*PBM) AddRestoreRSMeta ¶ added in v1.1.2
func (p *PBM) AddRestoreRSMeta(name string, rs RestoreReplset) error
func (*PBM) AgentStatusGC ¶ added in v1.4.0
AgentStatusGC cleans up stale agent statuses
func (*PBM) BackupGetNext ¶ added in v1.3.0
func (p *PBM) BackupGetNext(backup *BackupMeta) (*BackupMeta, error)
func (*PBM) BackupsList ¶
func (p *PBM) BackupsList(limit int64) ([]BackupMeta, error)
func (*PBM) ChangeBackupState ¶ added in v1.1.0
func (*PBM) ChangeBackupStateOPID ¶ added in v1.4.0
func (*PBM) ChangeRSState ¶ added in v1.1.0
func (*PBM) ChangeRestoreRSState ¶ added in v1.1.2
func (*PBM) ChangeRestoreState ¶ added in v1.1.2
func (*PBM) ChangeRestoreStateOPID ¶ added in v1.4.0
func (*PBM) ClusterTime ¶ added in v1.1.0
ClusterTime returns mongo's current cluster time
func (*PBM) DeleteBackup ¶ added in v1.2.0
DeleteBackup deletes backup with the given name from the current storage and pbm database
func (*PBM) DeleteBackupFiles ¶ added in v1.2.0
func (p *PBM) DeleteBackupFiles(meta *BackupMeta, stg storage.Storage) (err error)
DeleteBackupFiles removes backup's artefacts from storage
func (*PBM) DeleteOlderThan ¶ added in v1.2.0
DeleteOlderThan deletes backups which older than given Time
func (*PBM) GetAgentStatus ¶ added in v1.4.0
GetAgentStatus returns agent status by given node and rs it's up to user how to handle ErrNoDocuments
func (*PBM) GetBackupByOPID ¶ added in v1.4.0
func (p *PBM) GetBackupByOPID(opid string) (*BackupMeta, error)
func (*PBM) GetBackupMeta ¶
func (p *PBM) GetBackupMeta(name string) (*BackupMeta, error)
func (*PBM) GetConfigVar ¶ added in v1.1.0
GetConfigVar returns value of given config vaiable
func (*PBM) GetConfigYaml ¶ added in v1.1.0
func (*PBM) GetFirstBackup ¶ added in v1.3.0
func (p *PBM) GetFirstBackup() (*BackupMeta, error)
GetFirstBackup returns first successfully finished backup
func (*PBM) GetLastBackup ¶ added in v1.3.0
func (p *PBM) GetLastBackup(before *primitive.Timestamp) (*BackupMeta, error)
GetLastBackup returns last successfully finished backup and nil if there is no such backup yet. If ts isn't nil it will search for the most recent backup that finished before specified timestamp
func (*PBM) GetLastRestore ¶ added in v1.3.0
func (p *PBM) GetLastRestore() (*RestoreMeta, error)
GetLastRestore returns last successfully finished restore and nil if there is no such restore yet.
func (*PBM) GetLockData ¶ added in v1.1.0
func (p *PBM) GetLockData(lh *LockHeader) (LockData, error)
func (*PBM) GetNodeInfo ¶ added in v1.3.0
GetNodeInfo returns mongo node info
func (*PBM) GetOpLockData ¶ added in v1.4.0
func (p *PBM) GetOpLockData(lh *LockHeader) (LockData, error)
func (*PBM) GetOpLocks ¶ added in v1.4.0
func (p *PBM) GetOpLocks(lh *LockHeader) ([]LockData, error)
func (*PBM) GetRestoreMeta ¶ added in v1.1.2
func (p *PBM) GetRestoreMeta(name string) (*RestoreMeta, error)
func (*PBM) GetRestoreMetaByOPID ¶ added in v1.4.0
func (p *PBM) GetRestoreMetaByOPID(opid string) (*RestoreMeta, error)
func (*PBM) GetStorage ¶
GetStorage reads current storage config and creates and returns respective storage.Storage object
func (*PBM) InitLogger ¶ added in v1.4.0
func (*PBM) LogGetExactSeverity ¶ added in v1.4.0
func (*PBM) MarkBcpStale ¶ added in v1.3.0
func (*PBM) MarkRestoreStale ¶ added in v1.3.0
func (*PBM) NewLock ¶ added in v1.1.0
func (p *PBM) NewLock(h LockHeader) *Lock
NewLock creates a new Lock object from geven header. Returned lock has no state. So Acquire() and Release() methods should be called.
func (*PBM) NewLockCol ¶ added in v1.3.2
func (p *PBM) NewLockCol(h LockHeader, collection string) *Lock
NewLockCol creates a new Lock object from geven header in given collection. Returned lock has no state. So Acquire() and Release() methods should be called.
func (*PBM) PITRAddChunk ¶ added in v1.3.0
PITRAddChunk stores PITR chunk metadata
func (*PBM) PITRFirstChunkMeta ¶ added in v1.3.0
PITRFirstChunkMeta returns the oldest PITR chunk for the given Replset
func (*PBM) PITRGetChunkContains ¶ added in v1.3.0
PITRGetChunkContains returns a pitr slice chunk that belongs to the given replica set and contains the given timestamp
func (*PBM) PITRGetChunkStarts ¶ added in v1.3.0
PITRGetChunkStarts returns a pitr slice chunk that belongs to the given replica set and start from the given timestamp
func (*PBM) PITRGetChunksSlice ¶ added in v1.3.0
PITRGetChunksSlice returns slice of PITR oplog chunks which Start TS lies in a given time frame
func (*PBM) PITRGetValidTimelines ¶ added in v1.3.0
func (p *PBM) PITRGetValidTimelines(rs string, until int64, stg storage.Storage) (tlines []Timeline, err error)
PITRGetValidTimelines returns time ranges valid for PITR restore for the given replicaset. We don't check for any "restore intrusions" or other integrity issues since it's guaranteed be the slicer that any saved chunk already belongs to some valid timeline, the slice wouldn't be done otherwise
func (*PBM) PITRLastChunkMeta ¶ added in v1.3.0
PITRLastChunkMeta returns the most recent PITR chunk for the given Replset
func (*PBM) ResetEpoch ¶ added in v1.4.0
func (*PBM) RestoresList ¶ added in v1.1.2
func (p *PBM) RestoresList(limit int64) ([]RestoreMeta, error)
func (*PBM) ResyncStorage ¶ added in v1.3.0
ResyncStorage updates PBM metadata (snapshots and pitr) according to the data in the storage
func (*PBM) RmAgentStatus ¶ added in v1.4.0
func (*PBM) SetAgentStatus ¶ added in v1.4.0
func (*PBM) SetBackupMeta ¶ added in v1.1.0
func (p *PBM) SetBackupMeta(m *BackupMeta) error
func (*PBM) SetConfigByte ¶ added in v1.1.0
func (*PBM) SetConfigVar ¶ added in v1.1.0
func (*PBM) SetLastWrite ¶ added in v1.1.0
func (*PBM) SetRSFirstWrite ¶ added in v1.3.0
func (*PBM) SetRSLastWrite ¶ added in v1.1.0
func (*PBM) SetRestoreBackup ¶ added in v1.3.0
func (*PBM) SetRestoreMeta ¶ added in v1.1.2
func (p *PBM) SetRestoreMeta(m *RestoreMeta) error
type PITRChunk ¶ added in v1.3.0
type PITRChunk struct { RS string `bson:"rs"` FName string `bson:"fname"` Compression CompressionType `bson:"compression"` StartTS primitive.Timestamp `bson:"start_ts"` EndTS primitive.Timestamp `bson:"end_ts"` // contains filtered or unexported fields }
PITRChunk is index metadata for the oplog chunks
func PITRmetaFromFName ¶ added in v1.3.0
PITRmetaFromFName parses given file name and returns PITRChunk metadata it returns nil if file wasn't parse successfully (e.g. wrong format) current fromat is 20200715155939-0.20200715160029-1.oplog.snappy
!!! should be agreed with pbm/pitr.chunkPath()
type PITRConf ¶ added in v1.3.0
type PITRConf struct {
Enabled bool `bson:"enabled" json:"enabled" yaml:"enabled"`
}
PITRConf is a Point-In-Time Recovery options
type PITRestoreCmd ¶ added in v1.3.0
func (PITRestoreCmd) String ¶ added in v1.3.2
func (p PITRestoreCmd) String() string
type ReplsetStatus ¶
type ReplsetStatus struct { Set string `bson:"set" json:"set"` Date time.Time `bson:"date" json:"date"` MyState NodeState `bson:"myState" json:"myState"` Members []NodeStatus `bson:"members" json:"members"` Term int64 `bson:"term,omitempty" json:"term,omitempty"` HeartbeatIntervalMillis int64 `bson:"heartbeatIntervalMillis,omitempty" json:"heartbeatIntervalMillis,omitempty"` Optimes *StatusOpTimes `bson:"optimes,omitempty" json:"optimes,omitempty"` Errmsg string `bson:"errmsg,omitempty" json:"errmsg,omitempty"` Ok int `bson:"ok" json:"ok"` ClusterTime *ClusterTime `bson:"$clusterTime,omitempty" json:"$clusterTime,omitempty"` ConfigServerState *ConfigServerState `bson:"$configServerState,omitempty" json:"$configServerState,omitempty"` OperationTime *primitive.Timestamp `bson:"operationTime,omitempty" json:"operationTime,omitempty"` }
type RestoreCmd ¶
func (RestoreCmd) String ¶ added in v1.3.2
func (r RestoreCmd) String() string
type RestoreConf ¶ added in v1.3.2
type RestoreConf struct { BatchSize int `bson:"batchSize" json:"batchSize,omitempty" yaml:"batchSize,omitempty"` // num of documents to buffer NumInsertionWorkers int `bson:"numInsertionWorkers" json:"numInsertionWorkers,omitempty" yaml:"numInsertionWorkers,omitempty"` }
RestoreConf is config options for the restore
type RestoreMeta ¶ added in v1.1.2
type RestoreMeta struct { OPID string `bson:"opid" json:"opid"` Name string `bson:"name" json:"name"` Backup string `bson:"backup" json:"backup"` PITR int64 `bson:"pitr" json:"pitr"` Replsets []RestoreReplset `bson:"replsets" json:"replsets"` Hb primitive.Timestamp `bson:"hb" json:"hb"` StartTS int64 `bson:"start_ts" json:"start_ts"` LastTransitionTS int64 `bson:"last_transition_ts" json:"last_transition_ts"` Status Status `bson:"status" json:"status"` Conditions []Condition `bson:"conditions" json:"conditions"` Error string `bson:"error,omitempty" json:"error,omitempty"` }
type RestoreReplset ¶ added in v1.1.2
type RestoreReplset struct { Name string `bson:"name" json:"name"` StartTS int64 `bson:"start_ts" json:"start_ts"` Status Status `bson:"status" json:"status"` LastTransitionTS int64 `bson:"last_transition_ts" json:"last_transition_ts"` LastWriteTS primitive.Timestamp `bson:"last_write_ts" json:"last_write_ts"` Error string `bson:"error,omitempty" json:"error,omitempty"` Conditions []Condition `bson:"conditions" json:"conditions"` }
type Shard ¶
Shard represent config.shard https://docs.mongodb.com/manual/reference/config-database/#config.shards
type StatusOpTimes ¶
type StatusOpTimes struct { LastCommittedOpTime *OpTime `bson:"lastCommittedOpTime" json:"lastCommittedOpTime"` ReadConcernMajorityOpTime *OpTime `bson:"readConcernMajorityOpTime" json:"readConcernMajorityOpTime"` AppliedOpTime *OpTime `bson:"appliedOpTime" json:"appliedOpTime"` DurableOptime *OpTime `bson:"durableOpTime" json:"durableOpTime"` }
type StorageConf ¶ added in v1.2.0
type StorageConf struct { Type StorageType `bson:"type" json:"type" yaml:"type"` S3 s3.Conf `bson:"s3,omitempty" json:"s3,omitempty" yaml:"s3,omitempty"` Filesystem fs.Conf `bson:"filesystem,omitempty" json:"filesystem,omitempty" yaml:"filesystem,omitempty"` }
StorageConf is a configuration of the backup storage
type StorageType ¶
type StorageType string
StorageType represents a type of the destination storage for backups
const ( StorageUndef StorageType = "" StorageS3 StorageType = "s3" StorageFilesystem StorageType = "filesystem" StorageBlackHole StorageType = "blackhole" )
type SubsysStatus ¶ added in v1.4.0
type Timeline ¶ added in v1.3.0
func MergeTimelines ¶ added in v1.3.0
MergeTimelines merges overlapping sets on timelines it preresumes timelines already sorted and don't start from 0