Docker下SqlServer发布订阅启用的方法

2024-03-01 0 205
目录
  • 一、准备一个Docker的sqlserver
  • 二、配置分发服务器
    • 1、创建发布服务器存快照的文件夹
    • 2、错误的配置分发服务器做法
    • 3、正确配置分发服务器方法
  • 三、建数据库发布
    • 1、准备数据库
    • 2、新建发布
  • 四、创建数据库订阅
    • 1、创建订阅
    • 2、验证效果

一、准备一个Docker的sqlserver

#创建挂载数据文件夹
mkdir -p /home/mssql/data
#创建挂载日志文件夹
mkdir /home/mssql/log
#给文件夹权限
chmod 777 /home/mssql/data
chmod 777 /home/mssql/log
#创建mssql的docker容器
docker run -e \”ACCEPT_EULA=Y\” -e \”SA_PASSWORD=sa123456.\” -e \”MSSQL_AGENT_ENABLED=true\” -p 1433:1433 –name mssql -h mssql \\
-v /home/mssql/data:/var/opt/mssql/data \\
-v /home/mssql/log:/var/opt/mssql/log \\
-d mcr.microsoft.com/mssql/server:latest

安装完通过SqlServer Management能连上了

Docker下SqlServer发布订阅启用的方法

二、配置分发服务器

这里分发服务器也是用数据库服务器充当,实际项目中如果有多余服务器可以用另外的服务器

1、创建发布服务器存快照的文件夹

#进入docker
docker exec -it mssql bin/bash
#创建快照文件夹
mkdir /var/opt/mssql/ReplData
#给权限
chmod 777 /var/opt/mssql/ReplData
#退出容器
exit

2、错误的配置分发服务器做法

这里不要用数据库管理工具上面的配置分发服务器,下面的是错误的做法

Docker下SqlServer发布订阅启用的方法

如果直接在界面配置的分发服务器,虽然能成功,但下发创建本地发布的时候会报"必须先将 xxx 作为发布服务器启用,然后才能创建发布。在下列对话框中,将此服务器作为发布服务器启用"

Docker下SqlServer发布订阅启用的方法

3、正确配置分发服务器方法

1 )查询数据库的所在docker的hostname

select @@servername

Docker下SqlServer发布订阅启用的方法

2)创建分发数据库

在数据库中执行

在数据库中执行

use master
GO
EXEC sp_adddistributor @distributor = N\’mssql\’
GO
EXEC sp_adddistributiondb @database = N\’distribution\’, @data_folder = N\’/var/opt/mssql/data\’,
@log_folder = N\’/var/opt/mssql/data\’, @log_file_size = 2, @min_distretention = 0, @max_distretention = 72,
@history_retention = 48, @deletebatchsize_xact = 5000, @deletebatchsize_cmd = 2000, @security_mode = 1,@password=\’sa123456.\’
GO
SELECT name, create_date FROM sys.databases
GO

@distributor:上面查出的数据库的hostname

@database:分发数据库名称

其他参数代表什么意思在这里查看:https://learn.microsoft.com/zh-cn/SQL/relational-databases/system-stored-procedures/sp-adddistributiondb-transact-sql?view=sql-server-ver16

3)创建分发服务器

在数据库中执行

USE [distribution]
IF (NOT EXISTS (SELECT * FROM sysobjects WHERE name = \’UIProperties\’ AND type = \’U \’))
CREATE TABLE UIProperties(id INT)
GO
IF (EXISTS (SELECT * FROM ::fn_listextendedproperty(\’SnapshotFolder\’, \’user\’, \’dbo\’, \’table\’, \’UIProperties\’, null, null)))
EXEC sp_updateextendedproperty N\’SnapshotFolder\’, N\’/var/opt/mssql/ReplData\’, \’user\’, dbo, \’table\’, \’UIProperties\’
ELSE
EXEC sp_addextendedproperty N\’SnapshotFolder\’, N\’/var/opt/mssql/ReplData\’, \’user\’, dbo, \’table\’, \’UIProperties\’
GO
EXEC sp_adddistpublisher @publisher = N\’mssql\’, @distribution_db = N\’distribution\’, @security_mode = 1,
@working_directory = N\’/var/opt/mssql/ReplData\’, @trusted = N\’false\’, @thirdparty_flag = 0,
@publisher_type = N\’MSSQLSERVER\’

@publisher:上面的hostname

@distribution_db:分发数据库名称

复制/var/opt/mssql/ReplData:这个路径为上面创建的路径

执行完就创建成功分发服务器了,能看到复制文件夹多出了一些菜单了

Docker下SqlServer发布订阅启用的方法

三、建数据库发布

1、准备数据库

这里创建一个数据库 MyDb(主库)和创建一个数据库MyDbSlaver(从库,不建表,通过主库的快照同步)如果是实际项目中,数据库的数据量已经很大的情况下,建议从库从主库还原一份,不要通过快照同步,因为这个过程会占服务器的cpu很高,会影响到服务器然后给MyDb(主库)创建一个表测试用

CREATE TABLE SysUser (
ID INT PRIMARY KEY,
UserName NVARCHAR(50),
Age INT
);

Docker下SqlServer发布订阅启用的方法

2、新建发布

Docker下SqlServer发布订阅启用的方法

Docker下SqlServer发布订阅启用的方法

选择事务发布,如想用其它发布类型,看对应说明

Docker下SqlServer发布订阅启用的方法

全部勾选

Docker下SqlServer发布订阅启用的方法

Docker下SqlServer发布订阅启用的方法

Docker下SqlServer发布订阅启用的方法

Docker下SqlServer发布订阅启用的方法

Docker下SqlServer发布订阅启用的方法

Docker下SqlServer发布订阅启用的方法

Docker下SqlServer发布订阅启用的方法

成功创建发布

Docker下SqlServer发布订阅启用的方法

四、创建数据库订阅

1、创建订阅

Docker下SqlServer发布订阅启用的方法

Docker下SqlServer发布订阅启用的方法

Docker下SqlServer发布订阅启用的方法

Docker下SqlServer发布订阅启用的方法

Docker下SqlServer发布订阅启用的方法

Docker下SqlServer发布订阅启用的方法

Docker下SqlServer发布订阅启用的方法

创建订阅成功

Docker下SqlServer发布订阅启用的方法

创建订阅成功后能看到从库把主库的表也同步过来了

Docker下SqlServer发布订阅启用的方法

2、验证效果

在MyDb操作的数据,在从库MyDbSlaver查到的结果是一样的

Docker下SqlServer发布订阅启用的方法

到此这篇关于Docker下SqlServer发布订阅启用的方法的文章就介绍到这了,更多相关Docker SqlServer发布订阅启用内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 Linux服务器 Docker下SqlServer发布订阅启用的方法 https://www.u-9.cn/server/linux/174166.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务