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

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

学无止境,精益求精

先决条件

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

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

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

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

主服务器:172.27.40.27 主服务器 sqlserver2014 主机名:IZQY9C2TQSKGS9Z 要求:同一个内网
从服务器:172.27.40.29 从服务器 sqlserver2014 主机名:iZ4evvi63blumaZ 要求:同一个内网

数据库相关

数据库主机名

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服务:

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

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

 

USE [master]

GO

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

GO

ALTER SERVER ROLE [sysadmin] ADD MEMBER [repl]

GO

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

配置hosts文件

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

主服务器配置如下:

 从服务器配置如下

主服务器配置共享目录

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

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

 设置安全性,

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

设置为共享目录,

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

属性中,共享,选择Everyone 

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

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

主服务器配置分发

点击:复制,配置分发

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

下一步

 再下一步

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

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

 再下一步

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

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

 再下一步

 再下一步

 点击完成

 待成功后退出。

本地发布->新建发布

选择要发布的数据库

点击下一步

选择事务发布

 

点击下一步

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

 

点击下一步

不做筛选

点击下一步

选中箭头所指处

 点击下一步

点击安全设置

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

 确定后,点击下一步

创建发布,点击下一步

 起个名字,点击完成

 点击完成后

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

从服务器订阅

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

 点击查账sqlserver发布服务器

 选择发布

 点击下一步

 点击下一步

选择订阅数据库,

 点击下一步

 分发代理安全性设置

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

 点击下一步

选择立即,

 点击下一步

 点击下一步

 

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

 同步成功。

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

以上over

核验与监视

如果随着项目的进行,修正了一张表,如果加入发布队列中呢?

点击发布-属性

将仅显示列表中已选项目对钩去掉,选择新添加的test表

 点击确定,十秒钟后,我们去从服务器,发现新增的表并未同步过来

我们还需要如下操作

 

复制监视器

选中快照代理,右键已完成的这条记录

 

启动代理

 

 

 此时就会将数据表及数据同步过去。

修改表结构测试如下:

主从修改表结构,并插入一条数据:

alter table test add adds varchar(20)

insert into test values(3,'xx','ttt')

去从库查看,发现已经被同步过来了

 删除表测试:

 因此,我们需要先去掉对test表的同步,然后手动在主从库删除表即可。


posted @ 2024-06-06 14:10  天才卧龙  阅读(92)  评论(0编辑  收藏  举报