Docker下的SqlServer发布订阅启用

这篇具有很好参考价值的文章主要介绍了Docker下的SqlServer发布订阅启用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、准备一个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发布订阅启用

 

 



 文章来源地址https://www.toymoban.com/news/detail-776916.html

TRANSLATE with x
English
Arabic Hebrew Polish
Bulgarian Hindi Portuguese
Catalan Hmong Daw Romanian
Chinese Simplified Hungarian Russian
Chinese Traditional Indonesian Slovak
Czech Italian Slovenian
Danish Japanese Spanish
Dutch Klingon Swedish
English Korean Thai
Estonian Latvian Turkish
Finnish Lithuanian Ukrainian
French Malay Urdu
German Maltese Vietnamese
Greek Norwegian Welsh
Haitian Creole Persian  
 
TRANSLATE with
COPY THE URL BELOW
Back
EMBED THE SNIPPET BELOW IN YOUR SITE
Enable collaborative features and customize widget: Bing Webmaster Portal
Back

到了这里,关于Docker下的SqlServer发布订阅启用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 从零开始用Nodejs搭建一个MQTT服务器,并且用stm32通过esp8266进行消息订阅和发布

    最近在做一个物联网项目,需要用到服务器进行数据的存储和数据的请求和发送,之前我用过onenet平台上的http服务,虽然能通过get和post请求进行数据的提交和发送,但是平台上的数据发生改变却不能主动推送给esp8266,与我此次的项目不符合,所以pass。然后我了解了下mqtt协

    2024年02月04日
    浏览(52)
  • MQTT记录(概述,docker部署,基于spring-integration-mqtt实现消息订阅与发布,客户端工具测试)

    需要spring-boot集成spring-integration-mqtt代码的直接跳到第5部分 1.1 MQTT是什么呢? message queue telemetry translation 是一种基于发布与订阅的轻量级消息传输协议.适用于低带宽或网络不稳定的物联网应用.开发者可以使用极少的代码来实现物联网设备之间的消息传输.mqtt协议广泛应用于物

    2024年02月12日
    浏览(47)
  • linux 下 sqlserver 连接 与开发准备

    最近需要再linux下开发一个服务链接SQLserver。但是没有相关经验,然后参考了网上的一些博客。有点心得记录如下。 主要参考了这个: 主要思路: 采用unixODBC + FreeTDS 封装库的方案来实现 我使用离线安装: Index of /rhel/7/prod/Packages/u/ (microsoft.com) 在上面中下载了上图中的2个安

    2024年02月10日
    浏览(34)
  • docker容器启用ipv6地址方法,用ipv6地址访问容器方法流程、创建一个nginx容器用ipv6地址访问测试流程

    你如果没用使用Docker-Compose,就忽略配置,以了解为主,直接去看下面的docker配置。 docker-compose.yaml 文件必须使用 version: “2.*” , version: “3.*” 不支持 enable_ipv6 配置 如果已有旧的容器在运行(网络配置发生了变化),则需要先销毁容器 docker-compose down 然后再重新创建 doc

    2024年02月02日
    浏览(60)
  • 使用spring自带的发布订阅来实现发布订阅

    公司的项目以前代码里面有存在使用spring自带发布订阅的代码,因此稍微学习一下如何使用,并了解一下这种实现方式的优缺点。 优点 实现方便,代码方面基本只需要定义消息体和消费者,适用于小型应用程序。 不依赖外部中间件,因而不需要复杂的配置、部署。 缺点 无

    2024年02月10日
    浏览(36)
  • 三.net core 自动化发布到docker (创建一个dotnet工程发布)

    输入名称(建议不要带“+”这类的字符),选择自由风格的类型(红框标注的),点击确定     用于测试,下面选项基本没有选择-配置代码地址     选择执行shell     #!/bin/bash # 获取短版本号 GITHASH=`git rev-parse --short HEAD` echo ---------------开始编译程序...------------------ echo ----

    2024年02月12日
    浏览(44)
  • 用 Docker 构建、运行、发布一个 Spring Boot 应用

    用 Docker 构建、运行、发布一个 Spring Boot 应用 2016-03-20  Docker Spring Boot  Docker Spring Boot 镜像 Docker Hub 本文演示了如何用 Docker 构建、运行、发布来一个 Spring Boot 应用。 Docker 简介 Docker 是一个 Linux 容器管理工具包,具备“社交”方面,允许用户发布容器的 image (镜像),并

    2024年02月11日
    浏览(41)
  • 行为型:发布订阅模式

      发布订阅模式是基于一个事件(主题)通道,希望接收通知的对象 Subscriber (订阅者) 通过自定义事件订阅主题,被激活事件的对象 Publisher (发布者) 通过发布主题事件的方式通知订阅者 Subscriber (订阅者) 对象。   简单说就是 发布者与订阅者通过事件来通信 ,

    2023年04月11日
    浏览(40)
  • redis发布订阅模型

    Redis 的发布订阅基于 publish , subscribe , psubscribe 订阅 发布 订阅 发布 订阅的状态的推进 向 new.it 发送消息 1.频道订阅和退订 Redis 订阅关系保存在服务器状态的 pubsub_channels 字典 key 为 channel , value 为链表,链表上有订阅该频道的 Client 如图所示 1.1订阅频道 subscribe Client 订阅 pu

    2024年02月13日
    浏览(36)
  • Redis发布订阅机制学习

    【IT老齐151】Redis发布订阅机制是如何实现的?_哔哩哔哩_bilibili go-redis的发布与订阅 - 知乎 (zhihu.com) 先输入   redis-server.exe   启动redis,否则对应接口不开放 再输入   redis-cli 命令启动客户端服务 当一个客户端c1去向redis订阅一个主题chatroom的时候,Redis内部就会创建一块空

    2024年02月09日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包