• Sql Server 2017主从配置之:发布订阅


    使用发布订阅模式搭建Sql Server 2017主从同步,类似事件通知机制,基本可以做到准实时同步,可以同时做到一对多的数据同步。
    不过发布订阅模式,只能同时数据,不能同步表结构。在创建发布的时候,需要选择需要同步的表对象,如果有新增表需要做同步,那就需要重新选择表对象,然后重新发布快照。
    该模式在同步时候,不影响从库使用。

    环境准备

    两台服务器,配置都是8g2核,50g硬盘,操作系统版本Windows Server 2019 Datacenter

    • 主库:server1,192.168.56.110
    • 从库:server2,192.168.56.111

    本人使用虚拟机做模拟配置,在虚拟机操作系统上做如下配置

    • 虚拟机配置两张网卡,以便和主机通讯

    • 虚拟机启动远程桌面 ,右键左下角win图标-系统-远程桌面,点击启用

    • 创建操作系统账户sqadmin,分配管理员权限

    • 为方便测试,关闭系统防火墙,控制面板\系统和安全\Windows Defender 防火墙\自定义设置

    • 安装Sql Server 2017企业版,个人的Express版本不支持事务日志复制

    • 安装SSMS 19.2版本

    两台服务共同配置准备

    1、创建系统账号sqadmin,设置管理员权限

    在这里插入图片描述

    2、设置服务启动账户sqadmin

    打开Sql Server Configuration Manager,进入SQL Server 服务,将SQL Server服务和SQL Server 代理服务的登录身份都改成sqadmin,并设置自动启动
    在这里插入图片描述

    3、配置服务器代理账户

    打开SQL Server Management Studio,链接数据库
    右键点击链接,选择属性,打开服务器属性面板,点击安全性选项页,勾选启动代理账户,输入sqadmin账户密码
    在这里插入图片描述

    4、创建数据库账户sqadmin,并设置管理员权限

    在这里插入图片描述
    在这里插入图片描述

    一、主库 server1 配置

    创建快照备份文件夹 c:\dbbackup

    创建测试数据库test,并创建表t_user、t_company作为测试

    注意:每个表都必须有主键,否则无法同步

    create table t_user(            
    id bigint primary key,        --主键
    name nvarchar(50) not null,          --不为空
    );
    create table t_company(            
    id bigint primary key,        --主键
    name nvarchar(50) not null,          --不为空
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    新建发布
    在这里插入图片描述
    输入刚创建的备份文件夹 c:\dbbackup
    在这里插入图片描述
    选择要同步的数据库

    在这里插入图片描述
    选择事务发布
    在这里插入图片描述
    选择需要同步的表
    在这里插入图片描述

    这里没有筛选,直接下一步
    在这里插入图片描述
    快照代理,选择“立即创建快照…”,然后下一步
    在这里插入图片描述
    点击“安全设置”,配置快照代理账户
    在这里插入图片描述
    选择立即创建快照,然后点击下一步
    在这里插入图片描述
    随便输入一个发布名称,比如test_bakcup,点击完成
    在这里插入图片描述
    在这里插入图片描述
    打开快照备份文件夹,可以看见表快照已经成功生成!
    在这里插入图片描述
    至此,主库发布创建完成,接下来到从库创建订阅

    二、从库 server2 配置

    创建备份数据库 test_bak

    新建订阅,下来选择查找发布服务器,
    在这里插入图片描述
    输入主库ip,链接到主库
    在这里插入图片描述
    选择主库的订阅
    在这里插入图片描述
    选择选项一,在分发服务器上运行所有代理,然后点击下一步
    在这里插入图片描述
    选择从库的数据库 test_bak

    在这里插入图片描述
    配置分发代理,输入账号sqadmin
    在这里插入图片描述
    配置完成后点击下一步,直到完成

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    至此,订阅配置完成,可以看见两个表已经同步过来了
    在这里插入图片描述

    三、测试

    查看快照代理状态
    在这里插入图片描述

    在这里插入图片描述

    注意:如果重新选择了表对象,需要在这里点击“启动”,重新生成新的快照,否则新选择的表对象无法同步到从库

    在这里插入图片描述

    查看从库同步状态
    在这里插入图片描述
    在这里插入图片描述

    1、在主库创建记录

    insert into t_user values (1,'01');
    insert into t_user values (2,'02');
    
    insert into t_company values (1,'C01');
    insert into t_company values (2,'C02');
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2、在从库查询

    select * from t_user;
    select * from t_company;
    
    • 1
    • 2

    在这里插入图片描述

  • 相关阅读:
    DTK Barcode Recognition SDK Crack
    代码随想录算法训练营Day44 | 动态规划(6/17) 完全背包理论基础 LeetCode 518. 零钱兑换 II 377. 组合总和 Ⅳ
    MinIO Server配置NGINX代理官网文档翻译
    短文案查询易语言代码
    Leetcode刷题449. 序列化和反序列化二叉搜索树
    全新 UI 震撼来袭!ng-matero v18 正式发布!
    共模电感的仿真应用来了,满满的干货送给大家
    Vue实现登录功能全套详解(含封装axios)
    TCP的三次握手、四次挥手
    mysql请求阻塞
  • 原文地址:https://blog.csdn.net/wlddhj/article/details/134488479