2021-01-07 15:03:16 +00:00
|
|
|
// Copyright (C) 2021 Storj Labs, Inc.
|
|
|
|
// See LICENSE for copying information.
|
|
|
|
|
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
2021-01-22 12:46:08 +00:00
|
|
|
"flag"
|
2021-02-09 12:06:18 +00:00
|
|
|
"log"
|
2021-01-07 15:03:16 +00:00
|
|
|
|
|
|
|
"go.uber.org/zap"
|
2021-01-22 12:46:08 +00:00
|
|
|
"go.uber.org/zap/zapcore"
|
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
|
|
|
defaultReadBatchSize = 3000000
|
|
|
|
defaultWriteBatchSize = 100
|
|
|
|
defaultWriteParallelLimit = 6
|
|
|
|
defaultPreGeneratedStreamIDs = 100
|
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
|
|
|
cpuprofile = flag.String("cpuprofile", "", "write cpu profile to file")
|
|
|
|
|
|
|
|
readBatchSize = flag.Int("readBatchSize", defaultReadBatchSize, "batch size for selecting pointers from DB")
|
|
|
|
writeBatchSize = flag.Int("writeBatchSize", defaultWriteBatchSize, "batch size for inserting objects and segments")
|
|
|
|
writeParallelLimit = flag.Int("writeParallelLimit", defaultWriteParallelLimit, "limit of parallel batch writes")
|
|
|
|
preGeneratedStreamIDs = flag.Int("preGeneratedStreamIDs", defaultPreGeneratedStreamIDs, "number of pre generated stream ids for segment")
|
2021-02-09 12:06:18 +00:00
|
|
|
nodes = flag.String("nodes", "", "file with nodes ids")
|
2021-01-22 12:46:08 +00:00
|
|
|
|
|
|
|
pointerdb = flag.String("pointerdb", "", "connection URL for PointerDB")
|
|
|
|
metabasedb = flag.String("metabasedb", "", "connection URL for MetabaseDB")
|
2021-01-07 15:03:16 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
func main() {
|
2021-01-22 12:46:08 +00:00
|
|
|
flag.Parse()
|
|
|
|
|
|
|
|
if *pointerdb == "" {
|
2021-02-09 12:06:18 +00:00
|
|
|
log.Fatalln("Flag '--pointerdb' is not set")
|
2021-01-22 12:46:08 +00:00
|
|
|
}
|
|
|
|
if *metabasedb == "" {
|
2021-02-09 12:06:18 +00:00
|
|
|
log.Fatalln("Flag '--metabasedb' is not set")
|
2021-01-07 15:03:16 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
ctx := context.Background()
|
2021-01-22 12:46:08 +00:00
|
|
|
log, err := zap.Config{
|
|
|
|
Encoding: "console",
|
|
|
|
Level: zap.NewAtomicLevelAt(zapcore.DebugLevel),
|
|
|
|
OutputPaths: []string{"stdout"},
|
|
|
|
ErrorOutputPaths: []string{"stdout"},
|
|
|
|
EncoderConfig: zapcore.EncoderConfig{
|
|
|
|
LevelKey: "L",
|
|
|
|
NameKey: "N",
|
|
|
|
CallerKey: "C",
|
|
|
|
MessageKey: "M",
|
|
|
|
StacktraceKey: "S",
|
|
|
|
LineEnding: zapcore.DefaultLineEnding,
|
|
|
|
EncodeLevel: zapcore.CapitalLevelEncoder,
|
|
|
|
EncodeTime: zapcore.ISO8601TimeEncoder,
|
|
|
|
EncodeDuration: zapcore.StringDurationEncoder,
|
|
|
|
EncodeCaller: zapcore.ShortCallerEncoder,
|
|
|
|
},
|
|
|
|
}.Build()
|
|
|
|
if err != nil {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
defer func() { _ = log.Sync() }()
|
|
|
|
|
|
|
|
config := Config{
|
|
|
|
PreGeneratedStreamIDs: *preGeneratedStreamIDs,
|
|
|
|
ReadBatchSize: *readBatchSize,
|
|
|
|
WriteBatchSize: *writeBatchSize,
|
|
|
|
WriteParallelLimit: *writeParallelLimit,
|
2021-02-09 12:06:18 +00:00
|
|
|
Nodes: *nodes,
|
2021-01-22 12:46:08 +00:00
|
|
|
}
|
|
|
|
migrator := NewMigrator(log, *pointerdb, *metabasedb, config)
|
|
|
|
err = migrator.MigrateProjects(ctx)
|
2021-01-07 15:03:16 +00:00
|
|
|
if err != nil {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|