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 ...
随机推荐
- iOS-常用的辅助工具软件
1.Navicat Premium11.0.20破解版快速安装配置(附文件) Navicat Premium是当下非常好用的数据库管理软件,但是价格非常昂贵,并且还有某些小bug,感觉3000+的 ...
- iOS---内存优化
在用非ARC模式编写iOS程序的时候,造成程序内存泄露在所难免,后期我们一般会进行内存优化.自己比较常用的内存优化方法有两种 1.Analyze,静态分析内存泄露的方法.很简单,在Xcode菜单栏中点 ...
- 用自己的算法实现startsWith和endsWith功能
package hanqi; import java.util.Random; import java.util.Scanner; public class zuoye { public static ...
- 进度的Block在子线程调用
[_pictureView sd_setImageWithURL:[NSURL URLWithString:item.image2] placeholderImage:nil options:SDWe ...
- iOS开发拓展篇——如何把项目托管到GitHub
iOS开发拓展篇——如何把项目托管到GitHub 说明:本文主要介绍如何把一个OC项目托管到Github,重操作轻理论. 第一步:先注册一个Github的账号,这是必须的 注册地址:Github官网注 ...
- MySQL Cluster 7.3.3 官方版本下载
MySQL Cluster 是 MySQL 适合于分布式计算环境的高实用.高冗余版本.它采用了NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服务器.在MyQL 5. ...
- Activiti 部署流程定义及相关的表(classpath部署、zip部署)
package com.mycom.processDefinition; import org.activiti.engine.ProcessEngine; import org.activiti.e ...
- select选择框内容左右移动添加删除栏(升级)
先看一下之前的版本(10年前的作品了) 新版增加了拖动事件(双向及本列),双击左右自动移动,修正了算法性能更好: 也更新了如果姓名长度太长显示变形问题
- JVM常见的七种垃圾收集器的简单比较
1.Serial收集器曾经是虚拟机新生代收集的唯一选择,是一个单线程的收集器,在进行收集垃圾时,必须stop the world,它是虚拟机运行在Client模式下的默认新生代收集器. 2.Seria ...
- android获取本机的IP地址和mac物理地址
/获取本机IP地址 public String getLocalIpAddress() { WifiManager wifiManager = (WifiManager) getSystemServi ...