一.

1.先决条件

(1)首先必须要有一个主库,从库可以现在建,也可以在新建订阅向导的时候建。

PostgreSQL和SQL Server 读写分离 mssql 读写分离_linq

 (2)服务器电脑中服务的配置

PostgreSQL和SQL Server 读写分离 mssql 读写分离_c#_02

2.配置分发

如果是远程服务器,一定要用mstsc登录远程服务器内,在服务器中的SSMS中操作,且需用sa账户登录

(1)右键【复制】,点击【配置分发】(如果没有配置分发,请看后面·5.删除配置)

PostgreSQL和SQL Server 读写分离 mssql 读写分离_c#_03

 

PostgreSQL和SQL Server 读写分离 mssql 读写分离_右键_04

(2)点击下一步 

 这个分发服务器 可以选其他电脑  我暂时有只有一台电脑 选自己就好了

PostgreSQL和SQL Server 读写分离 mssql 读写分离_linq_05

(3)点击下一步 

 

PostgreSQL和SQL Server 读写分离 mssql 读写分离_数据库_06

(4) 这里需要配置一个快照文件夹

快照文件夹 是几个数据库 都要能够访问的文件夹,正常情况是 每个数据库都在同一个局域网的不同的电脑上。所以这个文件夹 不要用C盘的文件(如果只有一个C盘那也没办法)  以防 权限不够 。所以要几台电脑都可以访问 就设置一个共享文件夹,文件夹的权限给大一点儿。

PostgreSQL和SQL Server 读写分离 mssql 读写分离_服务器_07

(5)选择对应的文件夹后,点击下一步

PostgreSQL和SQL Server 读写分离 mssql 读写分离_数据库_08

 (6)点击下一步...

PostgreSQL和SQL Server 读写分离 mssql 读写分离_c#_09

 

PostgreSQL和SQL Server 读写分离 mssql 读写分离_linq_10

 (7)点击【完成】

PostgreSQL和SQL Server 读写分离 mssql 读写分离_服务器_11

(8)配置成功 

 

PostgreSQL和SQL Server 读写分离 mssql 读写分离_c#_12

 如果没有配置成功,需要查看文件夹和代理服务

PostgreSQL和SQL Server 读写分离 mssql 读写分离_右键_13

上图就是没有将SqlServer代理设为自动启动,并且启动它。 

右键【复制】,如果有【发布服务器属性】,说明配置成功。

PostgreSQL和SQL Server 读写分离 mssql 读写分离_右键_14

3.新建发布

(1)右键【复制】,点击【新建发布】

PostgreSQL和SQL Server 读写分离 mssql 读写分离_服务器_15

如果弹出下面这个框图,说明,你是在自己的电脑用SSMS远程连接的远程服务器,并且上面的操作是在你自己的电脑上用的,因为这个服务器内的ip地址和服务器外的公网ip地址是不一样的,所以他这里会显示让他的外网地址作为服务器启用。

正确的操作是:我们用mstsc连接到远程服务器内,在其远程服务器本地中进行配置分发操作。

PostgreSQL和SQL Server 读写分离 mssql 读写分离_服务器_16

 (2)点击【下一步】

PostgreSQL和SQL Server 读写分离 mssql 读写分离_c#_17

  (3)选择发布数据库,然后点击【下一步】

 

PostgreSQL和SQL Server 读写分离 mssql 读写分离_数据库_18

(4)选择事务发布

 

PostgreSQL和SQL Server 读写分离 mssql 读写分离_数据库_19

发布类型参考:事务复制的发布类型 | Microsoft Docs

PostgreSQL和SQL Server 读写分离 mssql 读写分离_linq_20

(5)如果库中没有含有主键的表会报错,需要去数据库中建含有主键的表,

然后勾选全部的表,然后点击【下一步】

PostgreSQL和SQL Server 读写分离 mssql 读写分离_linq_21

 

PostgreSQL和SQL Server 读写分离 mssql 读写分离_服务器_22

(6)筛选,来选择哪些字段发布,哪些字段不发布,我们默认全部就好,点击【下一步】

 

PostgreSQL和SQL Server 读写分离 mssql 读写分离_右键_23

 (7)勾选第一个框,然后点击【下一步】

PostgreSQL和SQL Server 读写分离 mssql 读写分离_c#_24

 (8)点击【安全设置】

 

