greenplum

package
v1.1.1 Latest Latest
Warning

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

Go to latest
Published: Nov 12, 2021 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

View Source
const (
	BackupNamePrefix = "backup_"
	BackupNameLength = 23 // len(BackupNamePrefix) + len(utility.BackupTimeFormat)
)
View Source
const PgHbaTemplate = `` /* 759-byte string literal not displayed */

Variables

This section is empty.

Functions

func FormatSegmentBackupPath

func FormatSegmentBackupPath(contentID int) string

func FormatSegmentStoragePrefix

func FormatSegmentStoragePrefix(contentID int) string

func FormatSegmentWalPath

func FormatSegmentWalPath(contentID int) string

func GetSegmentFolder

func GetSegmentFolder(backupFolder storage.Folder, contentID int) storage.Folder

func NewGreenplumBackupFetcher

func NewGreenplumBackupFetcher(restoreCfg ClusterRestoreConfig, logsDir string) func(folder storage.Folder, backup internal.Backup)

Types

type Backup

type Backup struct {
	internal.Backup
	SentinelDto *BackupSentinelDto // used for storage query caching
	// contains filtered or unexported fields
}

Backup contains information about a valid Greenplum backup generated and uploaded by WAL-G.

func NewBackup

func NewBackup(rootFolder storage.Folder, name string) Backup

func ToGpBackup

func ToGpBackup(source internal.Backup) (output Backup)

func (*Backup) GetSegmentBackup

func (backup *Backup) GetSegmentBackup(backupID string, contentID int) (*postgres.Backup, error)

func (*Backup) GetSentinel

func (backup *Backup) GetSentinel() (BackupSentinelDto, error)

type BackupArguments

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

BackupArguments holds all arguments parsed from cmd to this handler class

func NewBackupArguments

func NewBackupArguments(isPermanent bool, userData interface{}, fwdArgs []SegmentFwdArg, logsDir string) BackupArguments

NewBackupArguments creates a BackupArgument object to hold the arguments from the cmd

type BackupHandler

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

BackupHandler is the main struct which is handling the backup process

func NewBackupHandler

func NewBackupHandler(arguments BackupArguments) (bh *BackupHandler, err error)

NewBackupHandler returns a backup handler object, which can handle the backup

func (*BackupHandler) HandleBackupPush

func (bh *BackupHandler) HandleBackupPush()

HandleBackupPush handles the backup being read from filesystem and being pushed to the repository

type BackupSentinelDto

type BackupSentinelDto struct {
	RestorePoint *string           `json:"restore_point,omitempty"`
	Segments     []SegmentMetadata `json:"segments,omitempty"`
	UserData     interface{}       `json:"user_data,omitempty"`

	StartTime        time.Time `json:"start_time"`
	FinishTime       time.Time `json:"finish_time"`
	Hostname         string    `json:"hostname"`
	GpVersion        string    `json:"gp_version"`
	IsPermanent      bool      `json:"is_permanent"`
	SystemIdentifier *uint64   `json:"system_identifier"`

	UncompressedSize int64 `json:"uncompressed_size"`
	CompressedSize   int64 `json:"compressed_size"`
}

BackupSentinelDto describes file structure of json sentinel

func NewBackupSentinelDto

func NewBackupSentinelDto(currBackupInfo CurrBackupInfo, restoreLSNs map[int]string, userData interface{},
	isPermanent bool) BackupSentinelDto

NewBackupSentinelDto returns new BackupSentinelDto instance

func (*BackupSentinelDto) String

func (s *BackupSentinelDto) String() string

type BackupWorkers

type BackupWorkers struct {
	Uploader *internal.Uploader
	Conn     *pgx.Conn
}

BackupWorkers holds the external objects that the handler uses to get the backup data / write the backup data

type ClusterRestoreConfig

type ClusterRestoreConfig struct {
	Segments map[int]SegmentRestoreConfig `json:"segments"`
}

ClusterRestoreConfig is used to describe the restored cluster

type CurrBackupInfo

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

CurrBackupInfo holds all information that is harvest during the backup process

type DeleteHandler

type DeleteHandler struct {
	internal.DeleteHandler
	// contains filtered or unexported fields
}

func NewDeleteHandler

func NewDeleteHandler(folder storage.Folder) (*DeleteHandler, error)

func (*DeleteHandler) DeleteBeforeTarget

func (h *DeleteHandler) DeleteBeforeTarget(target internal.BackupObject, confirmed bool) error

func (*DeleteHandler) HandleDeleteBefore

func (h *DeleteHandler) HandleDeleteBefore(args []string, confirmed bool)

func (*DeleteHandler) HandleDeleteEverything

func (h *DeleteHandler) HandleDeleteEverything(args []string, confirmed bool)

func (*DeleteHandler) HandleDeleteRetain

func (h *DeleteHandler) HandleDeleteRetain(args []string, confirmed bool)

func (*DeleteHandler) HandleDeleteRetainAfter

func (h *DeleteHandler) HandleDeleteRetainAfter(args []string, confirmed bool)

type FetchHandler

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

func NewFetchHandler

func NewFetchHandler(backup internal.Backup, sentinel BackupSentinelDto, restoreCfg ClusterRestoreConfig, logsDir string) *FetchHandler

