一、复制的功能概述

SQL Server 复制功能实现了主从库的分离,从而将主库的压力分解掉,主库就主要负责数据的更改等,而主库主要负责查询ji。另外,有了主、从库,则从另一个方面,也了一层安全性,即:备份。万一主从出了什么问题,从库却还在。

本文主要讲述的是通过:发布-订阅的方式实现数据库的主、从分离。因此需要配置一个发布服务器与一个订阅服务器。其中发布服务器负责将数据分布到相应的订阅服务器上,而订阅服务器,则负责接收数据,并将数据整合、更新到自己库上,从而保证其数据与主库一样。下面将自己配置发布与订阅的流程以及遇到的问题详细记录如下。

二、搭建前准备

2.1、硬件准备

发布服务器SKTSEV001: (PC1),数据库服务名: SKTSEV001

订阅服务器SKTNB033: (PC2),数据库服务名:SKTNB033

2.2、搭建前环境配置

准备工作1: 配置机器名和数据库服库名是否一致

先检查A,B中的机器名和数据库服务名是否一致,这个很重要!

1.检查SQL Server 的服务器名称

use master
go
select @@servername
select serverproperty('servername')

如果查出来的两个名字不一样,那就需要把他们的名字改成一样的,方法如下:2.使用下面语句判断计算机名称是否被修改,以及修正该问题(如果是一样的直接跳过此步骤

    if serverproperty('servername') <> @@servername
begin
declare @server sysname
set @server = @@servername
exec sp_dropserver @server = @server
set @server = cast(serverproperty('servername') as sysname)
exec sp_addserver @server = @server , @local = 'LOCAL'
End

准备工作2:打开PC1 与 PC2 的共享访问

PC1:右下角任务栏网络图标右击---点击“打开网咯和internet设置”--- “网络和共享中心”---“更改高级共享设置”---点选“启用网络发现”“启用文件和打印机共享”---点击“确定”

PC2: 右下角任务栏网络图标右击---点击“打开网络和共享中心”---点击“更改高级共享设置”---点选“启用网络发现”“启用文件和打印机共享”

准备工作3:防火墙开1433端口

PC1:右下角任务栏网络图标右击---点击“打开网咯和internet设置”---点击“WINDOWS防火墙”---确保“域网络”“专用网络”“公用网络”防火墙都有启用---点击“高级设置”---点击左侧“入站规则”—点击右侧“新建规则”---点选“端口”---下一步---点选“TCP”,“特定本地端口”输入“1433”---下一步---点选“允许连接”---下一步---勾选所有网络环境---下一步---“名称”输入“1433”---完成---此时在入站规则名称下能够看到1433

继续操作---右击“1433”---点击“属性”---点击“协议和端口”标签---将“协议类型”修改为“任何”---点击“确认”(经测试若不开启所有协议,订阅主机会查找不到发布主机)

PC2:右下角任务栏网络图标右击---点击“打开网络和共享中心”---点击“windows防火墙”---确保防火墙有启用---点击“高级设置”---点击左侧“入站规则”—点击右侧“新建规则”---点选“端口”---下一步---点选“TCP”,“特定本地端口”输入“1433”---下一步---点选“允许连接”---下一步---勾选所有网络环境---下一步---“名称”输入“1433”---完成---此时在入站规则名称下能够看到1433

继续操作---右击“1433”---点击“属性”---点击“协议和端口”标签---将“协议类型”修改为“任何”---点击“确认”

准备工作4:配置SQL ServerTCP/IP(PC1、PC2)

PC1: 在程序列表中打开“SQL Server 2016配置管理器”---打开“SQL server网络配置”---点击“SQL2016的协议”---右击右侧“TCP/IP”---点击“属性”---点击“IP地址”---将所有TCP Port改为“1433”,在用IP地址的enable改为“是”

PC2:开始---所有程序---microsoft SQL server 2008---配置工具---SQLserver配置管理器---打开“SQL server网络配置”---点击“SQL2016的协议”---右击右侧“TCP/IP”---点击“属性”---点击“IP地址”---将所有TCP 端口改为“1433”,在用IP地址的已启用改为“是”

准备工作5:Sql Server Browser 服务开启(PC1、PC2)

如果在SSMS工具中找不到局域网内的其他数据库服务器,可以开启这个功能

SQLserver配置管理器---打开“SQL server服务”---右侧右击“SQL ServerBrowser”---启动

准备工作6:验证登陆用户(PC1、PC2)

两台主机都有cdgl此用户  且登陆密码相同

在程序列表打开“Microsoft SQL Server managerment studio+版本”---登陆本地数据---打开“安全性”---右击“登录名”---点击“新建登录名”---默认“windows身份验证”---点击“搜索”---输入“cdgl”查找(查找结果为主机名+cdgl)---点击“确定”---点击“确定”

准备工作7:打开数据库远程访问(PC1、PC2)

在程序列表打开“Microsoft SQL Server managerment studio+版本”---登陆本地数据---

右击登陆数据库“数据库名”---点击“属性”---点击“连接”---勾选“允许远程连接到此服务器”---点击“确定”

准备工作8:测试PC1、PC2能否互通(这里要用服务器名ping)

PC1:      ping         SKTNB033

telnet       SKTNB033      1433

PC2:      ping        SKTSEV001

telnet       SKTSEV001      1433

ping结果:

这里一定要用服务器名去ping,如果服务器名ping不通后面就算订阅成功了数据也过不去,解决办法之一是配置host,找到 PC1服务器文件  c:\windows\system32\drivers\etc下的hosts文件:(如果能ping的通则可忽略此步骤)

在最后一行填上PC2服务器的ip 和主机名, 注意:ip和名字之间隔空格,这个ip可是是内网,也可以是公网

 PC2配置同理:(如果服务器名能ping的通则可忽略此步骤)

在PC2服务器进行相同的操作主机上进行相同的添加host操作 ,将PC1服务器的ip 和主机名 添加到PC2服务器的hosts文件下面.

三、创建发布

使用sa账户登录PC1,打开复制-本地发布-点击“新建发布”

点击下一步

注意:..\ ReplData这个文件夹是发布所在的文件夹,要保持访问权限,当在c盘时,有时可能会出现无法访问,我这里一般会给ReplData这个文件夹加上everyone权限

下一步:

选择后,点击下一步:

下一步,筛选一般不管,如果对数据同步频率要求比较高,则勾选“计划在以下时间运行快照代理”点击更改:

下一步,点击安全设置:

点击“确定”---下一步---下一步---“发布名称”输入“DB Back”---点击“完成”---等待创建发布成功

四、本地订阅

PC2(订阅主机)用sa账户登陆本地数据库---打开“复制”---右击“本地订阅”---点击“新建订阅”---打开“发布服务器”下拉列表---点击“查找sql server 发布服务器”

下一步---点选“在发布服务器PC1上运行所有代理”---下一步---打开“订阅数据库下拉列表”---点击“新建数据库”

“数据库名称”输入“DBAdmin”(PC2与PC1数据库名称相同)---点击“确定”---点击“完成”---点击“完成”---等待创建订阅

下一步,点击安全设置

下一步,点击完成即可,等待创建完成:

在PC1右击复制-启动复制编辑器-点击快照代理,如果订阅没有成功,或者数据没能同步,可以在这里看看日志,查找原因:

五、常见问题

1、 两台主机的 1433端口互相不通

2、SqlServer Agent 代理没有开启

3、 没有配置 hosts 文件中的ip和主机名映射

4、ReplData文件夹权限不足

5、发布订阅前没有进行完整备份

SQL Server双机热备之发布、订阅实现实时同步的更多相关文章

  1. SQL Server双机热备之后项目的FailOver自动连接

    SQL Server配置数据库镜像后,可能有朋友们会比较有疑惑,你一下搞两个数据库出来,他们的ip地址都不一样,到时候数据库切换过去了,我的数据库的连接字符串可如何是好?难道还得在代码中去控制是连接哪 ...

  2. SqlServer双机热备技术实践笔记

    SqlServer双机热备,大体上可以通过发布订阅,日志传送,数据库镜像来实现. 1,发布--订阅 是最早最简单的方案,但需要注意发布的时候,发布进程必须对快照目录有访问权限,这个问题可以从“查看快照 ...

  3. [置顶] SQL Server 2005 双机热备的实现

    [置顶] SQL Server 2005 双机热备的实现 分类: SQLSERVER2011-08-24 21:25 901人阅读 评论(0) 收藏 举报 sql servermicrosoftsql ...

  4. SQLServer 2005 数据库定阅复制实现双机热备(主要是sharepoint 内容数据库)

    原文:SQLServer 2005 数据库定阅复制实现双机热备(主要是sharepoint 内容数据库) 场景 公司最近的sharepoint的数据库服务器老是出问题,并且在一旦出现问题,就导致无法正 ...

  5. 第十节: 利用SQLServer实现Quartz的持久化和双机热备的集群模式 :

    背景: 默认情况下,Quartz.Net作业是持久化在内存中的,即 quartz.jobStore.type = "Quartz.Simpl.RAMJobStore, Quartz" ...

  6. Oracle 双机热备+双机冷备+负载均衡

    引用地址:https://wenku.baidu.com/view/7cca62f1ddccda38366baf7f.html SQL Server 2008 R2双机热备 引用地址:https:// ...

  7. CentOS系统MySQL双机热备配置

    1  概述 在集成项目中需要应对不同环境下的安装配置,主流操作系统大致可以分为三种:Linux.Windows以及UNIX.其中Linux备受青睐的主要原因有两个: 首先,Linux作为自由软件有两个 ...

  8. MySQL 5.6 双机热备windows7

    MySQL 5.6 双机热备 目录: 1.说明 2.数据手工同步 3.修改主数据库配置文件 4.修改从数据库配置文件 5.主数据库添加备份用户 6.从数据库设置为Slave 7.验证 1.说明 1)数 ...

  9. 使用sqlserver搭建高可用双机热备的Quartz集群部署【附源码】

    一般拿Timer和Quartz相比较的,简直就是对Quartz的侮辱,两者的功能根本就不在一个层级上,如本篇介绍的Quartz强大的序列化机制,可以序列到 sqlserver,mysql,当然还可以在 ...

