backup

package
v7.0.4 Latest Latest
Warning

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

Go to latest
Published: Jan 30, 2023 License: Apache-2.0, Apache-2.0 Imports: 53 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// DefaultSchemaConcurrency is the default number of the concurrent
	// backup schema tasks.
	DefaultSchemaConcurrency = 64
)

Variables

This section is empty.

Functions

func BuildTableRanges

func BuildTableRanges(tbl *model.TableInfo) ([]kv.KeyRange, error)

BuildTableRanges returns the key ranges encompassing the entire table, and its partitions if exists.

func CheckBackupStorageIsLocked

func CheckBackupStorageIsLocked(ctx context.Context, s storage.ExternalStorage) error

CheckBackupStorageIsLocked checks whether backups is locked. which means we found other backup progress already write some data files into the same backup directory or cloud prefix.

func OnBackupResponse

func OnBackupResponse(
	storeID uint64,
	bo *tikv.Backoffer,
	backupTS uint64,
	lockResolver *txnlock.LockResolver,
	resp *backuppb.BackupResponse,
) (*backuppb.BackupResponse, int, error)

OnBackupResponse checks the backup resp, decides whether to retry and generate the error.

func SendBackup

func SendBackup(
	ctx context.Context,

	storeID uint64,
	client backuppb.BackupClient,
	req backuppb.BackupRequest,
	respFn func(*backuppb.BackupResponse) error,
	resetFn func() (backuppb.BackupClient, error),
) error

SendBackup send backup request to the given store. Stop receiving response if respFn returns error.

func WriteBackupDDLJobs

func WriteBackupDDLJobs(metaWriter *metautil.MetaWriter, g glue.Glue, store kv.Storage, lastBackupTS, backupTS uint64, needDomain bool) error

WriteBackupDDLJobs sends the ddl jobs are done in (lastBackupTS, backupTS] to metaWriter.

Types

type Checksum

type Checksum struct {
	Crc64Xor   uint64
	TotalKvs   uint64
	TotalBytes uint64
}

Checksum is the checksum of some backup files calculated by CollectChecksums.

type Client

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

Client is a client instructs TiKV how to do a backup.

func NewBackupClient

func NewBackupClient(ctx context.Context, mgr ClientMgr) *Client

NewBackupClient returns a new backup client.

func (*Client) BackupRange

func (bc *Client) BackupRange(
	ctx context.Context,
	request backuppb.BackupRequest,
	progressRange *rtree.ProgressRange,
	metaWriter *metautil.MetaWriter,
	progressCallBack func(ProgressUnit),
) (err error)

BackupRange make a backup of the given key range. Returns an array of files backed up.

func (*Client) BackupRanges

func (bc *Client) BackupRanges(
	ctx context.Context,
	ranges []rtree.Range,
	request backuppb.BackupRequest,
	concurrency uint,
	metaWriter *metautil.MetaWriter,
	progressCallBack func(ProgressUnit),
) error

BackupRanges make a backup of the given key ranges.

func (*Client) BuildBackupRangeAndSchema

func (bc *Client) BuildBackupRangeAndSchema(
	storage kv.Storage,
	tableFilter filter.Filter,
	backupTS uint64,
	isFullBackup bool,
) ([]rtree.Range, *Schemas, []*backuppb.PlacementPolicy, error)

Client.BuildBackupRangeAndSchema calls BuildBackupRangeAndSchema, if the checkpoint mode is used, return the ranges from checkpoint meta

func (*Client) CheckCheckpoint

func (bc *Client) CheckCheckpoint(hash []byte) error

CheckCheckpoint check whether the configs are the same

func (*Client) GetApiVersion

func (bc *Client) GetApiVersion() kvrpcpb.APIVersion

GetApiVersion sets api version of the TiKV storage

func (*Client) GetCheckpointRunner

func (bc *Client) GetCheckpointRunner() *checkpoint.CheckpointRunner

func (*Client) GetClusterID

func (bc *Client) GetClusterID() uint64

GetClusterID returns the cluster ID of the tidb cluster to backup.

func (*Client) GetCurerntTS

func (bc *Client) GetCurerntTS(ctx context.Context) (uint64, error)

GetTS gets a new timestamp from PD.

func (*Client) GetGCTTL

func (bc *Client) GetGCTTL() int64

GetGCTTL get gcTTL for this backup.

func (*Client) GetProgressRange

func (bc *Client) GetProgressRange(r rtree.Range) (*rtree.ProgressRange, error)

GetProgressRange loads the checkpoint(finished) sub-ranges of the current range, and calculate its incompleted sub-ranges.

func (*Client) GetSafePointID

func (bc *Client) GetSafePointID() string

GetSafePointID get the gc-safe-point's service-id from either checkpoint or immediate generation

