MSSQL数据库的复制定阅功能是数据库复制的一种实现机制,用于实现发布者和定阅者之间的异步数据复制。 它可以将数据复制到多个发布者,也能够将数据复制到多个定阅者。使用MSSQL复制定阅功能可以更好地实现主从、主从散布式等复杂数据复制场景。
复制定阅系统由发布者和定阅者组成。发布者将保存在该系统中的更改,如数据行插入、更新和删除,捆绑在一起,称为事务复制。发布者将更改发布到发布数据库,这也是发布数据库的最初版本。定阅者获得发布数据库的范围,并将其复制到定阅数据库。每次复制发布更改,就会在定阅者处重新生成定阅数据库的最新版本。
MS SQL复制定阅服务的功能类似于Pub/Sub模式,客户端无需开发代码以获得发布的数据,而只需定阅数据更改。当数据更改时,在定阅者上,注册的事件句柄将被调用,可以履行存储进程或推送系统,从而可以轻松实现复制定阅功能。
下面是采取MSSQL复制定阅功能实现复杂数据复制的示例:
使用MSSQL数据库管理系统,从西雅图的主服务器的isam_db复制相同的数据到东京的服务器。
–创建一个第二个publication
USE [master]
GO
EXEC sp_addpublication @publication = N’ISAM_DB_Copy’, @description = N’Transactional replication of ISAM databases’, @whitelistservicename = N’ISAM-DB_Copy_Snapshot_Replication’, @delivery_stream = N’Repli_ISAM_DB_Copy’, @delivery_type = 1, @immediate_sync = 0
GO
–设定isam_db数据库作为发布者
use [ISAM_DB]
EXEC sp_addarticle @publication = N’ISAM_DB_Copy’, @article = N’db_customer’, @source_owner = N’dbo’, @source_object = N’db_customer’, @type = N’logbased’, @description = N’db_customer’, @destination_table = N’db_customer’, @pre_creation_cmd = N’drop’, @schema_option = 0x000000000803509D, @identityrangemanagementoption = N’manual’, @identity_range = 0, @parameters = N’unsplittable’
GO
–让ISAM下的Data_Sales表作为发布者
use [ISAM_DB]
EXEC sp_addarticle @publication = N’ISAM_DB_Copy’, @article = N’data_sales’, @source_owner = N’dbo’, @source_object = N’data_sales’, @type = N’logbased’, @description = N’data_sales’, @destination_table = N’data_sales’, @pre_creation_cmd = N’drop’, @schema_option = 0x000000000803509D, @identityrangemanagementoption = N’manual’, @identity_range = 0, @parameters = N’unsplittable’
GO
–让ISAM_DB下的Inventory表作为发布者
use [ISAM_DB]
EXEC sp_addarticle @publication = N’ISAM_DB_Copy’, @article = N’inventory’, @source_owner = N’dbo’, @source_object = N’inventory’, @type = N’logbased’, @description = N’inventory’, @destination_table = N’inventory’, @pre_creation_cmd = N’drop’, @schema_option = 0x000000000803509D, @identityrangemanagementoption = N’manual’, @identity_range = 0, @parameters = N’unsplittable’
GO
–添加一个定阅
EXEC sp_addsubscription @publication = N’ISAM_DB_Copy’, @subscriber = N’DESKTOP-K1TNHR6\sqlserver’, @destination_db = N’ISAM_DB_Copy_Tokyo’, @sync_type = N’initialize with backup’, @backupdevicetype = N’disk’, @backupdevicename = N’c:\backup_tokyo\ISAM_DB_Copy_Backup.bak’, @subscription_type = N’push’, @update_mode = N’read only’
GO
–启动复制
EXEC sp_startpublication_snapshot @publication = N’ISAM_DB_Copy’, @force_initiator = 1, @force_reinit = 1
GO
使用MSSQL复制定阅功能可以更有效地实现复杂的复制场景,进而下降数据复制的开发难度,提高复制性能,提供最好的高可用性数据解决方案。
本文来源:https://www.yuntue.com/post/107721.html | 云服务器网,转载请注明出处!

微信扫一扫打赏
支付宝扫一扫打赏