Sqlserver异地备份实践


项目背景:

客户在线下IDC有一套业务系统运行在物理环境,winodws 2012 上运行着 Tomcat8+Sqlserver2014的企业内部流程系统,由于种种原因目前需要将线下的环境移植一份到某私有云内部环境中作为备份(如果线下环境遇到何种人为不可控的因素导致短时间内无法恢复的情况,私有云环境下的系统可以快速拉起业务,以尽可能短的时间恢复业务运行)。

项目难点:

1)目的端私有云环境下,限制诸多,安全性考虑默认情况下所有的上行下行端口均不开放,也不能采用异地镜像方式导入,直接限制了软件环境的构建方式;
2)Sqlserver2014 的实时同步过程对于网络和磁盘的IO也有一定要求,实时同步的可靠性未经过实际环境的测试,不能确保同步链路的百分百稳定可靠;

方案确定:

综上所述,各方面综合考虑后确认如下方案:
    A.基础运行环境所需要的软件安装包,在其他环境中适配确认好,然后使用私有云内部部署的云盘工具上传,结合指定的可信任mirror源( https://opsx.alibaba.com/mirror/  )等进行基础环境的构建,并通过网内测试;
    B.基础环境构建完毕后,将Tomcat运行的源码包压缩拷贝至目标服务器,解压,注意Tomcat环境的权限所属问题;
    C.Sqlserver数据库发布订阅配置(PS:最好源环境和目标环境的用户名密码设置相同,避免后面配置时搞错;
    D.文件级数据的定时同步计划,通过rsync+openssh加密传输的方式配合计划任务将文件数据定时同步至目标服务器中;
    E.出于数据库同步链路可靠性考虑,最终决定将数据库源端启动维护计划,每天定时生成数据库的全量备份.bak文件并存储到rsync同步指定的目录下,将bak文件也复制一份到目标服务器,确保数据安全;

POC测试阶段:

方案确认后即可按照既定的方案开展POC测试环节
    基础环境的安装过程省略(需要注意的是安装过程中需要使用到哪些外部URL,需要哪些端口协同工作,这些需要提前确认好,后续需要通过防火墙策略申请开放。)
    数据库订阅发布配置过程如下:
    ·目标环境安装好对应版本的数据库(此处sqlserver2014 EE ed2k://|file|cn_sql_server_2014_enterprise_edition_x64_dvd_3932882.iso|2898847744|A33CE10CD989083D1AD882DF0D56CFBE|/ )
    ·在配置发布订阅之前首先需要确保源端与目标端服务器之间可以通过对应的servername找到彼此,最直接的方式就是在源端和目标端服务器的hosts文件中添加相应的x.x.x.x sqlservername 记录,并测试可以通过sqlservername成功连接数据库,通过ip地址直接连接会报错
    ·数据确保可以通过sqlservername连接后即可开始配置,源端发布 
  • 复制

记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践_第1张图片

  • 新建发布
    记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践_第2张图片
  • 按照向导配置
    记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践_第3张图片
  • 快照存储位置(默认位置在数据库实例对应的目录下,根据实际情况可以修改也可以不修改)
    记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践_第4张图片
  • 选择对应的数据库
    记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践_第5张图片
  • 选择发布类型
    记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践_第6张图片
  • 发布类型说明

快照发布:
发布服务器按预定的时间间隔向订阅服务器发送已发布数据的快照。


事务发布:
在订阅服务器收到已发布数据的初始快照后,发布服务器将事务流式传输到订阅服务器。


对等发布:
对等发布支持多主复制。发布服务器将事务流式传输到拓扑中的所有对等方。所有对等节点可以读取和写入更改,且所有更改将传播到拓扑中的所有节点。


合并发布:
在订阅服务器收到已发布数据的初始快照后,发布服务器和订阅服务器可以独立更新已发布数据。更改会定期合并。Microsoft SQL Server Compact Edition 只能订阅合并发布。

  • 选择合适的发布类型并选择需要发布的对象
    记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践_第7张图片

  • 筛选去掉不需要的数据(没有可以不添加)
    记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践_第8张图片
  • 生成并运行快照代理
    记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践_第9张图片
  • 安全性设置(配置代理用户名密码)
    记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践_第10张图片
    ---- 建议用如下方式配置(目前测试没什么问题的配置方式)----
    记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践_第11张图片
  • 创建发布
    记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践_第12张图片
  • 指定发布名称(根据项目名称来取比较靠谱,当然取什么名字并不影响运行)
    记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践_第13张图片
  • 等待发布创建
    记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践_第14张图片
  • 查看已创建的发布
    记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践_第15张图片
  • 目标端创建订阅
    记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践_第16张图片
  • 选择发布服务器(通过查找sql连接发布服务器后选择已发布项目)
    记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践_第17张图片
    记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践_第18张图片
  • 选择分发代理的位置(建议选发布服务器上推送的方式,目前测试来看成功率最高的方式)
    记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践_第19张图片
  • 选择订阅数据库
    记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践_第20张图片
  • 安全性设置(同发布中的设置类似,注意区分发布端和订阅端)
    记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践_第21张图片
    ---- 建议如下方式配置 ----
    记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践_第22张图片
  • 根据实际情况确认运行方式(默认连续运行)
    记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践_第23张图片
  • 设置初始化时间(默认立即)
    记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践_第24张图片
  • 创建订阅
    记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践_第25张图片
    记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践_第26张图片
  • 等待订阅生效
    记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践_第27张图片
  • 查看订阅同步链路情况
    记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践_第28张图片
    记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践_第29张图片

至此sqlserver的发布订阅过程已经完成。

·建议同时配置定期维护任务,将数据库定期生成.bak备份,定时同步至目标端。windows加密同步过程参考下一篇文档。