Alwayson+Replication
本文将介绍如何实现Alwayson + Replication ,通过AlwaysOn实现Publication
database的高可用性,使Publication
database在failover 之后事务复制可以正常运行。
拓扑如下:
Publisher primary |
Denali1 |
Publication database |
tranPubDB |
Publication name |
tranPublicationTest |
Publisher secondary |
Denali3 |
Distributor |
Denali2 |
|
|
AlwaysOn Availability Group name |
Liwei |
Listener |
liweion |
首先配置AlwaysOn Availability Group
- 登陆Denali1对tranPubDB进行完全备份: backup
database tranPubDB to
disk='tranpubdb.bak'
with
init - 右键点击AlwaysOn High Availability。
- 选择TranPubDb,如果之前不进行备份,Status会显示'Full backup is required'的提示。
- 指定Replicas:添加priamry 和secondary。
- 添加Listener。Listener将会用于后续的操作。
- 选择初始化数据的方式。
- 验证。
AlwaysOn的配置就结束了。
接下来配置事务复制
(1,2,3步的配置和普通的事务复制完全一致,详细步骤请您参考http://www.sql-server-performance.com/2010/transactional-replication-2008-r2/)
- 连接Denali2:
- 将Denali2配置为distributor .
- 在Denali2里指定Denali1和Denali3为发布服务器
- 连接Denali3:指定Denali2为分发服务器
- 连接Denali1:
- 指定Denali2为分发服务器.
- 创建发布
- 连接Denali2, 在分发数据库下执行下面的语句. 执行下面的语句之后,logreader就可以通过Listener连接到正在工作的primary
server了。请注意,这一步是实现Publication database高可用性的关键步骤。EXEC
sys.sp_redirect_publisher@original_publisher =
'Denali1',@publisher_db =
'tranPubDB',@redirected_publisher =
'liweion';----将之前创建的listener带入到这个参数配置步骤就全部完成了,之后您可以任意添加订阅,当failover发生之后,事务复制也可以正常工作。
如何配制Subscription database
+AlwaysON(需要说明的是:当subscription database 的availability group发生failover后,replication是无法自动工作的,我们需要一些手工操作)
当前拓扑如下
Publisher |
Denali1 |
Publication database |
tranPubDB |
Publication name |
tranPublicationTest |
Distributor |
Denali2 |
Subscriber primary |
Denali4 |
Subscriber secondary |
Denali5 |
Subscription database |
subDB |
- 假设subscriber的Availability
group发生了failover,此时distrubiton
agent是无法工作的。 - 切换之后,Denali5成为新的primary。
- 连接到发布服务器Denali1,进入发布数据库tranPubDB,将发布设置为运行从备份初始化: EXEC
sp_changepublication
@publication =
'tranPublicationTest', @property =
'allow_initialize_from_backup', @value =
'true'; - 连接到新的Denali5. 进入订阅数据库:
- 得到当前订阅的LSN: SELECT transaction_timestamp,
*
FROM MSreplication_subscriptions; - 清除订阅数据库的原数据:EXEC
sp_subscription_cleanup
@publisher =
'Denali1', @publisher_db =
'tranPubDB'
- 得到当前订阅的LSN: SELECT transaction_timestamp,
- 连接到发布服务器,将新的primary
server的数据库指定为订阅:EXEC
sp_addsubscription
-- past the LSN before executing@publication =
'tranPublicationTest',@subscriber =
'Denali5',@destination_db =
'subDB',@subscription_Type =
'Push',@sync_Type =
'initialize from LSN',@subscriptionlsn = 0x00000023000000E60003000000000000, ----这个值就是我们在4 a)步骤得到的transaction_timestamp
@article =
'all',@update_mode =
'read only',@subscriber_type = 0;
执行完这步之后,事务复制就可以正常工作了。
Alwayson+Replication的更多相关文章
- SQLServer AlwaysOn在阿里云的前世今生
缘起 早在2015年的时候,随着阿里云业务突飞猛进的发展,SQLServer业务也积累了大批忠实客户,其中一些体量较大的客户在类似大促的业务高峰时RDS的单机规格(规格是按照 内存CPUIOPS 一定 ...
- 最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目
最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目 最近一个来自重庆的客户找到走起君,客户的业务是做移动互联网支付,是微信支付收单渠道合作伙伴,数据库里存储的是支付流水和交易流水 ...
- 从0开始搭建SQL Server AlwaysOn 第一篇(配置域控)
从0开始搭建SQL Server AlwaysOn 第一篇(配置域控) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www.cnb ...
- 从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)
从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...
- 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)
从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://w ...
- 从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点)
从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...
- (转) 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)
原文地址: http://www.cnblogs.com/lyhabc/p/4682986.html 这一篇是从0开始搭建SQL Server AlwaysOn 的第三篇,这一篇才真正开始搭建Alwa ...
- (转)从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)
原文地址: http://www.cnblogs.com/lyhabc/p/4682028.html 这一篇是从0开始搭建SQL Server AlwaysOn 的第二篇,主要讲述如何搭建故障转移集 ...
- (转)从0开始搭建SQL Server AlwaysOn 第一篇(配置域控+域用户DCADMIN)
原文地址: http://www.cnblogs.com/lyhabc/p/4678330.html 实验环境: 准备工作 软件准备 (1) SQL Server 2012 (2) Windows S ...
随机推荐
- javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...
- Django基础——Model篇(一)
到目前为止,当程序涉及到数据库相关操作时,我们一般都会这么操作: (1)创建数据库,设计表结构和字段 (2)使用MySQLdb来连接数据库,并编写数据访问层代码 (3)业务逻辑层去调 ...
- javaweb回顾第一篇servlet的学习和理解
前言:关于servlet相信学过java的都不会陌生,我最近又把这些基础知识整理一遍,便于自已能更好的理解ssm或者ssh,下面开始 1:Servlet接口 servlet有5个方法下面分别简单的介绍 ...
- [原创]配置管理技术圈QQ群:129489184
[原创]配置管理技术圈QQ群:129489184 配置管理技术圈QQ群:129489184,研究cvs,svn,git,cc等平台配置技术,涉及版本控制,持续集成,自动化构建等! 欢迎各位同学来,来时 ...
- checkbox的三种状态处理
checkbox只有两种值:选中(checked)或未选中(unchecked).它可以有任何值,但是表单提交时checkbox的值只能是checked或unchecked.它的默认值是uncheck ...
- 常见的特殊字符和HTML之间的对应关系~
No. 文字表記 10進表記 16進表記 文字 Comment 001 " " " """ quotation mark = APL ...
- 管理windows防火墙
1.导出防火墙规则 netsh advfirewall export "c:\advfirewall.wfw" 2.禁用防火墙 netsh firewall set opmode ...
- [leetcode] Min Stack @ Python
原题地址:https://oj.leetcode.com/problems/min-stack/ 解题思路:开辟两个栈,一个栈是普通的栈,一个栈用来维护最小值的队列. 代码: class MinSta ...
- Activemq消息类型
Activemq消息类型JMS规范中的消息类型包括TextMessage.MapMessage.ObjectMessage.BytesMessage.和StreamMessage等五种.ActiveM ...
- js笔记--1
1.创建一个layer层 var GameLayer = cc.Layer.extend({ _time:null, _ship:null, _backSky:null, // 构造函数 ctor:f ...