十年河东,十年河西,莫欺少年穷

学无止境,精益求精

先决条件

主服务器也称之为分发服务器,从服务器称之为订阅服务器

下文皆按照主/从服务器称呼

主服务器和订阅服务器需在同一个内网网络内

主服务器和订阅服务器安装相同版本sqlserver,本例以sqlserver2014为范例进行

主服务器:172.27.40.27

主服务器 sqlserver2014 主机名:IZQY9C2TQSKGS9Z

要求:同一个内网

从服务器:172.27.40.29

从服务器 sqlserver2014 主机名:iZ4evvi63blumaZ

要求:同一个内网

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_数据库

数据库相关

数据库主机名

1)SQL Server数据库实例主机名需与本地服务器名称一致:

--本地服务器名称
SELECT @@SERVERNAME
--数据库实例主机名
SELECT SERVERPROPERTY('ServerName')

2)若出现SQL Server数据库实例主机名与本地服务器名称不一致的情况,可通过以下语句来更改:

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

更改完成后请重启SQL Server服务:

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_服务器_02

建立复制账户,测试连通性

所有发布订阅机器都建立该登录名和密码;给予了系统管理员权限;

USE [master]

GO

CREATE LOGIN [repl] WITH PASSWORD=N'a123456!'

GO

ALTER SERVER ROLE [sysadmin] ADD MEMBER [repl]

GO

启动sqlserver代理账户,登录身份设置为LocalSytem

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_数据库_03

配置hosts文件

文件路径:C:\Windows\System32\drivers\etc

主服务器配置如下:

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_服务器_04

 从服务器配置如下

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_服务器_05

主服务器配置共享目录

在D盘或其他盘配置共享目录,需要说明的是最好不要配置到系统C盘,防止C盘无限扩大,影响系统运行

在D盘新建文件夹DBShare,在DBShare文件夹中新建子文件夹DbPublish,并设置为共享文件夹,具体步骤如下:

 设置安全性,

给Everyone 完全控制权限,如果默认组或用户名中没有Everyone,则通过编辑->添加->高级->查找,找到Everyone,并赋予权限

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_服务器_06

设置为共享目录,

设置为共享目录,供从服务器访问

属性中,共享,选择Everyone 

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_服务器_07

主从服务器均需要在防火墙配置出入站1433端口

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_服务器_08

以上先决条件准备好后,则开启配置

主服务器配置分发

点击:复制,配置分发

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_服务器_09

 这里面需要注意,如果之前配置过分发,当你点击复制时,不会再弹出配置分发对话框,你需要删除之前配置的分发,然后重新点击复制,重新配置即可

下一步

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_sql_10

 再下一步

 配置快照文件夹,也就值之前共享的DBShare文件夹,如下

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_数据库_11

 快照文件夹的路径需修改为箭头所指的网络路径,如下:

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_sql_12

 再下一步

配置分发数据文件及日志文件夹路径

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_sql_13

 这里文件夹路径请填写共享目录DBShare的子目录DBPublish

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_服务器_14

 再下一步

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_数据库_15

 再下一步

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_服务器_16

 点击完成

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_服务器_17

 待成功后退出。

本地发布->新建发布

选择要发布的数据库

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_数据库_18

点击下一步

选择事务发布

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_sql_19

 

点击下一步

选择所有表/存储过程/视图等

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_数据库_20

 

点击下一步

不做筛选

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_服务器_21

点击下一步

选中箭头所指处

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_服务器_22

 点击下一步

点击安全设置

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_sql_23

 选择使用以下sqlserber登录名,也就是先决条件中创建的账户

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_sql_24

 确定后,点击下一步

创建发布,点击下一步

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_sql_25

 起个名字,点击完成

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_数据库_26

 点击完成后

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_服务器_27

 主服务器配置基本完成。下面开始进行从服务器配置

从服务器订阅

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_服务器_28

 新建订阅,弹出框后点击下一步

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_sql_29

 点击查账sqlserver发布服务器

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_服务器_30

 选择发布

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_数据库_31

 点击下一步

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_服务器_32

 点击下一步

选择订阅数据库,

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_服务器_33

 点击下一步

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_服务器_34

 分发代理安全性设置

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_服务器_35

 确定后,下一步,选择连续运行

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_数据库_36

 点击下一步

选择立即,

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_数据库_37

 点击下一步

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_sql_38

 点击下一步

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_数据库_39

 

成功后退出,查看数据库ChargeDB中是否将主服务器表数据同步成功

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_数据库_40

 同步成功。

需要注意的是:从库不能新增修改删除,只能用于查询,切记

以上over

核验与监视

复制监视器

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_sql_41

我们这里可以看发布、订阅、代理等信息

(1)发布服务器查看

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_sql_42

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_服务器_43

 

在这里,可以双击订阅监视列表数据,然后双击进去可以查看该行订阅的同步情况;

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_sql_44

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_数据库_45

注意,这里的代理也是发布服务器的代理哦;

 

(2)具体发布对应的信息查看

我们可以选中具体发布名称,然后就可以查看到和它相关的所有订阅,代理情况,发生的警告等等

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_服务器_46

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_数据库_47

WindowsServer--SQL Server搭建主从同步实现读写分离 - 事务性分发_数据库_48