package entity import ( "mayfly-go/pkg/runner" "time" ) const ( BinlogDownloadInterval = time.Minute * 15 ) // BinlogFile is the metadata of the MySQL binlog file. type BinlogFile struct { Name string Size int64 // Sequence is parsed from Name and is for the sorting purpose. Sequence int64 FirstEventTime time.Time LastEventTime time.Time Downloaded bool } var _ DbJob = (*DbBinlog)(nil) // DbBinlog 数据库备份任务 type DbBinlog struct { DbJobBaseImpl } func NewDbBinlog(instanceId uint64) *DbBinlog { job := &DbBinlog{} job.Id = instanceId job.DbInstanceId = instanceId return job } func (b *DbBinlog) GetDbName() string { // binlog 是全库级别的 return "" } func (b *DbBinlog) Schedule() (time.Time, error) { switch b.GetJobBase().LastStatus { case DbJobSuccess: return time.Time{}, runner.ErrJobFinished case DbJobFailed: return time.Now().Add(BinlogDownloadInterval), nil default: return time.Now(), nil } } func (b *DbBinlog) Update(_ runner.Job) {} func (b *DbBinlog) IsEnabled() bool { return true } func (b *DbBinlog) SetEnabled(_ bool) {} func (b *DbBinlog) GetInterval() time.Duration { return 0 }