环境:SQLServer 2016


随着时间的推移,用户量的增长,访问量暴增,单一的数据库服务器已经无法满足我们的要求,读写分离逐渐进入我们的视野。

读写分离是居于数据库的查询业务远多于增删改业务这个前提去做的。

就是一主多从,主服务器负责增删改操作,从服务器负责查询业务。

sql server 读写分离延迟 sqlserver读写分离方案_服务器

(百度)

那么怎么去做数据的同步工作,用 【SQL Server 复制】。

SQL Server 复制 

复制是一组技术,它将数据和数据库对象从一个数据库复制和分发到另一个数据库,然后在数据库之间进行同步以保持一致性。 使用复制,可以通过局域网和广域网、拨号连接、无线连接和 Internet 将数据分配到不同位置以及分配给远程或移动用户。

事务复制通常用于需要高吞吐量的服务器到服务器方案(包括:提高可伸缩性和可用性、数据仓库和报告、集成多个站点的数据、集成异类数据以及减轻批处理的负荷)。 合并复制主要是为可能存在数据冲突的移动应用程序或分步式服务器应用程序设计的。 常见应用场景包括:与移动用户交换数据、POS(消费者销售点)应用程序以及集成来自多个站点的数据。 快照复制用于为事务复制和合并复制提供初始数据集;在适合数据完全刷新时也可以使用快照复制。 利用这三种复制, SQL Server 提供功能强大且灵活的系统,以便使企业范围的数据同步。 Windows Server 2012 和 Windows 8都支持复制到 SQLCE 3.5 和 SQLCE 4.0。

 本文也主要介绍SQL Server 复制的操作步骤,就是怎么搭建一个数据库读取分离环境。

目录

一、配置分发服务器

二、新建发布

三、新建订阅


一、配置分发服务器

1、选中【复制】,右键选择【配置分发(C)】

sql server 读写分离延迟 sqlserver读写分离方案_数据库_02

2、配置分发向导,点【下一步】

sql server 读写分离延迟 sqlserver读写分离方案_SQLServer复制_03

3、选择分发服务器,点【下一步】

sql server 读写分离延迟 sqlserver读写分离方案_SQLServer复制_04

4、选择启动代理服务器的方式,点【下一步】

sql server 读写分离延迟 sqlserver读写分离方案_数据库_05

5、输入快照存放的位置,需要一个共享文件夹,可以在网络上访问的那种

sql server 读写分离延迟 sqlserver读写分离方案_SQLServer复制_06

把共享路径放到快照文件夹下面,点【下一步】

sql server 读写分离延迟 sqlserver读写分离方案_sql server 读写分离延迟_07

6、修改分发数据库名,点【下一步】

sql server 读写分离延迟 sqlserver读写分离方案_sql server 读写分离延迟_08

7、发布服务器

sql server 读写分离延迟 sqlserver读写分离方案_sqlserver_09

sql server 读写分离延迟 sqlserver读写分离方案_服务器_10

sql server 读写分离延迟 sqlserver读写分离方案_sqlserver_11

配置分发服务器完成

sql server 读写分离延迟 sqlserver读写分离方案_SQLServer复制_12


二、新建发布

1、在【复制】下选中【本地发布】,右键选择【新建发布(P)】打开新建发布向导,点【下一步】

sql server 读写分离延迟 sqlserver读写分离方案_sql server 读写分离延迟_13

2、选择要发布的数据库,点【下一步】

sql server 读写分离延迟 sqlserver读写分离方案_sql server 读写分离延迟_14

3、选择发布类型,有很多种类型,可以查看说明。这里选择【事务发布】,点【下一步】

sql server 读写分离延迟 sqlserver读写分离方案_SQLServer复制_15

4、选择发布对象,点【下一步】

sql server 读写分离延迟 sqlserver读写分离方案_服务器_16

5、在筛选器里面可以写SQL过来数据,点【下一步】

sql server 读写分离延迟 sqlserver读写分离方案_服务器_17

sql server 读写分离延迟 sqlserver读写分离方案_sqlserver_18

6、设置快照代理,选择立即创建快照,点【下一步】

sql server 读写分离延迟 sqlserver读写分离方案_SQLServer复制_19

7、设置代理用户,保证安全性

sql server 读写分离延迟 sqlserver读写分离方案_SQLServer复制_20

点【安全配置】进去,输入账号+密码

sql server 读写分离延迟 sqlserver读写分离方案_服务器_21

8、创建发布,完成

sql server 读写分离延迟 sqlserver读写分离方案_sql server 读写分离延迟_22

sql server 读写分离延迟 sqlserver读写分离方案_SQLServer复制_23


三、新建订阅

1、在【复制】下选中【本地订阅】,右键选择【新建订阅(S)】打开新建发布向导,点【下一步】

sql server 读写分离延迟 sqlserver读写分离方案_数据库_24

2、选择发布服务器的发布,就是刚才上面建的发布,点【下一步】

sql server 读写分离延迟 sqlserver读写分离方案_sql server 读写分离延迟_25

3、选择分发代理,点【下一步】

sql server 读写分离延迟 sqlserver读写分离方案_sql server 读写分离延迟_26

4、创建订阅服务器,,如果已经建好订阅数据库,就选择建好的数据库,否则新建一个(点击【订阅数据库】可以直接新建),点【下一步】

sql server 读写分离延迟 sqlserver读写分离方案_sql server 读写分离延迟_27

5、创建代理,设置代码账号+密码,点【下一步】

sql server 读写分离延迟 sqlserver读写分离方案_数据库_28

sql server 读写分离延迟 sqlserver读写分离方案_sql server 读写分离延迟_29

6、设置同步计划,点【下一步】

sql server 读写分离延迟 sqlserver读写分离方案_数据库_30

7、完成订阅,一直【下一步】到【完成】

sql server 读写分离延迟 sqlserver读写分离方案_sql server 读写分离延迟_31

sql server 读写分离延迟 sqlserver读写分离方案_数据库_32


看一下效果

发布和订阅都出来了

sql server 读写分离延迟 sqlserver读写分离方案_数据库_33

DB_Test的数据也过来了

sql server 读写分离延迟 sqlserver读写分离方案_服务器_34

sql server 读写分离延迟 sqlserver读写分离方案_sql server 读写分离延迟_35


注意一个细节,就是有可能因为SQL Server代理的服务没启动导致无法创建快照,需要去服务里面启动一下SQL Server代理服务。

SQLServerAgent 当前未运行,因此无法将此操作通知它。


 读写分离的代码怎么写?

参考这里