private void AddPolicy(object parameter) { if (CheckDayOfWeek()) { return; } CurrentPolicy.SelectedTime = (DateTime)parameter;//通过绑定无法获取到值 原因不明 BackUpPolicy policy = Policys.FirstOrDefault(x => x.BackUpType == CurrentPolicy.BackUpType); if (policy == null) { Policys.Add(new BackUpPolicy() { Sunday = CurrentPolicy.Sunday, Monday = CurrentPolicy.Monday, Tuesday = CurrentPolicy.Tuesday, Wednesday = CurrentPolicy.Wednesday, Thursday = CurrentPolicy.Thursday, Friday = CurrentPolicy.Friday, Saturday = CurrentPolicy.Saturday, SelectedTime = CurrentPolicy.SelectedTime, IsTaskBackUpDataBase = CurrentPolicy.IsTaskBackUpDataBase, IsTaskBackUpTables = CurrentPolicy.IsTaskBackUpTables, ItemString = CurrentPolicy.PolicyToString }); Notice.Show("策略已添加成功", "通知"); } else { policy.Sunday = CurrentPolicy.Sunday; policy.Monday = CurrentPolicy.Monday; policy.Tuesday = CurrentPolicy.Tuesday; policy.Wednesday = CurrentPolicy.Wednesday; policy.Thursday = CurrentPolicy.Thursday; policy.Friday = CurrentPolicy.Friday; policy.Saturday = CurrentPolicy.Saturday; policy.SelectedTime = CurrentPolicy.SelectedTime; policy.IsTaskBackUpDataBase = CurrentPolicy.IsTaskBackUpDataBase; policy.IsTaskBackUpTables = CurrentPolicy.IsTaskBackUpTables; policy.ItemString = CurrentPolicy.PolicyToString; Notice.Show("策略已更新成功", "通知", 3, MessageBoxIcon.Success); } if (CurrentPolicy.BackUpType == BackUpType.DataBase) { ConfigHelper.WriterAppConfig("DataBaseBackUpJob", ConvertToCron(CurrentPolicy)); } else { ConfigHelper.WriterAppConfig("TablesBackUpJob", ConvertToCron(CurrentPolicy)); } WriteConfig(); }
/// <summary> /// 从配置文件读取策略 /// </summary> /// <returns></returns> public void ReadPolicyConfig() { Policys.Clear(); EnvironmentInfo.BackUpJobConfigs.ForEach(x => { BackUpPolicy policy = ConvertToPolicy(x); policy.Id = x.Id; policy.IsTaskBackUpTables = x.BackUpType == 1 ? true : false; policy.IsTaskBackUpDataBase = x.BackUpType == 0 ? true : false; policy.ItemString = policy.PolicyToString; Policys.Add(policy); }); }
private void AddPolicy(object parameter) { if (CheckDayOfWeek()) { return; } CurrentPolicy.SelectedTime = (DateTime)parameter;//通过绑定无法获取到值 原因不明 BackUpPolicy policy = Policys.FirstOrDefault(x => x.Id == CurrentPolicy.Id); if (policy == null) { Policys.Add(new BackUpPolicy() { Id = Guid.NewGuid().ToString(), Sunday = CurrentPolicy.Sunday, Monday = CurrentPolicy.Monday, Tuesday = CurrentPolicy.Tuesday, Wednesday = CurrentPolicy.Wednesday, Thursday = CurrentPolicy.Thursday, Friday = CurrentPolicy.Friday, Saturday = CurrentPolicy.Saturday, SelectedTime = CurrentPolicy.SelectedTime, IsTaskBackUpDataBase = CurrentPolicy.IsTaskBackUpDataBase, IsTaskBackUpTables = CurrentPolicy.IsTaskBackUpTables, ItemString = CurrentPolicy.PolicyToString, DataBaseName = CurrentPolicy.DataBaseName }); Notice.Show("策略已添加成功", "通知", 3, MessageBoxIcon.Success); } else { policy.Id = CurrentPolicy.Id; policy.Sunday = CurrentPolicy.Sunday; policy.Monday = CurrentPolicy.Monday; policy.Tuesday = CurrentPolicy.Tuesday; policy.Wednesday = CurrentPolicy.Wednesday; policy.Thursday = CurrentPolicy.Thursday; policy.Friday = CurrentPolicy.Friday; policy.Saturday = CurrentPolicy.Saturday; policy.SelectedTime = CurrentPolicy.SelectedTime; policy.IsTaskBackUpDataBase = CurrentPolicy.IsTaskBackUpDataBase; policy.IsTaskBackUpTables = CurrentPolicy.IsTaskBackUpTables; policy.ItemString = CurrentPolicy.PolicyToString; policy.DataBaseName = CurrentPolicy.DataBaseName; Notice.Show("策略已更新成功", "通知", 3, MessageBoxIcon.Success); } WritePolicyConfig(); WriteTablesConfig(CurrentPolicy.DataBaseName); }
private BackUpPolicy ConvertToPolicy(BackUpJobConfig backUpJobConfig) { BackUpPolicy policy = new BackUpPolicy(); string[] cronArry = backUpJobConfig.Cron.Split(' '); int second = int.Parse(cronArry[0]); int minute = int.Parse(cronArry[1]); int hour = int.Parse(cronArry[2]); policy.SelectedTime = DateTime.Now.Date.AddHours(hour).AddMinutes(minute).AddSeconds(second); string dayOfWeek = cronArry[5]; string[] week = dayOfWeek.Split(','); foreach (var day in week) { switch (day) { case "1": policy.Sunday = true; break; case "2": policy.Monday = true; break; case "3": policy.Tuesday = true; break; case "4": policy.Wednesday = true; break; case "5": policy.Thursday = true; break; case "6": policy.Friday = true; break; case "7": policy.Saturday = true; break; } } policy.DataBaseName = backUpJobConfig.DataBaseName; return(policy); }
private MySqlBackUpViewModel() { TaskStartCommand = new DelegateCommand(); TaskStopCommand = new DelegateCommand(); ManualExecuteCommand = new DelegateCommand(); RemovePolicyCommand = new DelegateCommand(); AddPolicyCommand = new DelegateCommand(); ChooseAllCommand = new DelegateCommand(); RecoverDefaultCommand = new DelegateCommand(); TaskStartCommand.ExecuteAction = Start; TaskStopCommand.ExecuteAction = Stop; ManualExecuteCommand.ExecuteAction = ManualExecute; RemovePolicyCommand.ExecuteAction = RemovePolicy; AddPolicyCommand.ExecuteAction = AddPolicy; ChooseAllCommand.ExecuteAction = ChooseAll; RecoverDefaultCommand.ExecuteAction = RecoverDefault; Policys = new ObservableCollection <BackUpPolicy>(); CurrentPolicy = new BackUpPolicy(); Tables = new List <BackUpTable>(); string cron = ConfigHelper.ReadAppConfig("TablesBackUpJob"); if (!string.IsNullOrEmpty(cron)) { BackUpPolicy policy = ConvertToPolicy(cron); policy.IsTaskBackUpTables = true; policy.ItemString = policy.PolicyToString; Policys.Add(policy); } cron = ConfigHelper.ReadAppConfig("DataBaseBackUpJob"); if (!string.IsNullOrEmpty(cron)) { BackUpPolicy policy = ConvertToPolicy(cron); policy.IsTaskBackUpDataBase = true; policy.ItemString = policy.PolicyToString; Policys.Add(policy); } GetTables(); ProcessHelper.ShowOutputMessage += ProcessHelper_ShowOutputMessage; Message = "说明:1)全库备份,是完整备份,基础业务备份,是只备份核心业务数据。\r\n2)哪些表数据属于核心业务,系统已经默认配置了,也可以自行勾选,但是建议只多不少。\r\n3)如果要全部勾选,建议就不要配置为基础业务备份,直接使用全库备份即可。\r\n4)基础业务的备份频率一定要高于全库备份,因为全库备份包含了一些历史表,会很大。\r\n5)配置策略之后,重新启动不需要再去点执行任务,系统会自动执行。\r\n"; }
private void RemovePolicy(object parameter) { BackUpPolicy policy = Policys.FirstOrDefault(x => x.Id == CurrentPolicy.Id); if (policy != null) { Policys.Remove(policy); manger.RemoveBackUpJobConfig(policy.Id); Clear(); Notice.Show("策略已移除成功", "通知", 3, MessageBoxIcon.Success); } else { MessageBoxHelper.MessageBoxShowWarning("请选择你需要移除的策略"); } }
private MySqlBackUpViewModel() { TaskStartCommand = new DelegateCommand(); TaskStopCommand = new DelegateCommand(); ManualExecuteCommand = new DelegateCommand(); RemovePolicyCommand = new DelegateCommand(); AddPolicyCommand = new DelegateCommand(); ChooseAllCommand = new DelegateCommand(); RecoverDefaultCommand = new DelegateCommand(); TaskStartCommand.ExecuteAction = Start; TaskStopCommand.ExecuteAction = Stop; ManualExecuteCommand.ExecuteAction = ManualExecute; RemovePolicyCommand.ExecuteAction = RemovePolicy; AddPolicyCommand.ExecuteAction = AddPolicy; ChooseAllCommand.ExecuteAction = ChooseAll; RecoverDefaultCommand.ExecuteAction = RecoverDefault; Policys = new ObservableCollection <BackUpPolicy>(); CurrentPolicy = new BackUpPolicy(); Tables = new List <BackUpTable>(); string cron = ConfigHelper.ReadAppConfig("TablesBackUpJob"); if (!string.IsNullOrEmpty(cron)) { BackUpPolicy policy = ConvertToPolicy(cron); policy.IsTaskBackUpTables = true; policy.ItemString = policy.PolicyToString; Policys.Add(policy); } cron = ConfigHelper.ReadAppConfig("DataBaseBackUpJob"); if (!string.IsNullOrEmpty(cron)) { BackUpPolicy policy = ConvertToPolicy(cron); policy.IsTaskBackUpDataBase = true; policy.ItemString = policy.PolicyToString; Policys.Add(policy); } GetTables(); ProcessHelper.ShowOutputMessage += ProcessHelper_ShowOutputMessage; }
private MySqlBackUpViewModel() { manger = new BackUpJobConfigManger(); TaskStartCommand = new DelegateCommand(); TaskStopCommand = new DelegateCommand(); ManualExecuteCommand = new DelegateCommand(); RemovePolicyCommand = new DelegateCommand(); AddPolicyCommand = new DelegateCommand(); ChooseAllCommand = new DelegateCommand(); RecoverDefaultCommand = new DelegateCommand(); EditPolicyCommand = new DelegateCommand(); SaveFileDayCommand = new DelegateCommand(); manager = new KeyValueSettingManager(); TaskStartCommand.ExecuteAction = Start; TaskStopCommand.ExecuteAction = Stop; ManualExecuteCommand.ExecuteAction = ManualExecute; RemovePolicyCommand.ExecuteAction = RemovePolicy; AddPolicyCommand.ExecuteAction = AddPolicy; ChooseAllCommand.ExecuteAction = ChooseAll; RecoverDefaultCommand.ExecuteAction = RecoverDefault; EditPolicyCommand.ExecuteAction = EditPolicy; SaveFileDayCommand.ExecuteAction = SaveFileDayAction; Policys = new ObservableCollection <BackUpPolicy>(); Tables = new ObservableCollection <BackUpTable>(); Databases = new ObservableCollection <BackUpDatabase>(); CurrentPolicy = new BackUpPolicy(); CurrentPolicy.DataBaseName = EnvironmentInfo.DbConnEntity.DbName; CurrentPolicyBak = DeepCopy(CurrentPolicy); ReadPolicyConfig(); GetTables(); int saveday = 7; int.TryParse(EnvironmentInfo.Settings.FirstOrDefault(x => x.KeyId == "SaveFileDay")?.ValueText, out saveday); SaveFileDay = saveday; ProcessHelper.ShowOutputMessage += ProcessHelper_ShowOutputMessage; Message = "说明:\r\n1)全库备份,是完整备份。基础业务备份,是只备份核心业务数据。\r\n2)哪些表数据属于核心业务,系统已经默认配置了,也可以自行勾选,但是建议只多不少。\r\n3)如果要全部勾选,建议就不要配置为基础业务备份,直接使用全库备份即可。\r\n4)基础业务的备份频率一定要高于全库备份,因为全库备份包含了一些历史表,会很大。\r\n5)配置策略之后,重新启动不需要再去点执行任务,系统会自动执行。\r\n"; }
/// <summary> /// 深拷贝 /// </summary> /// <param name="currentPolicy"></param> /// <returns></returns> public BackUpPolicy DeepCopy(BackUpPolicy currentPolicy) { var model = new BackUpPolicy() { Id = currentPolicy.Id, Sunday = currentPolicy.Sunday, Monday = currentPolicy.Monday, Tuesday = currentPolicy.Tuesday, Wednesday = currentPolicy.Wednesday, Thursday = currentPolicy.Thursday, Friday = currentPolicy.Friday, Saturday = currentPolicy.Saturday, SelectedTime = currentPolicy.SelectedTime, IsTaskBackUpDataBase = currentPolicy.IsTaskBackUpDataBase, IsTaskBackUpTables = currentPolicy.IsTaskBackUpTables, ItemString = currentPolicy.PolicyToString, DataBaseName = currentPolicy.DataBaseName }; return(model); }
private string ConvertToCron(BackUpPolicy policy) { //周日 1 周一 2... //0 15 10 ? * 1,5 每周日,周四 上午10:15分执行 string second = policy.SelectedTime.ToString("ss");//秒 string minute = policy.SelectedTime.ToString("mm"); string hour = policy.SelectedTime.ToString("HH"); string dayOfWeek = ""; if (policy.Sunday) { dayOfWeek += "1,"; } if (policy.Monday) { dayOfWeek += "2,"; } if (policy.Tuesday) { dayOfWeek += "3,"; } if (policy.Wednesday) { dayOfWeek += "4,"; } if (policy.Thursday) { dayOfWeek += "5,"; } if (policy.Friday) { dayOfWeek += "6,"; } if (policy.Saturday) { dayOfWeek += "7"; } return($"{second} {minute} {hour} ? * {dayOfWeek.Trim(',')}"); }