func (*FetchHandler) Fetch

func (fh *FetchHandler) Fetch() error

type GenericMetaFetcher

type GenericMetaFetcher struct{}

func NewGenericMetaFetcher

func NewGenericMetaFetcher() GenericMetaFetcher

func (GenericMetaFetcher) Fetch

func (mf GenericMetaFetcher) Fetch(backupName string, backupFolder storage.Folder) (internal.GenericMetadata, error)

type GenericMetaInteractor

type GenericMetaInteractor struct {
	GenericMetaFetcher
	GenericMetaSetter
}

func NewGenericMetaInteractor

func NewGenericMetaInteractor() GenericMetaInteractor

type GenericMetaSetter

type GenericMetaSetter struct{}

func NewGenericMetaSetter

func NewGenericMetaSetter() GenericMetaSetter

func (GenericMetaSetter) SetIsPermanent

func (ms GenericMetaSetter) SetIsPermanent(backupName string, backupFolder storage.Folder, isPermanent bool) error

func (GenericMetaSetter) SetUserData

func (ms GenericMetaSetter) SetUserData(backupName string, backupFolder storage.Folder, userData interface{}) error

type GpQueryRunner

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

GpQueryRunner is implementation for controlling Greenplum

func NewGpQueryRunner

func NewGpQueryRunner(conn *pgx.Conn) (*GpQueryRunner, error)

NewGpQueryRunner builds QueryRunner from available connection

func (*GpQueryRunner) AbortBackup

func (queryRunner *GpQueryRunner) AbortBackup() (err error)

AbortBackup stops the backup process on all segments

func (*GpQueryRunner) CreateGreenplumRestorePoint

func (queryRunner *GpQueryRunner) CreateGreenplumRestorePoint(restorePointName string) (restoreLSNs map[int]string, err error)

CreateGreenplumRestorePoint creates a restore point

func (*GpQueryRunner) GetGreenplumSegmentsInfo

func (queryRunner *GpQueryRunner) GetGreenplumSegmentsInfo(semVer semver.Version) (segments []cluster.SegConfig, err error)

GetGreenplumSegmentsInfo returns the information about segments

func (*GpQueryRunner) GetGreenplumVersion

func (queryRunner *GpQueryRunner) GetGreenplumVersion() (version string, err error)

GetGreenplumVersion returns version

func (*GpQueryRunner) IsInBackup

func (queryRunner *GpQueryRunner) IsInBackup() (isInBackupByContentID map[int]bool, err error)

IsInBackup check if there is backup running

type PgHbaMaker

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

func NewPgHbaMaker

func NewPgHbaMaker(segments map[int][]*cluster.SegConfig) PgHbaMaker

func (PgHbaMaker) Make

func (m PgHbaMaker) Make() (string, error)

type PgSegmentMetaDto

type PgSegmentMetaDto struct {
	postgres.ExtendedMetadataDto
	BackupName string
}

PgSegmentMetaDto is used during the initial fetching of the segment backup metadata

type RecoveryConfigMaker

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

func NewRecoveryConfigMaker

func NewRecoveryConfigMaker(walgBinaryPath, cfgPath, recoveryTargetName string) RecoveryConfigMaker

func (RecoveryConfigMaker) Make

func (m RecoveryConfigMaker) Make(contentID int) string

type SegmentFwdArg

type SegmentFwdArg struct {
	Name  string
	Value string
}

SegmentFwdArg describes the specific WAL-G arguments that is going to be forwarded to the segments

type SegmentMetadata

type SegmentMetadata struct {
	DatabaseID int         `json:"db_id"`
	ContentID  int         `json:"content_id"`
	Role       SegmentRole `json:"role"`
	Port       int         `json:"port"`
	Hostname   string      `json:"hostname"`
	DataDir    string      `json:"data_dir"`

	BackupID        string `json:"backup_id"`
	BackupName      string `json:"backup_name"`
	RestorePointLSN string `json:"restore_point_lsn"`
}

func NewSegmentMetadata

func NewSegmentMetadata(backupID string, segCfg cluster.SegConfig, restoreLSN, backupName string) SegmentMetadata

func (SegmentMetadata) ToSegConfig

func (c SegmentMetadata) ToSegConfig() cluster.SegConfig

type SegmentRestoreConfig

type SegmentRestoreConfig struct {
	Hostname string `json:"hostname"`
	Port     int    `json:"port"`
	DataDir  string `json:"data_dir"`
}

type SegmentRole

type SegmentRole string
const (
	Primary SegmentRole = "p"
	Mirror  SegmentRole = "m"
)

type SegmentUserData

type SegmentUserData struct {
	ID string `json:"id"`
}

func NewSegmentUserData

func NewSegmentUserData() SegmentUserData

func NewSegmentUserDataFromID

func NewSegmentUserDataFromID(backupID string) SegmentUserData

func (SegmentUserData) QuotedString

func (d SegmentUserData) QuotedString() string

QuotedString will do json.Marshal-ing followed by quoting in order to escape special control characters in the resulting JSON so it can be transferred as the cmdline argument to a segment

func (SegmentUserData) String

func (d SegmentUserData) String() string

Jump to

Keyboard shortcuts

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