Docker下SqlServer發(fā)布訂閱啟用的方法
一、準備一個Docker的sqlserver
#創(chuàng)建掛載數(shù)據(jù)文件夾 mkdir -p /home/mssql/data #創(chuàng)建掛載日志文件夾 mkdir /home/mssql/log #給文件夾權(quán)限 chmod 777 /home/mssql/data chmod 777 /home/mssql/log #創(chuàng)建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能連上了
二、配置分發(fā)服務(wù)器
這里分發(fā)服務(wù)器也是用數(shù)據(jù)庫服務(wù)器充當(dāng),實際項目中如果有多余服務(wù)器可以用另外的服務(wù)器
1、創(chuàng)建發(fā)布服務(wù)器存快照的文件夾
#進入docker docker exec -it mssql bin/bash #創(chuàng)建快照文件夾 mkdir /var/opt/mssql/ReplData #給權(quán)限 chmod 777 /var/opt/mssql/ReplData #退出容器 exit
2、錯誤的配置分發(fā)服務(wù)器做法
這里不要用數(shù)據(jù)庫管理工具上面的配置分發(fā)服務(wù)器,下面的是錯誤的做法
如果直接在界面配置的分發(fā)服務(wù)器,雖然能成功,但下發(fā)創(chuàng)建本地發(fā)布的時候會報"必須先將 xxx 作為發(fā)布服務(wù)器啟用,然后才能創(chuàng)建發(fā)布。在下列對話框中,將此服務(wù)器作為發(fā)布服務(wù)器啟用"
3、正確配置分發(fā)服務(wù)器方法
1 )查詢數(shù)據(jù)庫的所在docker的hostname
select @@servername
2)創(chuàng)建分發(fā)數(shù)據(jù)庫
在數(shù)據(jù)庫中執(zhí)行
在數(shù)據(jù)庫中執(zhí)行
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:上面查出的數(shù)據(jù)庫的hostname
@database:分發(fā)數(shù)據(jù)庫名稱
其他參數(shù)代表什么意思在這里查看:https://learn.microsoft.com/zh-cn/SQL/relational-databases/system-stored-procedures/sp-adddistributiondb-transact-sql?view=sql-server-ver16
3)創(chuàng)建分發(fā)服務(wù)器
在數(shù)據(jù)庫中執(zhí)行
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:分發(fā)數(shù)據(jù)庫名稱
復(fù)制
/var/opt/mssql/ReplData:這個路徑為上面創(chuàng)建的路徑
執(zhí)行完就創(chuàng)建成功分發(fā)服務(wù)器了,能看到復(fù)制文件夾多出了一些菜單了
三、建數(shù)據(jù)庫發(fā)布
1、準備數(shù)據(jù)庫
這里創(chuàng)建一個數(shù)據(jù)庫 MyDb(主庫)和創(chuàng)建一個數(shù)據(jù)庫MyDbSlaver(從庫,不建表,通過主庫的快照同步)
如果是實際項目中,數(shù)據(jù)庫的數(shù)據(jù)量已經(jīng)很大的情況下,建議從庫從主庫還原一份,不要通過快照同步,因為這個過程會占服務(wù)器的cpu很高,會影響到服務(wù)器
然后給MyDb(主庫)創(chuàng)建一個表測試用
CREATE TABLE SysUser ( ID INT PRIMARY KEY, UserName NVARCHAR(50), Age INT );
2、新建發(fā)布
選擇事務(wù)發(fā)布,如想用其它發(fā)布類型,看對應(yīng)說明
全部勾選
成功創(chuàng)建發(fā)布
四、創(chuàng)建數(shù)據(jù)庫訂閱
1、創(chuàng)建訂閱
創(chuàng)建訂閱成功
創(chuàng)建訂閱成功后能看到從庫把主庫的表也同步過來了
2、驗證效果
在MyDb操作的數(shù)據(jù),在從庫MyDbSlaver查到的結(jié)果是一樣的
到此這篇關(guān)于Docker下SqlServer發(fā)布訂閱啟用的方法的文章就介紹到這了,更多相關(guān)Docker SqlServer發(fā)布訂閱啟用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
centos6使用docker部署zookeeper操作示例
這篇文章主要介紹了centos6使用docker部署zookeeper操作,結(jié)合實例形式分析了centos6平臺使用docker部署zookeeper相關(guān)命令與使用技巧,需要的朋友可以參考下2020-02-02docker 啟動elasticsearch鏡像,掛載目錄后報錯的解決
這篇文章主要介紹了docker 啟動 elasticsearch鏡像,掛載目錄后報錯的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11使用Docker創(chuàng)建FTP服務(wù)器的過程解析
這篇文章主要介紹了使用Docker創(chuàng)建FTP服務(wù)器的過程解析,使用?Docker?搭建?FTP?服務(wù),不僅十分簡單,而且可以對宿主機有一定的隔離,對Docker創(chuàng)建FTP服務(wù)器的過程感興趣的朋友一起看看吧2022-04-04