亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網(wǎng)絡(luò),我們將竭誠為您提供優(yōu)質(zhì)的服務(wù)! 誠征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯(lián)系我們 [ 會(huì)員登錄/注冊(cè) ]
促銷推廣
客服中心
業(yè)務(wù)咨詢
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352289
點(diǎn)擊這里給我發(fā)消息  81721488
有事點(diǎn)擊這里…  376585780
有事點(diǎn)擊這里…  872642803
有事點(diǎn)擊這里…  459248018
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  380791050
技術(shù)支持
有事點(diǎn)擊這里…  714236853
有事點(diǎn)擊這里…  719304487
有事點(diǎn)擊這里…  1208894568
有事點(diǎn)擊這里…  61352289
在線客服
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  983054746
有事點(diǎn)擊這里…  893984210
當(dāng)前位置:首頁 >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

SQL Server數(shù)據(jù)庫遷移的快捷方法

添加時(shí)間:2012-6-1  添加: admin 

一、目的

之前在博文SQL Server數(shù)據(jù)庫最小宕機(jī)遷移方案中提到了使用了完全備份+差異備份的功能完成了數(shù)據(jù)庫的轉(zhuǎn)移,但是這個(gè)方法在遇到了700多G的數(shù)據(jù)時(shí)顯然不適用,所以這篇中我是如何遷移700G的數(shù)據(jù)庫到新的服務(wù)器的。

二、分析與設(shè)計(jì)思路

(一) 環(huán)境描述

我們的數(shù)據(jù)庫使用了SQL Server 2005的,部署在Windows Server 2003 x86位操作系統(tǒng)上,有一個(gè)表占了這個(gè)數(shù)據(jù)庫大部分的空間。

面對(duì)上面的情況,我們的數(shù)據(jù)庫壓力比較大了,所以我們打算在同一個(gè)集群中找另外一臺(tái)機(jī)器,轉(zhuǎn)移這個(gè)數(shù)據(jù)庫的數(shù)據(jù)過去,通過設(shè)置新服務(wù)器的一些參數(shù)來達(dá)到優(yōu)化這個(gè)數(shù)據(jù)庫的目的。

(二) 數(shù)據(jù)分析

在拿到一個(gè)數(shù)據(jù)庫的時(shí)候,我們應(yīng)該查看這個(gè)數(shù)據(jù)庫相關(guān)的信息,在了解了數(shù)據(jù)庫的情況和參數(shù)之后再做出初步的評(píng)估,比如我們需要知道這個(gè)700G的數(shù)據(jù)庫中那些表占用了多少空間,索引占了多少空間(有一個(gè)SQL可以直接查看到這些信息),是否做了表分區(qū)。

了解參數(shù)的時(shí)候可以看看服務(wù)器硬件信息,比如內(nèi)存、硬盤、是否做了RAID策略、什么操作系統(tǒng)、數(shù)據(jù)庫的版本、內(nèi)存的壓力、CPU的壓力等等信息。了解這些信息是我們決定是否遷移到新的服務(wù)器的重要因素。

如果決定了進(jìn)行數(shù)據(jù)遷移,那么為了不影響我們的生產(chǎn)的數(shù)據(jù)庫,讓生產(chǎn)數(shù)據(jù)庫還能進(jìn)數(shù)據(jù),我們一次要搬多少條記錄才是合適的,這個(gè)我們也是需要計(jì)算的。(搬遷的Job盡量讓時(shí)間間隔大點(diǎn),如果前一個(gè)Job還沒有執(zhí)行完的話,后一個(gè)Job即使到了時(shí)間也是不會(huì)執(zhí)行的。)

(三) 設(shè)計(jì)思路

創(chuàng)建一個(gè)表。這個(gè)表用來保存我們一次需要轉(zhuǎn)移的多少數(shù)據(jù)的ID值;(這個(gè)ID是我們要遷移表的主鍵,自增字段)。那我們需要一次性遷移多少數(shù)據(jù)呢?這個(gè)我們可以通過計(jì)算比如1000條記錄有多少M(fèi),一次傳輸對(duì)局域網(wǎng)的壓力大嘛?最好讓ID是一個(gè)整千或者整萬的整數(shù),這樣方便記錄和查看。
創(chuàng)建一個(gè)服務(wù)器對(duì)象-鏈接服務(wù)器。這樣就可以讀取到其它服務(wù)器上的數(shù)據(jù)庫了,可以進(jìn)行數(shù)據(jù)搬遷了(注意這里需要設(shè)置鏈接服務(wù)器的帳號(hào)和密碼)
創(chuàng)建一個(gè)存儲(chǔ)過程。用于讀取、控制轉(zhuǎn)移數(shù)據(jù),這存儲(chǔ)過程需要比較智能一點(diǎn),它需要解決下面缺陷中提到的幾個(gè)問題。
創(chuàng)建一個(gè)Job。這個(gè)Job就調(diào)用這個(gè)存儲(chǔ)過程,不過需要嘗試多幾次調(diào)用的頻率問題。
三、參考腳本

下面列出一些重點(diǎn)的sql,供參考。

--1.1,創(chuàng)建表

CREATE TABLE [dbo].[Temp_MoveManage](       [Id] [int] NOT NULL,       [IsDone] [bit] NOT NULL,       [UpdateTime] [datetime] NULL,    CONSTRAINT [PK_Temp_MoveManage] PRIMARY KEY CLUSTERED    (       [Id] ASC  )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]   ) ON [PRIMARY] --1.2插入數(shù)據(jù)

declare @i int    set @i=1    while @i < 50000000   begin        insert into dbo.Temp_MoveManage values(@i,0)       set @i = @i + 50000   end --1.3測(cè)試