PostgreSQL和SQL Server 读写分离 mssql 读写分离_右键_25

  (8)然后选择代理服务账户,且输入SqlServer账户和密码,如下,然后点击【确定】

PostgreSQL和SQL Server 读写分离 mssql 读写分离_服务器_26

 (9)【安全设置】完后然后点击【下一步】

PostgreSQL和SQL Server 读写分离 mssql 读写分离_linq_27

 (10)如下,然后点击【下一步】

PostgreSQL和SQL Server 读写分离 mssql 读写分离_服务器_28

 (11)填写发布名称,点击【完成】

PostgreSQL和SQL Server 读写分离 mssql 读写分离_linq_29

 (12)新建发布成功

PostgreSQL和SQL Server 读写分离 mssql 读写分离_服务器_30

PostgreSQL和SQL Server 读写分离 mssql 读写分离_服务器_31

4.新建订阅

(1)右键【本地订阅】,点击【新建订阅】

PostgreSQL和SQL Server 读写分离 mssql 读写分离_数据库_32

(2) 点击【下一步】

PostgreSQL和SQL Server 读写分离 mssql 读写分离_c#_33

(3) 选择对应的发布,然后点击【下一步】(也可以直接右键对应的发布,进行订阅)

PostgreSQL和SQL Server 读写分离 mssql 读写分离_linq_34

 (4)选择第一个, 点击【下一步】

PostgreSQL和SQL Server 读写分离 mssql 读写分离_右键_35

 (5)然后勾选订阅服务器,选择从库, 然后点击【下一步】

PostgreSQL和SQL Server 读写分离 mssql 读写分离_右键_36

(6)也可以直接在这里新建数据库

PostgreSQL和SQL Server 读写分离 mssql 读写分离_右键_37

 输入数据库名,然后点击确定生成

PostgreSQL和SQL Server 读写分离 mssql 读写分离_linq_38

  然后点击【下一步】

PostgreSQL和SQL Server 读写分离 mssql 读写分离_数据库_39

 (7)如下,点击...进行配置

PostgreSQL和SQL Server 读写分离 mssql 读写分离_服务器_40

 (8)然后按照下图,进行配置,输入数据库的账号和密码,点击【确定】

PostgreSQL和SQL Server 读写分离 mssql 读写分离_右键_41

 (9)配置好后,点击【下一步】 ,点击【下一步】 ,点击【下一步】 ,点击【下一步】 

PostgreSQL和SQL Server 读写分离 mssql 读写分离_c#_42

PostgreSQL和SQL Server 读写分离 mssql 读写分离_服务器_43

PostgreSQL和SQL Server 读写分离 mssql 读写分离_linq_44

  (10)然后点击【完成】,点击【完成】

PostgreSQL和SQL Server 读写分离 mssql 读写分离_右键_45

PostgreSQL和SQL Server 读写分离 mssql 读写分离_c#_46

  (11)然后创建完成。

PostgreSQL和SQL Server 读写分离 mssql 读写分离_右键_47

 同步有延迟,从表的结构和数据都是从主表复制过来的

对主表进行修改会自动同步到从表,但是对从表进行修改,不会同步到主表。

5.删除发布配置

(1)右键【复制】,点击【禁用发布和分发】

 

PostgreSQL和SQL Server 读写分离 mssql 读写分离_linq_48

(2)点击是,然后点击【下一步】

PostgreSQL和SQL Server 读写分离 mssql 读写分离_右键_49

可能没有这个,直接跳到下一个图,然后点击【下一步】

PostgreSQL和SQL Server 读写分离 mssql 读写分离_服务器_50

(3)点击【下一步】

 

PostgreSQL和SQL Server 读写分离 mssql 读写分离_c#_51

(3)然后点击【完成】

 

PostgreSQL和SQL Server 读写分离 mssql 读写分离_服务器_52

(4)禁用成功

 

PostgreSQL和SQL Server 读写分离 mssql 读写分离_数据库_53

(5)禁用不成功

PostgreSQL和SQL Server 读写分离 mssql 读写分离_服务器_54

点击关闭,看看有哪些窗口啥的没有关闭的给关掉,看看2个文件夹下的内容能不能删掉,如果右键【复制】,还能【禁用发布和分发】,说明没删掉,继续删。

PostgreSQL和SQL Server 读写分离 mssql 读写分离_c#_55

在真实的生产环境中,这几个服务器需要在同一个局域网内,本地即作为发布服务器也作为订阅服务器