SQL Server如何通过备份文件初始化复制
一、背景
MySQL在对有历史数据的数据库进行搭建复制(Master/Slave)的时候,可以通过在Master服务器备份历史数据,利用这个备份文件在Slave进行还原;这样做的好处是可以更加快速的搭建好环境,因为可以对备份文件进行压缩、分包,并且可以使用FTP等工具保证传输过程的安全与快捷;详情可参考:Windows下搭建MySQL Master Slave 当SQL Server遇到同样需要对历史数据库搭建复制,通常的做法是在本地发布快照,再由订阅传输数据,那SQL Server应该如何实现备份历史数据搭建复制(发布/订阅)呢?下图是备份文件初始化订阅的基本逻辑结构图: (Figure0:备份文件初始化订阅逻辑结构图) 二、搭建过程 (一) 环境信息 系统环境:Windows Server 2008 + SQL Server 2008 发布服务器:192.168.1.105,服务器名称:QuZhoushiwei105 分发服务器:与发布服务器同一台机器 订阅服务器:192.168.1.106,服务器名称:QuZhoushiwei106 发布数据库:Barfoo.TestPublish 订阅数据库:Barfoo.TestSubscribe 数据库帐号:ReplicationUser/ ReplicationPassword 说明:发布服务器与订阅服务器是在同一内网的机器,如果你的环境是跨网段(跨机房)的请参考:SQL Server复制(发布订阅)实战二:跨网段(跨机房)部署 (二) 搭建步骤 1) 在发布服务器上以QuZhoushiwei105服务器名称登陆发布服务器,如果你以localhost或者IP形式登陆服务器,在创建发布的时候会出现下图Figure1的错误信息; (Figure1:错误信息) 登陆服务器之后使用下面的SQL脚本创建一个测试数据库:Barfoo.TestPublish,创建一个测试表:UserInfo,并插入一条数据,用于模拟历史数据; --创建测试数据库 USE MASTER GO CREATE DATABASE [Barfoo.TestPublish] GO --创建测试表 USE [Barfoo.TestPublish] GO CREATE TABLE [dbo].[UserInfo]( [Id] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL, [names] [nvarchar](50) NULL, [address] [nvarchar](50) NULL, CONSTRAINT [PK_UserInfo] PRIMARY KEY CLUSTERED ( [Id] ASC ) ON [PRIMARY] ) ON [PRIMARY] GO --插入测试数据 INSERT [dbo].[UserInfo] ([names],[address]) VALUES (N'gaizai', N'广州') (Figure2:UserInfo表记录) 2) 在发布数据库和订阅服务器上分别执行下面的SQL脚本创建帐号和密码(ReplicationUser/ ReplicationPassword); --发布服务器创建帐号密码 USE [master] GO CREATE LOGIN [ReplicationUser] WITH PASSWORD=N'ReplicationPassword', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF GO EXEC master..sp_addsrvrolemember @loginame = N'ReplicationUser', @rolename = N'sysadmin' GO USE [Barfoo.TestPublish] GO CREATE USER [ReplicationUser] FOR LOGIN [ReplicationUser] GO USE [Barfoo.TestPublish] GO ALTER USER [ReplicationUser] WITH DEFAULT_SCHEMA=[dbo] GO --订阅服务器创建帐号密码 USE [master] GO CREATE LOGIN [ReplicationUser] WITH PASSWORD=N'ReplicationPassword', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF GO EXEC master..sp_addsrvrolemember @loginame = N'ReplicationUser', @rolename = N'sysadmin' GO (编辑:徐州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |