(一)测试目的
目前公司使用的SQL SERVER 2012高可用环境为主备模式,其中主库可执行读写操作,备库既不可写也不可读,即采用的高可用技术为“数据库镜像”。存在的问题为:开发人员需要登录到生产服务器上去确认数据,无法保证数据安全。因此,需要搭建一种主备模式,保证备库可读,从而让开发人员在不接触生产环境的情况下也能通过备库校验数据的正确性。
(二)技术选择
经过确认,SQL Server2012的高可用主要有以下方案:
高可用技术 |
优势 |
劣势 |
最终选择 |
SQL Server集群 |
多台服务器组成一个集群,可保证一个节点出故障,其它节点仍正常运行 |
集群使用共享存储,存储故障会导致整个集群出故障 |
不符合本次主备分离的特点。 |
日志传送 |
通过主库的日志恢复备库,可保证主备库数据一摸一样 |
备份作业每隔一段时间触发一次,所以不是实时的 |
日志恢复有延迟,无法查到最新的数据 |
数据库镜像 |
可保证主备库数据一摸一样 |
镜像数据库是一个一直处于“恢复”状态的数据库,因此不能直接访问 |
备库无法访问,不符合要求 |
复制-->快照复制 |
直接同步数据库某一时刻的整个状态 |
数据有延迟、需要保证整体数据量小,数据量大的时候速度非常慢 |
不符合要求 |
复制-->事务复制 |
通过日志读取代理和分发代理程序,将发布服务器上的数据更改和架构修改几乎实时传递给订阅服务器; |
暂时无 |
符合要求 |
复制-->合并复制 |
允许用户同时修改订阅服务器和发布服务器上的数据,并把这些修改合并成一个统一的结果 |
暂时无 |
实际环境中主库不需要同步备库的变更,不符合要求 |
经过确认,使用复制技术中的事物复制来测试是否满足需求。
(三)搭建步骤
测试基础环境信息如下:
主库 |
备库 |
|
操作系统 |
Windows Server 2012 R2 64bit |
Windows Server 2012 R2 64bit |
数据库版本 |
cn_sql_server_2012_enterprise_edition_x86_x64 |
cn_sql_server_2012_enterprise_edition_x86_x64 |
服务器名称(IP) |
WIN-PRIMARY(10.1.106.2) |
WIN-STANDBY(10.1.106.3) |
同步数据库信息 |
masterdb |
slavedb |
(3.1)配置分发(主库执行)
STEP1: 在SSMS“对象资源管理器”中选择“复制”,右键“配置分发”,弹出“配置分发向导”,点击“下一步”
STEP2: 分发服务器可以是当前服务器,也可以是其它服务器,这里选择当前服务器作为分发服务器
STEP3: 快照文件夹用于存放快照
该文件夹需要手动修改权限,最好直接给“Everyone”的权限
STEP4: 配置分发数据库,默认即可
STEP5: 配置发布服务器,默认即可