博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库备份定期删除程序的开发。
阅读量:6984 次
发布时间:2019-06-27

本文共 5436 字,大约阅读时间需要 18 分钟。

第一.最近客户的服务器数据库备份每天都在进行,随着数据量的不断的增加,备份也在不断的进行变大。

第二.于是一些问题就出现了客户的服务器的磁盘的空间有限,定期数据库备份文件太大而导致无法进行保存问题。

第三.从而导致了服务器宕机以及服务器中一些应用程序以及网站无法使用等等。

第四.所以需要进行解决这个问题就需要开发一个应用程序进行定期的删除数据库的备份以及其他的文件。

第五.在进行删除数据库的备份的时候需要注意是的删除设置的几天前的数据库备份,其他最新的数据库的备份的文件不要删除。

第六:可以应用Windows服务进行开发定时删除数据库备份的应用的程序,也可以进行应用控制台开发定时删除数据库的备份的程序当然如果应用控制台应用程序进行开发,那么最好进行结合Windows 系统自带的计划任务程序比较方便。当然你是可以进行选择的,因人而异。

第五.那么如果做到删除指定的数据库备份文件例如DB2,DBName.0.DB2.DBPART000.20161010153053.001等等以及SQLServer DbName.bak等等

以及MySql数据库的备份文件等等,以及其他的文件格式都是支持的。

第七.那么解决这个问题我需要做的是:

   1.首先需要找到数据库备份文件的路径将其读取出来,当然这里所知的路径是指物理路径。

   2.需要做的是将数据库的文件的名称以及数据库备份的时间进行读取出来,为了方便取出最新的以及几天前的数据库备份。

   3.当然你还需要进行应用File文件类中的一些具体的删除的方法。来进行删除。

第八:下面我将自己写的定期删除数据库备份控制台应用程序贴出来供大家参考。

         定期的进行删除数据库备份文件代码如下

class Program{    static void Main(string[] args)    {        string strDirfile = Properties.Settings.Default.DB_FILE_PATH;        Console.WriteLine("strDirfile{0}", strDirfile);        int keepFileCnt = int.Parse(Properties.Settings.Default.KEEP_FILE_CNT);        try        {            if (string.IsNullOrEmpty(strDirfile) || !Directory.Exists(strDirfile))            {                Console.WriteLine("配置的文件的路径不正确请检查{0}" + strDirfile);            }            if (keepFileCnt <= 0)            {                Console.WriteLine("没有配置删除的天数");            }            if (strDirfile != null)            {                if (Directory.Exists(strDirfile))                {                    string[] strDirs = Directory.GetDirectories(strDirfile);                    string[] strFiles = Directory.GetFiles(strDirfile);                    DBNameAndTime file = new DBNameAndTime();                    if (strFiles != null)                    {                        foreach (string strFile in strFiles)                        {                            if (strFile != null)                            {                                FileInfo fi = new FileInfo(strFile);                                string[] strArr = fi.Name.Split('.');                                file.DataName = fi.Name;                                 file.FileTime = strArr[5];                                 file.Url = strFile;                                DateTime dt1 = DateTime.Now;                                 if (strArr.Length > 0)                                {                                    IFormatProvider provider = new CultureInfo("zh-CN");                                    string tarStr = "yyyyMMddHHmmss";                                    DateTime dt2 = DateTime.ParseExact(file.FileTime.ToString(), tarStr, provider);                                    TimeSpan ts = dt1 - dt2;                                    Console.WriteLine("时间天数:{0}", ts);                                    if (ts.TotalDays >= keepFileCnt)                                    {                                        if (strFile != null)                                        {                                            File.Delete(strFile);                                            using (StreamWriter sw = new StreamWriter(strDirfile + "数据库备份的删除日志.txt", true))                                            {                                                sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "数据库备份删除开始:" + "删除的路径:" + strDirfile + "删除数据库备份的名称" + strFile);                                            }                                            Console.WriteLine("{0}数据库备份文件删除成功!", DateTime.Now);                                        }                                        else                                        {                                            Console.WriteLine("删除文件失败!");                                        }                                    }                                    else                                    {                                        Console.WriteLine("其他的备份文件都是最新的没有3天前的备份!");                                    }                                }                            }                        }                    }                    //保存删除的根目录的文件夹                    foreach (string strdir in strDirs)                    {                        Directory.Delete(strdir, true);                    }                }                else                {                    Console.WriteLine("此目录中只有根目录了!");                }            }            else            {                Console.WriteLine("此目录不存在!");            }        }        catch (Exception ex)        {            //将数据库备份的异常写入到记事本中            using (StreamWriter sw = new StreamWriter(strDirfile + "数据库备份的删除日志.txt", true))            {                sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "备份文件都是最新的没有3天前的备份" + ex.Message);            }        }    }}//进行声明备份数据库的类public class DBNameAndTime{    private string fileName;    ///     /// 文件名称    ///     public string FileName { get { return fileName; } set { fileName = value; } }    private string fileTime;    ///     /// 文件的最后修改时间    ///     public string FileTime { get { return fileTime; } set { fileTime = value; } }    private string dataName;    ///     /// 数据库名称    ///     public string DataName { get { return dataName; } set { dataName = value; } }    private string url;    ///     /// 文件路径    ///     public string Url { get { return url; } set { url = value; } }    public string DownUrl { get { return fileName; } }}

   以上内容均属于原创,转载请标明。谢谢!           

  

 

转载于:https://www.cnblogs.com/LowKeyCXY/p/6099400.html

你可能感兴趣的文章
设计模式之迭代子模式
查看>>
代码评审的不可能三角
查看>>
揭秘ThreadLocal
查看>>
七年蜕变 感恩献礼
查看>>
前端vue框架的跨域处理方法
查看>>
共享经济、短视频、新零售、AI:寻觅2019年新经济未来走向
查看>>
Typescript尝试
查看>>
金融行业容器平台落地路径:敏捷响应业务更迭
查看>>
CodeMirror 5.46.0 发布,多功能在线代码编辑器
查看>>
zabbix配置邮箱报警
查看>>
使用ulimit设置文件最大打开数
查看>>
XmlHttpRequest 对象详解
查看>>
浅析Banner设计
查看>>
SQL Server扩展事件(Extended Events)-- 将现有 SQL 跟踪脚本转换为扩展事件会话
查看>>
传说中的裸奔节--认识及体验CSS
查看>>
二十年后的回眸(2)——顺风顺水的前三年
查看>>
烂泥:为KVM虚拟机添加网卡
查看>>
数据驱动安全架构升级---“花瓶”模型迎来V5.0(二)
查看>>
Sql Server 常用日期格式
查看>>
让“云”无处不在-Citrix Xenserver之一 环境搭建
查看>>