您的位置:首页 > 数据库

如何开发应用程序将客户服务器数据库的备份,下载到本地的云服务上?

2016-11-17 16:49 405 查看
---恢复内容开始---

如何做到将客户服务器数据库的备份,下载到本地的云服务上? 在开发这个程序中中途也遇到了一下问题,下面我将自己如何进解决的办法写出来供大家参考。

一.首先我需要进行描述一下问题:

1.比如有两台服务器A,B(云服务器) 将A中的服务器中的数据库的备份进行下载到B的云服务中并保存。

2.当然这台A服务器的外网是可以进行访问,如果外网访问不了的话,那也是没有办法的。

3.然后在B服务器中定期的进行删除数据库备份,定时的下载。并进行保存最新一个星期的数据库备份。

4.在云服务需要保存最新的数据库备份,当然不止一个数据库备份了,并进行定期的删除以及下载。

二:遇到的一些问题:

1.WebServices安全通道建立信任关系的异常。

2.数据库备份过大问题,无法下载。采用文件流的方式进行压缩。

3.在做定时删除以及下载的程序的时候使用Windows服务开发还是使用控制台然后挂在任务计划程序上。

4.如何进行读或者取数据库备份。通过FilesGetter.GetFiles(_fileDir, filter)方法。

5.压缩问题等等。应用BZip2.Compress(srcFile, zipFile, 8192);进行压缩以8M为一个压缩块。

6.备份策略,每天,每周,每月。应用任务计划程序。

二:需要的使用那些技术:

1.经过考虑了一下需要创建一个WebServices。

2.需要创建3个控制台应用程序其中分别包括(下载控制台应用程序,删除的控制台应用程序,压缩的控制台应用程序)。

3.文件流的使用,webClient 的应用等等

三:整个下载过程的流程图

1  class Program
2     {
3         static void Main(string[] args)
4         {
5             //通过代码进行建立SSL认证关系否则会出现未能为 SSL/TLS 安全通道建立信任关系.
6             ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
7             ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; });
8             WebClient client = new WebClient();
9             DbFileUrlProviderSvc.DbFileProviderSoapClient svcClient = new DbFileUrlProviderSvc.DbFileProviderSoapClient();
10             DbFileUrlProviderSvc.ArrayOfString latstFileUrlArray = svcClient.GetDbFile();
11             string receivePath = Properties.Settings.Default.LOCAL_PATH;//公司的云服务器保存下载文件的路径
12             try
13             {
14                 // 对从svc取出的url循环下载获取最新的文件
15                 if (receivePath != null)
16                 {
17                     if (latstFileUrlArray != null)
18                     {
19                         foreach (var downloadPath in latstFileUrlArray.ToList())
20                         {
21                             //将下载的文件进行保存到指定的文件夹
22                             if (downloadPath != null)
23                             {
24                                 //将数据库备份的日志写入到记事本中去
25                                 using (StreamWriter sw = new StreamWriter(receivePath + "数据库下载的日志.txt", true))
26                                 {
27                                     sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "数据库备份下载开始:" + "下载的路径:" + downloadPath + "接收的路径:" + receivePath + "下载文件的名称:" + Path.GetFileName(downloadPath));
28                                 }
29                                 //下载数据库备份文件
30                                 Console.WriteLine("数据库备份压缩包下载开始{0}!", DateTime.Now.ToString("yyyy-MM-dd-HH:mm:ss"));
31                                 client.DownloadFile(downloadPath, receivePath + Path.GetFileName(downloadPath));
32                                 Console.WriteLine("恭喜你备份{0}文件时间{1}下载完成,进入本地{2}下面进行查看!", Path.GetFileName(downloadPath), DateTime.Now.ToString("yyyy-MM-dd-HH:mm:ss"), receivePath);
33                             }
34                         }
35                     }
36                 }
37             }
38             catch(Exception ex)
39             {
40                 //将数据库备份的日志写入到记事本中去
41                 using (StreamWriter sw = new StreamWriter(receivePath + "数据库下载的日志.txt", true))
42                 {
43                     sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "数据库备份下载中进行捕捉的异常:"+ex.Message);
44                 }
45             }
46
47         }
48
49     }


创建控制台应用程序进行远程下载通过获取WebServices 返回的List<string>URL 集合进行下载
4.当所用的程序开发完毕后那么就可以进行测试了,首先需要进行在任务计划程序中进行部署计划任务将.exe 程序添加其中,并进行设置确定的时间。

5.当所用的计划任务程序都进行部署完成后那么需要将webServices进行托管到IIS上。

6.当这些任务完成后那么就可以了下载数据库备份了。

7.下一篇博客我将介绍一下如何解决定期的删除数据库的备份文件以及定期删除其他文件问题 。 以上内容均属于原创,转载请标明。谢谢! - 2016.11.17
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