ApsaraDB for SQL Server 混合云场景一种解决方案
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 混合云场景一种解决方案相关推荐
- 利用 ApsaraDB For SQL Server各版本高效而低廉地实现关键业务需求
1. 什么是SQL Server多版本 微软的SQL Server除了不断迭代的版本升级外,还有从功能差异上分为几个不同的版本. SQL Server 2012有企业版.商务智能版.标准版.开发版.W ...
- 华为云数据库SQL Server 上云最佳实践
作者:华为云数据库高级项目经理/沈志鹏 沈志鹏: 在我开讲之前要先强调一下,刚才两个引擎所说的所有优点,SQL Server都有. 开讲前问一句,有没有人用过SQL Server数据库的?很好用的人还 ...
- SQL Server 上云最佳实践
内容来源:华为云社区 作者:华为云数据库高级项目经理/沈志鹏 沈志鹏: 在我开讲之前要先强调一下,刚才两个引擎所说的所有优点,SQL Server都有. 开讲前问一句,有没有人用过SQL Server ...
- 云原生时代,政企混合云场景IT监控和诊断的难点和应对之道
本文分享自华为云社区<[华为云Stack][大架光临]第10期:云原生时代,政企混合云场景IT监控和诊断的难点和应对之道>,作者: 华为云Stack技术规划专家 杨奕. 一.政企混合云的架 ...
- 多云和混合云场景下的 API 管理:挑战与选择
作者张超,API7 Cloud 产品负责人,Apache APISIX PMC 成员. 原文链接 一.多云和混合云 如今微服务已经成为最流行的一种软件架构,人们通过自己对业务的理解,和科学方法(比如领 ...
- 一张图看懂混合云数据同步一站式解决方案
为什么80%的码农都做不了架构师?>>> 摘要: 针对不同数据库间数据实时同步难的问题,日前,阿里云宣布推出混合云数据同步一站式解决方案,便于广大云产品用户实现实时数据同步的混 ...
- SQL SERVER 2000 数据库备份和SQL Server数据库备份有两种方式,
SQL SERVER 2000 数据库备份与还原时间:2006-08-30 10:23:23 来源:CSDN 作者:佚名备份数据库,例如: BACKUP DATABASE Northwind ...
- Microsoft OLE DB Provider for SQL Server 错误 ‘80004005‘错误原因和解决方案
Microsoft OLE DB Provider for SQL Server 错误 '80004005'错误原因和解决方案 方法步骤: 1.在WINSOWS/TEMP目录的安全选项中,添加帐号ev ...
- SQL Server新建数据库的两种方法
SQL Server新建数据库的两种方法分别是: SQL Server Management Studio管理工具可视化创建 使用Transact-Sql创建 SQL Server Managemen ...
最新文章
- tensorflow 使用CPU而不使用GPU的问题解决
- mybatis学习4之使用注解开发实现简单的增删改查
- 使用JQUERY实现局部页面定时刷新
- 详解C语言中 # 和 ## 的用法
- vscode配置vue环境
- 实验10 SQL Server 数据备份/恢复
- 这个 bug 让我更加理解 Spring 单例了
- 蓝桥杯vip答案java_Java实现 蓝桥杯VIP 算法训练 麦森数
- 屌丝就爱尝鲜头——java8初体验
- 电脑显示未安装任何音频输出设备_未安装任何音频输出设备-华硕A556UQ7200(4GB/128GB+500GB/2G独显)...
- MS SQL数据库置疑解决办法
- 2022-2027年(新版)中国石墨烯行业竞争态势及发展前景预测报告
- Vue 快速原型开发
- SQLServer数据库文件压缩
- 前端数字转为中文大写
- safari浏览器的一些兼容性问题总结
- 混沌系统的matlab仿真可行性,超混沌系统的电路仿真及其自适应同步
- 市场调研—2021-2027全球与中国硬质托盘包装市场现状及未来发展趋势
- Oracle 12cR1 RAC 在VMware Workstation上安装(上)—OS环境配置
- java斗地主发牌_java斗地主发牌程序
热门文章
- Go 基本语法之变量声明
- 单元测试框架-Junit
- git向远程推送代码提示fatal: Authentication failed
- Fiddler抓取HTTPS最全(强)攻略!
- 起动缓慢_世界最大柴油机为何是压缩空气起动?那么它到底是如何起动的呢?...
- python制作的游戏如何转化为swf_PYTHON实现swf提取
- Map.getOrDefault()的返回类型问题
- pythondifflib详解_python difflib模块示例讲解
- react循环key值_React性能优化的几个知识点
- Keras及其前端配置