diff --git a/cmd/cgr-migrator/cgr-migrator.go b/cmd/cgr-migrator/cgr-migrator.go index 415fc349a..16e61765d 100755 --- a/cmd/cgr-migrator/cgr-migrator.go +++ b/cmd/cgr-migrator/cgr-migrator.go @@ -80,32 +80,42 @@ func main() { return } if migrate != nil && *migrate != "" { // Run migrator + dataDB, err := engine.ConfigureDataStorage(*dataDBType, *dataDBHost, *dataDBPort, *dataDBName, *dataDBUser, *dataDBPass, *dbDataEncoding, config.CgrConfig().CacheConfig, *loadHistorySize) if err != nil { log.Fatal(err) } + log.Print("#1 The redis db loaded") oldDataDB, err := engine.ConfigureDataStorage(*oldDataDBType, *oldDataDBHost, *oldDataDBPort, *oldDataDBName, *oldDataDBUser, *oldDataDBPass, *oldDBDataEncoding, config.CgrConfig().CacheConfig, *oldLoadHistorySize) if err != nil { log.Fatal(err) } + log.Print("#2 Old redis db loaded") storDB, err := engine.ConfigureStorStorage(*storDBType, *storDBHost, *storDBPort, *storDBName, *storDBUser, *storDBPass, *dbDataEncoding, config.CgrConfig().StorDBMaxOpenConns, config.CgrConfig().StorDBMaxIdleConns, config.CgrConfig().StorDBConnMaxLifetime, config.CgrConfig().StorDBCDRSIndexes) if err != nil { log.Fatal(err) } + log.Print("#3 Old mysql db loaded") + oldstorDB, err := engine.ConfigureStorStorage(*oldStorDBType, *oldStorDBHost, *oldStorDBPort, *oldStorDBName, *oldStorDBUser, *oldStorDBPass, *oldDBDataEncoding, config.CgrConfig().StorDBMaxOpenConns, config.CgrConfig().StorDBMaxIdleConns, config.CgrConfig().StorDBConnMaxLifetime, config.CgrConfig().StorDBCDRSIndexes) if err != nil { log.Fatal(err) } + log.Print("#4 Old mysql db loaded") + m,err := migrator.NewMigrator(dataDB, *dataDBType, *dbDataEncoding, storDB, *storDBType,oldDataDB,*oldDataDBType,*oldDBDataEncoding,oldstorDB,*oldStorDBType) if err != nil { log.Fatal(err) } - if err:=m.Migrate(*migrate); err != nil { + log.Print("#5 Migrator started") + err = m.Migrate(*migrate); + if err != nil { log.Fatal(err) } + log.Print("Done migrating!") return } - } +} diff --git a/config/config_defaults.go b/config/config_defaults.go index 35baf29fb..28897814e 100755 --- a/config/config_defaults.go +++ b/config/config_defaults.go @@ -86,7 +86,7 @@ const CGRATES_CFG_JSON = ` "data_db": { // database used to store runtime data (eg: accounts, cdr stats) "db_type": "redis", // data_db type: - "db_host": "127.0.0.1", // data_db host address + "db_host": "192.168.100.40", // data_db host address "db_port": 6379, // data_db port to reach the database "db_name": "10", // data_db database name to connect to "db_user": "cgrates", // username to use when connecting to data_db @@ -97,11 +97,11 @@ const CGRATES_CFG_JSON = ` "stor_db": { // database used to store offline tariff plans and CDRs "db_type": "mysql", // stor database type to use: - "db_host": "127.0.0.1", // the host to connect to + "db_host": "192.168.100.40", // the host to connect to "db_port": 3306, // the port to reach the stordb "db_name": "cgrates", // stor database name "db_user": "cgrates", // username to use when connecting to stordb - "db_password": "", // password to use when connecting to stordb + "db_password": "CGRateS.org", // password to use when connecting to stordb "max_open_conns": 100, // maximum database connections opened, not applying for mongo "max_idle_conns": 10, // maximum database connections idle, not applying for mongo "conn_max_lifetime": 0, // maximum amount of time in seconds a connection may be reused (0 for unlimited), not applying for mongo diff --git a/data/conf/samples/tutmysql/cgrates.json b/data/conf/samples/tutmysql/cgrates.json index 0e263938b..934bf8192 100644 --- a/data/conf/samples/tutmysql/cgrates.json +++ b/data/conf/samples/tutmysql/cgrates.json @@ -13,12 +13,31 @@ "rpc_gob": ":2013", "http": ":2080", }, +"data_db": { // database used to store runtime data (eg: accounts, cdr stats) + "db_type": "redis", // data_db type: + "db_host": "192.168.100.40", // data_db host address + "db_port": 6379, // data_db port to reach the database + "db_name": "10", // data_db database name to connect to + "db_user": "cgrates", // username to use when connecting to data_db + "db_password": "", // password to use when connecting to data_db + "load_history_size": 10, // Number of records in the load history +}, "stor_db": { // database used to store offline tariff plans and CDRs - "db_password": "CGRateS.org", // password to use when connecting to stordb + "db_type": "mysql", // stor database type to use: + "db_host": "192.168.100.40", // the host to connect to + "db_port": 3306, // the port to reach the stordb + "db_name": "cgrates", // stor database name + "db_user": "cgrates", // username to use when connecting to stordb + "db_password": "CGRateS.org", // password to use when connecting to stordb + "max_open_conns": 100, // maximum database connections opened, not applying for mongo + "max_idle_conns": 10, // maximum database connections idle, not applying for mongo + "conn_max_lifetime": 0, // maximum amount of time in seconds a connection may be reused (0 for unlimited), not applying for mongo + "cdrs_indexes": [], // indexes on cdrs table to speed up queries, used only in case of mongo }, + "cache":{ "destinations": {"limit": 10000, "ttl":"0s", "precache": true}, "reverse_destinations": {"limit": 10000, "ttl":"0s", "precache": true}, diff --git a/migrator/accounts.go b/migrator/accounts.go index ddaee799f..5cece15bd 100755 --- a/migrator/accounts.go +++ b/migrator/accounts.go @@ -36,16 +36,21 @@ const ( func (m *Migrator) migrateAccounts() (err error) { switch m.dataDBType { case utils.REDIS: + log.Print("#9 Starts migrateAccounts") var acntV1Keys []string acntV1Keys, err = m.oldDataDB.GetKeysForPrefix(v1AccountDBPrefix) if err != nil { return } + log.Print("#10 it doesn't get to here",acntV1Keys) + for _, acntV1Key := range acntV1Keys { + log.Print("#11 acc key:",acntV1Key) v1Acnt, err := m.getV1AccountFromDB(acntV1Key) if err != nil { return err } + log.Print("#8 it doesn't get to here") if v1Acnt != nil { acnt := v1Acnt.AsAccount() if err = m.dataDB.SetAccount(acnt); err != nil { @@ -53,6 +58,7 @@ func (m *Migrator) migrateAccounts() (err error) { } } } + log.Print("#8 it doesn't get to here") // All done, update version wtih current one vrs := engine.Versions{utils.Accounts: engine.CurrentStorDBVersions()[utils.Accounts]} if err = m.dataDB.SetVersions(vrs, false); err != nil { @@ -61,6 +67,7 @@ func (m *Migrator) migrateAccounts() (err error) { err.Error(), fmt.Sprintf("error: <%s> when updating Accounts version into StorDB", err.Error())) } + log.Print("#8 it doesn't get to here") return case utils.MONGO: dataDB := m.dataDB.(*engine.MongoStorage) @@ -93,20 +100,25 @@ func (m *Migrator) migrateAccounts() (err error) { } func (m *Migrator) getV1AccountFromDB(key string) (*v1Account, error) { - switch m.dataDBType { + switch m.oldDataDBType { case utils.REDIS: - dataDB := m.dataDB.(*engine.RedisStorage) + log.Print("#12 start get ") + dataDB := m.oldDataDB.(*engine.RedisStorage) + log.Print("#12 start get") if strVal, err := dataDB.Cmd("GET", key).Bytes(); err != nil { return nil, err } else { + log.Print("#12 start get") v1Acnt := &v1Account{Id: key} - if err := m.oldmrshlr.Unmarshal(strVal, v1Acnt); err != nil { + log.Print("#12 start get") + if err := m.mrshlr.Unmarshal(strVal, v1Acnt); err != nil { return nil, err } + log.Print("#12 start get") return v1Acnt, nil } case utils.MONGO: - dataDB := m.dataDB.(*engine.MongoStorage) + dataDB := m.oldDataDB.(*engine.MongoStorage) mgoDB := dataDB.DB() defer mgoDB.Session.Close() v1Acnt := new(v1Account) @@ -118,7 +130,7 @@ func (m *Migrator) getV1AccountFromDB(key string) (*v1Account, error) { return nil, utils.NewCGRError(utils.Migrator, utils.ServerErrorCaps, utils.UnsupportedDB, - fmt.Sprintf("error: unsupported: <%s> for getV1AccountFromDB method", m.dataDBType)) + fmt.Sprintf("error: unsupported: <%s> for getV1AccountFromDB method", m.oldDataDBType)) } } diff --git a/migrator/migrator.go b/migrator/migrator.go index 77429e9e8..0bd0a72c1 100755 --- a/migrator/migrator.go +++ b/migrator/migrator.go @@ -19,7 +19,7 @@ package migrator import ( "fmt" - + "log" "github.com/cgrates/cgrates/engine" "github.com/cgrates/cgrates/utils" ) @@ -76,6 +76,7 @@ func (m *Migrator) Migrate(taskID string) (err error) { case utils.MetaCostDetails: err = m.migrateCostDetails() case utils.MetaAccounts: + log.Print("#7 function is about to start") err = m.migrateAccounts() case "migrateActionPlans": err = m.migrateActionPlans()