zoukankan      html  css  js  c++  java
  • SQL Server双机热备之发布、订阅实现实时同步

    一、复制的功能概述  

           SQL Server 复制功能实现了主从库的读写分离,从而将主库的压力分解掉,主库就主要负责数据的增删改等,而从库主要负责查询。另外有了主、从库,也给生产数据增加了一层安全性,即备份。万一主库出了什么问题,从库却还在。

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

    二、搭建前准备

    2.1、硬件准备

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

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

    2.2、搭建前环境准备

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

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

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

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

    如果查出来的两个名字不一样,那就需要把他们的名字改成一样的如果是一样的直接跳过此步骤

        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:windowssystem32driversetc下的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、发布订阅前没有进行完整备份

    六、参考文献(资料)

      主要参考资料

    •  https://blog.csdn.net/u012861467/article/details/76411216
      这篇文章说的是快照复制,但有许多细节、注意事项也是有提及到,对个人的帮助不少,点个赞
    • http://blog.51cto.com/46562434/1156582
      这篇文章说的是如何开启 Windows Server 2008 r2 的网络发现的
    • https://www.cnblogs.com/linyanyao/p/4513257.html
      这篇文章说的是当SQL Server安装后,计算机名称被更改了,要如何才能确认是否被修改,以及如何才能解决修正

      备用参考资料

    • https://www.cnblogs.com/songafeng/p/3839955.html
      这篇文章说的是同一局域网发布不了其他发布、订阅的解决办法。
  • 相关阅读:
    css引入讲解及media
    css中的media
    IE6存在的一些兼容
    Eclipse 反编译插件JadClipse安装
    JavaScript 常用功能总结
    241个jquery插件—jquery插件大全
    javascript深入理解js闭包
    JS拖拽插件实现步骤
    JavaScript拖拽原理的实现
    js实现拖拽效果
  • 原文地址:https://www.cnblogs.com/sgxw/p/13921121.html
Copyright © 2011-2022 走看看