Exemple #1
0
        public BinlogDumpCredentialsConfig calculateDumpConfig()
        {
            BinlogDumpCredentialsConfig retConfig = config;
            //<binarylognames>
            MySQLCredentialsConfig myconfig = new MySQLCredentialsConfig();

            myconfig.host     = config.host;
            myconfig.port     = config.port;
            myconfig.username = config.username;
            myconfig.password = config.password;
            myconfig.database = config.database;
            DbConnection dbcon = new DbConnection(myconfig);

            retConfig.logfiles = dbcon.getBinlogfilenames().ToArray();
            //</binarylognames>
            int bpType = 1;

            if (retConfig.isIncrementalDelta)
            {
                bpType = 2;
            }
            try
            {
                string[] res = calculatePrefix(bpType);
                retConfig.prefix        = res[1];
                retConfig.startDateTime = res[0].Replace(',', ':'); //replacing : because it is invalid in filenames
                                                                    //retConfig.prefix += "_" + dbcon.getCurrentDatetime().Replace(':',',');
            }
            catch (Exception ex)
            {
                retConfig.prefix = "Error calculating filename prefix: " + ex.Message;
                Console.WriteLine(ex.StackTrace);
            }
            return(retConfig);
        }
        private async void dumpExecutor()
        {
            MySQLCredentialsConfig cnf = new MySQLCredentialsConfig();

            cnf.host     = config.host;
            cnf.port     = config.port;
            cnf.username = config.username;
            cnf.password = config.password;
            cnf.database = config.database;
            DbConnection con = new DbConnection(cnf);

            if (!con.testConnection().wasSuccessful)
            {
                onError(-1);
                return;
            }
            onProgress("Dumping from binary logs...");
            dumpInstance                   = new BinlogDump();
            dumpInstance.config            = config;
            dumpInstance.CompressStart    += onCompressStartHandler;
            dumpInstance.CompressProgress += onCompressProgressHandler;

            BinlogDumpResultset result = dumpInstance.executeDump();

            onCompleted(result);
            dumpInstance = null;
        }
Exemple #3
0
 public DbConnection(MySQLCredentialsConfig config)
 {
     Host     = config.host;
     port     = config.port;
     username = config.username;
     password = config.password;
     database = config.database;
 }
Exemple #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="bpType">0 = Full Backup 1 = Incremental Backup 2 = Incremental Delta</param>
        /// <returns></returns>
        public string[] calculatePrefix(int bpType)
        {
            string prefix = "";

            //<filename_prefix>
            firedumpdbDataSetTableAdapters.backup_locationsTableAdapter adapter = new firedumpdbDataSetTableAdapters.backup_locationsTableAdapter();
            List <firedumpdbDataSet.backup_locationsRow> locations = new List <firedumpdbDataSet.backup_locationsRow>();

            foreach (int id in locationIds)
            {
                locations.Add(adapter.GetDataByID(id)[0]);
            }

            int index = -1;
            int j     = 0;

            while (index == -1 && j < locations.Count())
            {
                if (locations[j].service_type == 0)
                {
                    index = j;
                }
                j++;
            }

            List <string[]> splitBpFnames = new List <string[]>();

            if (index == -1)
            {
                //periptwsi p den iparxei save location local fix argotera
                string        path      = locations[0].path; //dialegw tixea to prwto location
                string[]      splitpath = StringUtils.splitPath(path);
                List <string> fnames    = new List <string>();
                switch (locations[0].service_type)
                {
                case 1:     //FTP
                    fnames = getFtpDirectoryListing(locations[0], splitpath[0]);
                    break;

                case 2:     //dropbox
                    break;

                case 3:     //google drive
                    break;

                default:
                    break;
                }
                splitBpFnames = getSplitBpFnames(fnames, splitpath[1].Split('_')[0]);
            }
            else
            {
                string        path      = locations[index].path;
                string[]      splitpath = StringUtils.splitPath(path);
                List <string> fnames    = new List <string>();
                foreach (string fname in Directory.GetFiles(splitpath[0]))
                {
                    fnames.Add(fname.Replace(splitpath[0], ""));
                }
                splitBpFnames = getSplitBpFnames(fnames, splitpath[1].Split('_')[0]);

                //Console.WriteLine("path "+splitpath[0]);
                //Console.WriteLine("filename " + splitpath[1]);
            }
            string[] res = new string[2];
            if (splitBpFnames.Count() > 0)
            {
                res     = findNext(splitBpFnames, bpType);
                prefix += res[1];
            }
            else
            {
                prefix += "FB_0.0.0";
            }

            //calculate datetime and add it to prefix in binlog required format
            if (ConfigurationManager.getInstance().binlogConfigInstance.useServerTime)
            {
                MySQLCredentialsConfig myconfig = new MySQLCredentialsConfig();
                myconfig.host     = config.host;
                myconfig.port     = config.port;
                myconfig.username = config.username;
                myconfig.password = config.password;
                myconfig.database = config.database;
                DbConnection dbcon = new DbConnection(myconfig);
                prefix += "_" + dbcon.getCurrentDatetime().Replace(':', ',');
            }
            else
            {
                prefix += "_" + DateTime.Now.ToString("yyyy-M-d HH:mm:ss").Replace(':', ',');
            }


            //</filename_prefix>

            res[1] = prefix;
            return(res);
        }