supporting --timestamp-old-table
This commit is contained in:
parent
8605463c77
commit
8db8e127eb
@ -121,6 +121,7 @@ type MigrationContext struct {
|
|||||||
OkToDropTable bool
|
OkToDropTable bool
|
||||||
InitiallyDropOldTable bool
|
InitiallyDropOldTable bool
|
||||||
InitiallyDropGhostTable bool
|
InitiallyDropGhostTable bool
|
||||||
|
TimestampOldTable bool // Should old table name include a timestamp
|
||||||
CutOverType CutOver
|
CutOverType CutOver
|
||||||
ReplicaServerId uint
|
ReplicaServerId uint
|
||||||
|
|
||||||
@ -234,11 +235,12 @@ func (this *MigrationContext) GetGhostTableName() string {
|
|||||||
|
|
||||||
// GetOldTableName generates the name of the "old" table, into which the original table is renamed.
|
// GetOldTableName generates the name of the "old" table, into which the original table is renamed.
|
||||||
func (this *MigrationContext) GetOldTableName() string {
|
func (this *MigrationContext) GetOldTableName() string {
|
||||||
if this.TestOnReplica {
|
if this.TimestampOldTable {
|
||||||
return fmt.Sprintf("_%s_ght", this.OriginalTableName)
|
t := this.StartTime
|
||||||
}
|
timestamp := fmt.Sprintf("%d%02d%02d%02d%02d%02d",
|
||||||
if this.MigrateOnReplica {
|
t.Year(), t.Month(), t.Day(),
|
||||||
return fmt.Sprintf("_%s_ghr", this.OriginalTableName)
|
t.Hour(), t.Minute(), t.Second())
|
||||||
|
return fmt.Sprintf("_%s_%s_del", this.OriginalTableName, timestamp)
|
||||||
}
|
}
|
||||||
return fmt.Sprintf("_%s_del", this.OriginalTableName)
|
return fmt.Sprintf("_%s_del", this.OriginalTableName)
|
||||||
}
|
}
|
||||||
|
@ -77,6 +77,7 @@ func main() {
|
|||||||
flag.BoolVar(&migrationContext.OkToDropTable, "ok-to-drop-table", false, "Shall the tool drop the old table at end of operation. DROPping tables can be a long locking operation, which is why I'm not doing it by default. I'm an online tool, yes?")
|
flag.BoolVar(&migrationContext.OkToDropTable, "ok-to-drop-table", false, "Shall the tool drop the old table at end of operation. DROPping tables can be a long locking operation, which is why I'm not doing it by default. I'm an online tool, yes?")
|
||||||
flag.BoolVar(&migrationContext.InitiallyDropOldTable, "initially-drop-old-table", false, "Drop a possibly existing OLD table (remains from a previous run?) before beginning operation. Default is to panic and abort if such table exists")
|
flag.BoolVar(&migrationContext.InitiallyDropOldTable, "initially-drop-old-table", false, "Drop a possibly existing OLD table (remains from a previous run?) before beginning operation. Default is to panic and abort if such table exists")
|
||||||
flag.BoolVar(&migrationContext.InitiallyDropGhostTable, "initially-drop-ghost-table", false, "Drop a possibly existing Ghost table (remains from a previous run?) before beginning operation. Default is to panic and abort if such table exists")
|
flag.BoolVar(&migrationContext.InitiallyDropGhostTable, "initially-drop-ghost-table", false, "Drop a possibly existing Ghost table (remains from a previous run?) before beginning operation. Default is to panic and abort if such table exists")
|
||||||
|
flag.BoolVar(&migrationContext.TimestampOldTable, "timestamp-old-table", false, "Use a timestamp in old table name. This makes old table names unique and non conflicting cross migrations")
|
||||||
cutOver := flag.String("cut-over", "atomic", "choose cut-over type (default|atomic, two-step)")
|
cutOver := flag.String("cut-over", "atomic", "choose cut-over type (default|atomic, two-step)")
|
||||||
flag.BoolVar(&migrationContext.ForceNamedCutOverCommand, "force-named-cut-over", false, "When true, the 'unpostpone|cut-over' interactive command must name the migrated table")
|
flag.BoolVar(&migrationContext.ForceNamedCutOverCommand, "force-named-cut-over", false, "When true, the 'unpostpone|cut-over' interactive command must name the migrated table")
|
||||||
|
|
||||||
|
@ -85,6 +85,7 @@ test_single() {
|
|||||||
--switch-to-rbr \
|
--switch-to-rbr \
|
||||||
--initially-drop-old-table \
|
--initially-drop-old-table \
|
||||||
--initially-drop-ghost-table \
|
--initially-drop-ghost-table \
|
||||||
|
--timestamp-old-table \
|
||||||
--throttle-query='select timestampdiff(second, min(last_update), now()) < 5 from _gh_ost_test_ghc' \
|
--throttle-query='select timestampdiff(second, min(last_update), now()) < 5 from _gh_ost_test_ghc' \
|
||||||
--serve-socket-file=/tmp/gh-ost.test.sock \
|
--serve-socket-file=/tmp/gh-ost.test.sock \
|
||||||
--initially-drop-socket-file \
|
--initially-drop-socket-file \
|
||||||
|
Loading…
Reference in New Issue
Block a user