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; }
public DbConnection(MySQLCredentialsConfig config) { Host = config.host; port = config.port; username = config.username; password = config.password; database = config.database; }
/// <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); }