func (*Client) GetStorage

func (bc *Client) GetStorage() storage.ExternalStorage

GetStorage gets storage for this backup.

func (*Client) GetStorageBackend

func (bc *Client) GetStorageBackend() *backuppb.StorageBackend

GetStorageBackend gets storage backupend field in client.

func (*Client) GetTS

func (bc *Client) GetTS(ctx context.Context, duration time.Duration, ts uint64) (uint64, error)

GetTS returns the latest timestamp.

func (*Client) SetApiVersion

func (bc *Client) SetApiVersion(v kvrpcpb.APIVersion)

SetApiVersion sets api version of the TiKV storage

func (*Client) SetCipher

func (bc *Client) SetCipher(cipher *backuppb.CipherInfo)

SetCipher for checkpoint to encrypt sst file's metadata

func (*Client) SetGCTTL

func (bc *Client) SetGCTTL(ttl int64)

SetGCTTL set gcTTL for client.

func (*Client) SetLockFile

func (bc *Client) SetLockFile(ctx context.Context) error

SetLockFile set write lock file.

func (*Client) SetStorage

func (bc *Client) SetStorage(
	ctx context.Context,
	backend *backuppb.StorageBackend,
	opts *storage.ExternalStorageOptions,
) error

SetStorage sets ExternalStorage for client.

func (*Client) SetStorageAndCheckNotInUse

func (bc *Client) SetStorageAndCheckNotInUse(
	ctx context.Context,
	backend *backuppb.StorageBackend,
	opts *storage.ExternalStorageOptions,
) error

SetStorageAndCheckNotInUse sets ExternalStorage for client and check storage not in used by others.

func (*Client) StartCheckpointRunner

func (bc *Client) StartCheckpointRunner(
	ctx context.Context,
	cfgHash []byte,
	backupTS uint64,
	ranges []rtree.Range,
	safePointID string,
	progressCallBack func(ProgressUnit),
) (err error)

StartCheckpointMeta will 1. saves the initial status into the external storage; 2. load the checkpoint data from external storage 3. start checkpoint runner

func (*Client) WaitForFinishCheckpoint

func (bc *Client) WaitForFinishCheckpoint(ctx context.Context)

type ClientMgr

type ClientMgr interface {
	GetBackupClient(ctx context.Context, storeID uint64) (backuppb.BackupClient, error)
	ResetBackupClient(ctx context.Context, storeID uint64) (backuppb.BackupClient, error)
	GetPDClient() pd.Client
	GetLockResolver() *txnlock.LockResolver
	Close()
}

ClientMgr manages connections needed by backup.

type ProgressUnit

type ProgressUnit string

ProgressUnit represents the unit of progress.

const (

	// RangeUnit represents the progress updated counter when a range finished.
	RangeUnit ProgressUnit = "range"
	// RegionUnit represents the progress updated counter when a region finished.
	RegionUnit ProgressUnit = "region"
)

Maximum total sleep time(in ms) for kv/cop commands.

type Schemas

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

Schemas is task for backuping schemas.

func BuildBackupRangeAndSchema

func BuildBackupRangeAndSchema(
	storage kv.Storage,
	tableFilter filter.Filter,
	backupTS uint64,
	isFullBackup bool,
	buildRange bool,
) ([]rtree.Range, *Schemas, []*backuppb.PlacementPolicy, error)

BuildBackupRangeAndSchema gets KV range and schema of tables. KV ranges are separated by Table IDs. Also, KV ranges are separated by Index IDs in the same table.

func BuildFullSchema

func BuildFullSchema(storage kv.Storage, backupTS uint64) (*Schemas, error)

BuildFullSchema builds a full backup schemas for databases and tables.

func NewBackupSchemas

func NewBackupSchemas() *Schemas

func (*Schemas) AddSchema

func (ss *Schemas) AddSchema(
	dbInfo *model.DBInfo, tableInfo *model.TableInfo,
)

func (*Schemas) BackupSchemas

func (ss *Schemas) BackupSchemas(
	ctx context.Context,
	metaWriter *metautil.MetaWriter,
	checkpointRunner *checkpoint.CheckpointRunner,
	store kv.Storage,
	statsHandle *handle.Handle,
	backupTS uint64,
	concurrency uint,
	copConcurrency uint,
	skipChecksum bool,
	updateCh glue.Progress,
) error

BackupSchemas backups table info, including checksum and stats.

func (*Schemas) Len

func (ss *Schemas) Len() int

Len returns the number of schemas.

func (*Schemas) SetCheckpointChecksum

func (ss *Schemas) SetCheckpointChecksum(checkpointChecksum map[int64]*checkpoint.ChecksumItem)

Jump to

Keyboard shortcuts

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