ApsaraDB for SQL Server 混合云场景一种解决方案

场景说明

在服务客户时过程中,有用户需要一种解决方案,来建立本地SQL Server服务与RDS SQL Server服务之间的数据传输或者同步的方案,这里我们利用SQL Server复制技术来实现数据的同步,它的典型应用场景是,写数据在本地,读数据放在RDS,这样实现混合云的一种解决方案。

方案架构

方案解析

1. 整体结构

这是SQL Server典型的2+3的的高可用和高扩展解决方案,主备使用镜像完成数据库同步,以提供故障转移,分发单独放在一台服务器,其目的是解决publisher故障转移时,分发服务器可以提供持续同步数据到订阅。发布(publisher)和分发(distributor)是放在用户本地,拥有自主权限。订阅放在RDS上,我的建议是不要用高可用RDS来做分发,购买单实例来做订阅是比较合适的,因为订阅可以不断扩展,如果有主备高可用,订阅服务器也是利用镜像来实现高可用,一旦发生切换,订阅服务器是无法正常同步数据的。 整个方案过程中,可能会遇到一些意象不到的情况,但都是解决掉。

2. Distributor

首先需要配置Distributor,当然你的安装一个SQL Server。特别注意的是分发服务器需要一个单独的服务器来充当,不要将分发服务器放在发布服务器上,那样一旦主备发生切换,分发服务器不能正常工作。
第一步:安装SQL Server ,安装是一定要选上replication功能
第二步:配置分发服务器


USE master
EXEC sp_adddistributor @distributor = N'RDS-TEST-DIST', @password = N''
GOEXEC sp_adddistributiondb @database = N'distribution', @data_folder = N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data',@log_folder = N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data', @log_file_size = 2,@min_distretention = 0, @max_distretention = 72, @history_retention = 48, @security_mode = 1
GOUSE [distribution]
GO
IF (NOT EXISTS (SELECT * FROM sysobjects where name = 'UIProperties' and type = 'U ')
) CREATE TABLE UIProperties(id int) IF (EXISTS (SELECT * FROM ::fn_listextendedproperty('SnapshotFolder', 'user', 'dbo', 'table', 'UIProperties', null, null))
) EXEC sp_updateextendedproperty N'SnapshotFolder', N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\ReplData', 'user', dbo, 'table', 'UIProperties'
ELSE EXEC sp_addextendedproperty N'SnapshotFolder',N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\ReplData', 'user', dbo, 'table', 'UIProperties'
GO

第三步: 如果不在域环境,你需要注册一下分发服务器和订阅服务器的别名映射 :

注意:发布服务器很容易注册 。订阅服务器比较麻烦,流程如下:

2.1 在RDS上创建一个可以登录的账户,并分配权限

2.2 查看主机的HOST NAME

2.3 开通实例的外网地址,并获得VIP(VIP估计会变,这里需要特别关注)

2.4 通过SQL Server配置管理器配置好别名,注意32位和64位的SQL Native Client都需要配置

第四步:在分发服务器上注册发布服务器(主备都需要注册) ,如下图:

3. Publisher

在发布服务器上rds-test-master/rds-test-slave上都分别要做一下配置:

3.1 配置分发服务器,并指定分发服务器为rds-test-dist

3.2 与分发服务器一样,需要将所有订阅服务器注册到真实的的HOST NAME地址

3.3 发布不服务器上创建一张包含有主键的表

3.4 创建发布:注意只能选事务复制,连接到发布建议使用SQL登录

4. Subscriber

订阅端是放在RDS, RDS可以是基础版本,也可以是高可用班,甚至可以是WEB版本,我的实验版本都包含了这些版本。但建议版本只在同一个迭代的版本你选取,即使如果发布、分发是2012,订阅建议也是,这三者建议保持一致。
创建分发注意几个地方:

4.1 首先订阅在RDS,应该申请外网地址

4.2 需要取得订阅服务器的服务器名字,在分发和发布上做别名时,一定要制定真实的订阅服务器

4.3 订阅的方式只能是push(推送),不能是Pull(拉取)

4.4 订阅的登录方式不能使用SQL Agent account,需要使用SQL 登录方式

5. 镜像与复制共存

镜像和复制共存主要要考虑的一个点是,如果MASTER-SLAVE发生了故障转移,如何让数据库提供服务器,有3个地方需要关注:

5.1 主备的日志读取和复制关系的矫正,如果你的MASTER 宕机了,发生了故障转移,这个时候SLAVE如果要提供服务器,日志读取器会等待镜像日志先同步,再做分发,但有时候可能原MASTER发生硬件故障,这时候,就需要打开一个跟踪标记1448,在不等最小日志确认的情况下可以继续分发数据

5.2 日志读取气代理需要设置partner server

5.3 快照代理同样需要设置partner server

6. 复制与RDS共存

需要说明的是RDS只能作为订阅,不能作为分发和发布。RDS的订阅数据库类型不限。

注意事项

