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 ...
随机推荐
- Java 命名空间的由来和引入
名字可视性(Name visibility) 名字管理对任何程序设计语言来说,都是一个重要问题.如果你在程序的某个模块里使用了 一个名字,而其他人在这个程序的另一个模块里也使用了相同的名字,那么怎样才 ...
- Java和.net常用开发框架组合
Java: SSH和SSM 1.SSH是Spring(控制)+Struts(展现)+Hibernate(ORM)的缩写:此组合更严谨,适合企业级行业开发等等.2.SSM是Spring(控制)+Spri ...
- 在Windows下使用Nodist进行Node版本控制
完全卸载Node.js 首先卸载Node.js应用程序 确认在C:\Program Files中没有Nodejs目录 确认在C:\Program Files (x86)没有Nodejs目录 删除C:\ ...
- Nginx + FastCgi + Spawn-fcgi + c 的架构
参考: nginx+c/c++ fastcgi:http://www.yis.me/web/2011/11/01/66.htm cgi探索之路:http://github.tiankonguse.co ...
- 通过反射获取Android通知栏高度
public static int getStatusBarHeight(Context context){ Class<?> c = null; Object obj = null; F ...
- Windows XP 中设置VPN(PPTP连接方式)
第一步:点开始-网上邻居或者控制面板-网络连接,选择-创建一个新的连接 第二步:点击-下一步 第三步:选择-连接到我的工作场所的网络,点击-下一步 第四步:选择-虚拟专用网络连接,点击-下一步 第五步 ...
- android开发常见编程错误总结
1.设置TextView的文本颜色 1 2 3 TextView tv; ... tv.setTextColor(R.color.white); 其实这样设置的颜色是 R.color.white的资源 ...
- ecshop 加广告出现广告位的宽度值必须在1到1024之间
打开 admin/ad_position.php这个文件,搜索1024,这里你会搜到两个地方 在236行左右 if ($ad_width > 1024 || $ad_width < 1) ...
- Android软件安全开发实践(下)
Android开发是当前最火的话题之一,但很少有人讨论这个领域的安全问题.本系列将分两期,探讨Android开发中常见的安全隐患和解决方案.第一期将从数据存储.网络通信.密码和认证策略这三个角度,带你 ...
- Openvswitch原理与代码分析(2): ovs-vswitchd的启动
ovs-vswitchd.c的main函数最终会进入一个while循环,在这个无限循环中,里面最重要的两个函数是bridge_run()和netdev_run(). Openvswitch主要 ...