随机推荐

  1. 【小白学PyTorch】15 TF2实现一个简单的服装分类任务

    [新闻]:机器学习炼丹术的粉丝的人工智能交流群已经建立,目前有目标检测.医学图像.时间序列等多个目标为技术学习的分群和水群唠嗑的总群,欢迎大家加炼丹兄为好友,加入炼丹协会.微信:cyx64501661 ...

  2. Hbuilder给手机发送短信与拨打电话

    前言:业务场景 需要给手机号码拨打电话与发送短信.html5已经提供接口. methods: { Call: function() { var that = this; if(that.ptel == ...

  3. JAVA运行环境 和 Java Applet的运行环境 的区别

    Java小程序,也就是Java Applet,可以在Web浏览器中运行.Java Applet必须以<applet>脚本的形式嵌入到HTML页面中,才能在web浏览器中运行. 之前总以为本 ...

  4. python单元测试框架pytest

    首先祝大家国庆节日快乐,这个假期因为我老婆要考注会,我也跟着天天去图书馆学了几天,学习的感觉还是非常不错的,这是一篇总结. 这篇博客准备讲解一下pytest测试框架,这个框架是当前最流行的python ...

  5. Arduino Wire.h(IIC/ I2C)语法

    转自:https://www.cnblogs.com/1996jiwei/p/6561681.html 本文转自上面链接,版权请直接参考原链接. 最近在用I2C进行通信交流,发现有两种方法的头文件需要 ...

  6. 【题解】[JSOI2007]字符加密

    Link \(\text{Solution:}\) 后缀数组第一题祭-- 观察一下,这个是让求一个环形的原字符串的后缀,我们可以考虑一下断环为链. 对于\(aba\)我们扩展成\(abaaba,\)则 ...

  7. Python 自动化测试全攻略:五种自动化测试模型实战详解

    随着移动互联网的发展,软件研发模型逐步完善,软件交付质量越来越受到软件公司的重视,软件测试技术特别是自动化测试技术开始在软件系统研发过程中发挥着越来越重要的作用. 与传统的手工测试技术相比,自动化测试 ...

  8. shell-的特殊变量-位置变量$0 $n $* $# $@详解

    一:shell特殊变量  1. 位置变量 $0 获取当前执行的shell脚本的文件名,包括路径 $n 获取当前执行的shell脚本的第n个参数值,n=1..9,当n为0时表示脚本的文件名,如果n大于9 ...

  9. ubuntu19.10 系统需要安装的软件

    将ubuntu18 升级到ubuntu19 期间好几次卡在启动界面,比较担心要不要重装系统,有幸后来正常了.明显感觉操作快了不少.下半年稳定版就出来,到时候免不了再折腾一番,提前把安全记录做好. 下面 ...

  10. Python+Appium自动化测试(14)-yaml配置Desired capabilities

    一,前言 在之前的appium自动化测试示例中,我们都是把构造driver实例对象的数据(即Desired Capabilities)写在业务代码里,如下: # -*- coding:utf-8 -* ...