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 ...
随机推荐
- python遍历数据
#coding=utf-8 import MySQLdb conn = MySQLdb.Connect(host = '127.0.0.1',port=3306,user='root',passwd= ...
- 【转】BitKeeper与Linux,git史前琐事
http://www.path8.net/tn/archives/6039 维持数年的BitKeeper与Linux的关系最终还是落入了好莱坞明星婚姻式的结局.他们曾经相得益彰,最后却走到这个遗憾的地 ...
- mac上安装homebrew
1:关于homebrew下载地址 homebrew下载地址网上版本很多:我用了几个都是显示 404 bad request 如图:均无法现在 有一个网址会给出最新的 安装地址: the URL is: ...
- 今天踩过的坑——structs和spring
struts 如果实现了CookiesAware了,还需要引用org.apache.struts2.interceptor.CookieInterceptor过滤器,否则拿不到值同时还要能看到这样的错 ...
- iOS 9 failed for URL: "XXX://@" - error: "This app is not allowed to query for scheme XXX" iOS 从APP里启动另一APP
iOS 从C APP里启动 D APP 首先在D APP里设置 URL Schemes 在info.plist 文件里添加URL Schemes URL Types -->item0 --> ...
- 搭建自己的OpenWrt开发环境
1. 安装环境Linux系统,如果在CentOS上操作,需安装如下依赖包:yum install binutils bzip2 gawk gcc gcc-c++ gettext makencurse ...
- ELK——安装 logstash 2.2.0、elasticsearch 2.2.0 和 Kibana 3.0
本文内容 Elasticsearch logstash Kibana 参考资料 本文介绍安装 logstash 2.2.0 和 elasticsearch 2.2.0,操作系统环境版本是 CentOS ...
- Scala 具体的并行集合库【翻译】
原文地址 本文内容 并行数组(Parallel Array) 并行向量(Parallel Vector) 并行范围(Parallel Range) 并行哈希表(Parallel Hash Tables ...
- CoreData多线程安全
CoreData中的NSManagedObjectContext在多线程中不安全,如果想要多线程访问CoreData的话,最好的方法是一个线程一个NSManagedObjectContext, ,每个 ...
- 题目1533:最长上升子序列 (nlogn | 树状数组)
题目1533:最长上升子序列 http://ac.jobdu.com/problem.php?pid=1533 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:857 解决:178 题目描 ...