copydb

package
v0.0.0-...-5297aa6 Latest Latest
Warning

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

Go to latest
Published: Mar 13, 2024 License: MIT Imports: 6 Imported by: 3

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	*ghostferry.Config

	// Filter configuration for databases to copy
	Databases FilterAndRewriteConfigs

	// Filter configuration for tables to copy
	Tables FilterAndRewriteConfigs

	// Specifies the order in which to create database tables as <db>.<table> .
	// Names refer to original databases and tables (that is, before renaming
	// occurs).
	// If a table is to be created on start and appears in this list, it is
	// created before any other table, and is created in the order listed here.
	// All tables not specified in this list are created in arbitrary order.
	//
	// Note: if used to overcome foreign key restrictions, ensure SkipForeignKeyConstraintsCheck is true.
	TablesToBeCreatedFirst []string

	// If you're running Ghostferry from a read only replica, turn this option
	// on and specify SourceReplicationMaster and ReplicatedMasterPositionQuery.
	RunFerryFromReplica bool

	// This is the configuration to connect to the master writer of the source DB.
	// This is only used if the source db is a replica and RunFerryFromReplica
	// is on.
	SourceReplicationMaster *ghostferry.DatabaseConfig

	// This is the SQL query used to read the position of the master binlog that
	// has been replicated to the Source. As an example, you can query the
	// pt-heartbeat table:
	//
	// SELECT file, position FROM meta.ptheartbeat WHERE server_id = master_server_id
	ReplicatedMasterPositionQuery string

	// The duration to wait for the replication to catchup before aborting. Only use if RunFerryFromReplica is true.
	WaitForReplicationTimeout string

	// Ghostferry will by default create tables on your target and fail if these already exist.
	// This allows pre-existing tables on your target, schemas and data compatibility won't be validated.
	// Use at your own risk.
	AllowExistingTargetTable bool
}

func (*Config) InitializeAndValidateConfig

func (c *Config) InitializeAndValidateConfig() error

type CopydbFerry

type CopydbFerry struct {
	Ferry *ghostferry.Ferry
	// contains filtered or unexported fields
}

func NewFerry

func NewFerry(config *Config) *CopydbFerry

func (*CopydbFerry) CreateDatabasesAndTables

func (this *CopydbFerry) CreateDatabasesAndTables() error

func (*CopydbFerry) Initialize

func (this *CopydbFerry) Initialize() error

func (*CopydbFerry) Run

func (this *CopydbFerry) Run()

func (*CopydbFerry) Start

func (this *CopydbFerry) Start() error

type FilterAndRewriteConfigs

type FilterAndRewriteConfigs struct {
	// Whitelisted databases/tables. Mutually exclusive with Blacklist as it will
	// result in an error.
	Whitelist []string

	// Blacklisted databases/tables. Mutually exclusive with Whitelist as it will
	// result in an error.
	Blacklist []string

	// Allows database/tables to be renamed from source to the target, where the
	// key of this map is the database/table names on the source database and the
	// value of the map is on the database/table names target database.
	Rewrites map[string]string
}

Whitelisting and blacklisting databases/tables to copy. Also allows to rename databases/tables during the copy process.

If this is empty for a filter, it means to not filter for anything and thus whitelist everything.

func (FilterAndRewriteConfigs) Validate

func (f FilterAndRewriteConfigs) Validate() error

type StaticTableFilter

type StaticTableFilter struct {
	Dbs            []string
	DbsIsBlacklist bool

	Tables            []string
	TablesIsBlacklist bool
}

func NewStaticTableFilter

func NewStaticTableFilter(dbs, tables FilterAndRewriteConfigs) *StaticTableFilter

func (*StaticTableFilter) ApplicableDatabases

func (s *StaticTableFilter) ApplicableDatabases(dbs []string) ([]string, error)

func (*StaticTableFilter) ApplicableTables

func (s *StaticTableFilter) ApplicableTables(tables []*ghostferry.TableSchema) ([]*ghostferry.TableSchema, error)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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