select * from Temp_MoveManage --2,鏈接服務(wù)器(省略)

--3,存儲(chǔ)過程

SET ANSI_NULLS ON  GO   SET QUOTED_IDENTIFIER ON  GO   -- =============================================   -- Author:    <Viajar>   -- Create date: <2011.04.14>   -- Deion:   <轉(zhuǎn)移數(shù)據(jù)>   -- =============================================   ALTER PROCEDURE [dbo].[sp_GetMoveData]   AS  BEGIN      DECLARE @Id1 INT,@Id2 INT      DECLARE @MaxId INT--原表的最大值       SET @Id1 = 0       SET @Id2 = 0       SELECT TOP 1 @Id1 = Id FROM Temp_MoveManage WHERE IsDone = 0 ORDER BY Id       SELECT TOP 1 @Id2 = Id FROM Temp_MoveManage WHERE IsDone = 0 AND Id > @Id1 ORDER BY Id       SELECT @MaxId = MAX(Id) FROM [dbo].[ClassifyResult]       IF(@Id1 != 0 AND @Id2 != 0 AND @MaxId>=@Id2)       BEGIN         DECLARE @sql VARCHAR(MAX)          SET @sql = '          SET IDENTITY_INSERT [ClassifyResult_T] ON           INSERT INTO [dbo].[ClassifyResult_T](              [Id]              ,[ClassId]              ,[ArchiveId])          SELECT              [Id]              ,[ClassId]              ,[ArchiveId]          FROM [dbo].[ClassifyResult]          WHERE Id >= '+ CONVERT(VARCHAR(100),@Id1) + ' and Id < '+ CONVERT(VARCHAR(100),@Id2) + '         ORDER BY Id          SET IDENTITY_INSERT [ClassifyResult_T] OFF '          EXEC (@sql)          UPDATE Temp_MoveManage SET IsDone = 1 WHERE Id = @Id1       END  END --4,Job(省略)

四、缺陷

缺陷1:在CreateTable生成的表中,最后一條記錄無法執(zhí)行,因?yàn)樽詈笠粋(gè)Id是使用<,沒有用=,所以在轉(zhuǎn)移的表中最后一條記錄是沒有轉(zhuǎn)移過分區(qū)表的;

缺陷2:如果轉(zhuǎn)移表的記錄同時(shí)在不斷的增長(zhǎng),那么數(shù)據(jù)就無法把最新的數(shù)據(jù)轉(zhuǎn)移到分區(qū)表了;針對(duì)這個(gè)缺陷,本來的想法是為搬遷輔助表的Id分段加多一些記錄,這樣就可以執(zhí)行最新數(shù)據(jù);

缺陷3:對(duì)于上面的那個(gè)問題,也是有缺陷的,例如現(xiàn)在Id分段是100和200,當(dāng)新數(shù)據(jù)Id>100的某段時(shí)間,這兩個(gè)分段值的IsDone就會(huì)給更新為1,這樣就會(huì)造成缺失了很多數(shù)據(jù);針對(duì)這個(gè)缺陷,也是可以解決的,先去判斷當(dāng)新數(shù)據(jù)的Id>200的時(shí)候,才執(zhí)行導(dǎo)Id為100和200分段的腳本;(在存儲(chǔ)過程中判斷Max(Id)就可以了)

五、注意

對(duì)磁盤做RAID0(看具體情況而定)之后的創(chuàng)建分區(qū)時(shí)需要設(shè)置64K的分配單元大小;
64位操作系統(tǒng)和64位數(shù)據(jù)庫系統(tǒng);
搬遷完之后需要?jiǎng)?chuàng)建這表必要的索引,遷移的時(shí)候沒有創(chuàng)建索引是因?yàn)轭l繁的插入會(huì)影響索引,這些索引需要進(jìn)行存儲(chǔ)位置對(duì)齊;
因?yàn)榘褦?shù)據(jù)庫搬遷到新的服務(wù)器了,程序鏈接的IP地址就需要修改,如果很多程序需要修改鏈接地址,那我們又沒辦法解決呢?可以通過修改服務(wù)器的IP;
測(cè)試相關(guān)的應(yīng)用程序,測(cè)試數(shù)據(jù)庫的運(yùn)行情況;
六、其它

這是一些朋友的建議,這里還沒有嘗試,因?yàn)榄h(huán)境的限制,比如數(shù)據(jù)庫是簡(jiǎn)單模式了等情況。這里記錄下,期待適合環(huán)境的童鞋拿去用。

用Mirror遷移
考慮Log Shipping
先完整備份并在目標(biāo)服務(wù)器還原,遷移前先進(jìn)行事務(wù)日志備份并還原,最后將原庫所有數(shù)據(jù)庫賬號(hào)改為只讀,然后再進(jìn)行一次事務(wù)日志備份并還原,這樣宕機(jī)時(shí)間會(huì)進(jìn)一步減少,而且如果相關(guān)應(yīng)用不需要寫庫,那么在宕機(jī)時(shí)間段里對(duì)應(yīng)用也不會(huì)有太大影響。

關(guān)鍵字:SQL Server、數(shù)據(jù)庫、遷移

分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國增值電信業(yè)務(wù)經(jīng)營(yíng)許可證: 粵B1.B2-20030321 備案號(hào):粵B2-20030321-1
網(wǎng)站公安備案編號(hào):44060602000007 交互式欄目專項(xiàng)備案編號(hào):200303DD003  
察察 工商 網(wǎng)安 舉報(bào)有獎(jiǎng)  警警  手機(jī)打開網(wǎng)站