1. 要作为订阅,需要开通外网

2. RDS和LOCAL最好开通VPN或者专线

3. 订阅服务器不能直接使用,需要配置网络别名映射,这个很关键

ApsaraDB for SQL Server 混合云场景一种解决方案相关推荐

  1. 利用 ApsaraDB For SQL Server各版本高效而低廉地实现关键业务需求

    1. 什么是SQL Server多版本 微软的SQL Server除了不断迭代的版本升级外,还有从功能差异上分为几个不同的版本. SQL Server 2012有企业版.商务智能版.标准版.开发版.W ...

  2. 华为云数据库SQL Server 上云最佳实践

    作者:华为云数据库高级项目经理/沈志鹏 沈志鹏: 在我开讲之前要先强调一下,刚才两个引擎所说的所有优点,SQL Server都有. 开讲前问一句,有没有人用过SQL Server数据库的?很好用的人还 ...

  3. SQL Server 上云最佳实践

    内容来源:华为云社区 作者:华为云数据库高级项目经理/沈志鹏 沈志鹏: 在我开讲之前要先强调一下,刚才两个引擎所说的所有优点,SQL Server都有. 开讲前问一句,有没有人用过SQL Server ...

  4. 云原生时代,政企混合云场景IT监控和诊断的难点和应对之道

    本文分享自华为云社区<[华为云Stack][大架光临]第10期:云原生时代,政企混合云场景IT监控和诊断的难点和应对之道>,作者: 华为云Stack技术规划专家 杨奕. 一.政企混合云的架 ...

  5. 多云和混合云场景下的 API 管理:挑战与选择

    作者张超,API7 Cloud 产品负责人,Apache APISIX PMC 成员. 原文链接 一.多云和混合云 如今微服务已经成为最流行的一种软件架构,人们通过自己对业务的理解,和科学方法(比如领 ...

  6. 一张图看懂混合云数据同步一站式解决方案

    为什么80%的码农都做不了架构师?>>>    摘要: 针对不同数据库间数据实时同步难的问题,日前,阿里云宣布推出混合云数据同步一站式解决方案,便于广大云产品用户实现实时数据同步的混 ...

  7. SQL SERVER 2000 数据库备份和SQL Server数据库备份有两种方式,

    SQL SERVER 2000 数据库备份与还原时间:2006-08-30 10:23:23  来源:CSDN  作者:佚名备份数据库,例如: BACKUP DATABASE Northwind    ...

  8. Microsoft OLE DB Provider for SQL Server 错误 ‘80004005‘错误原因和解决方案

    Microsoft OLE DB Provider for SQL Server 错误 '80004005'错误原因和解决方案 方法步骤: 1.在WINSOWS/TEMP目录的安全选项中,添加帐号ev ...

  9. SQL Server新建数据库的两种方法

    SQL Server新建数据库的两种方法分别是: SQL Server Management Studio管理工具可视化创建 使用Transact-Sql创建 SQL Server Managemen ...

最新文章

  1. tensorflow 使用CPU而不使用GPU的问题解决
  2. mybatis学习4之使用注解开发实现简单的增删改查
  3. 使用JQUERY实现局部页面定时刷新
  4. 详解C语言中 # 和 ## 的用法
  5. vscode配置vue环境
  6. 实验10 SQL Server 数据备份/恢复
  7. 这个 bug 让我更加理解 Spring 单例了
  8. 蓝桥杯vip答案java_Java实现 蓝桥杯VIP 算法训练 麦森数
  9. 屌丝就爱尝鲜头——java8初体验
  10. 电脑显示未安装任何音频输出设备_未安装任何音频输出设备-华硕A556UQ7200(4GB/128GB+500GB/2G独显)...
  11. MS SQL数据库置疑解决办法
  12. 2022-2027年(新版)中国石墨烯行业竞争态势及发展前景预测报告
  13. Vue 快速原型开发
  14. SQLServer数据库文件压缩
  15. 前端数字转为中文大写
  16. safari浏览器的一些兼容性问题总结
  17. 混沌系统的matlab仿真可行性,超混沌系统的电路仿真及其自适应同步
  18. 市场调研—2021-2027全球与中国硬质托盘包装市场现状及未来发展趋势
  19. Oracle 12cR1 RAC 在VMware Workstation上安装(上)—OS环境配置
  20. java斗地主发牌_java斗地主发牌程序

热门文章

  1. Go 基本语法之变量声明
  2. 单元测试框架-Junit
  3. git向远程推送代码提示fatal: Authentication failed
  4. Fiddler抓取HTTPS最全(强)攻略!
  5. 起动缓慢_世界最大柴油机为何是压缩空气起动?那么它到底是如何起动的呢?...
  6. python制作的游戏如何转化为swf_PYTHON实现swf提取
  7. Map.getOrDefault()的返回类型问题
  8. pythondifflib详解_python difflib模块示例讲解
  9. react循环key值_React性能优化的几个知识点
  10. Keras及其前端配置