亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種數(shù)據(jù)庫遷移和日志傳送方案的實現(xiàn)

        2008-01-01 00:00:00董永春梁苑苑
        電腦知識與技術(shù) 2008年6期

        摘要:服務(wù)器性能不佳,會影響SQL Server數(shù)據(jù)庫的運行效率。當(dāng)服務(wù)器崩潰時,數(shù)據(jù)庫里的大量數(shù)據(jù)如何恢復(fù)?用SQL Server 2000標(biāo)準(zhǔn)版支持的日志傳輸功能,可以實現(xiàn)一種切實可行的數(shù)據(jù)庫服務(wù)器遷移和日志傳送方案。

        關(guān)鍵詞:數(shù)據(jù)庫遷移;日志傳輸;備份

        A Feasible Way For Database Server Tranfer And Log Transmission

        LI Na1,DONG Yong-chu1,LIANG Yuan-yuan2

        (1.Guangdong Service Center For Meteorological Science And Technology,Guangdong Guangzhou,510080;2.Guangdong Meteorological Information Center,Guangdong Guangzhou,510080)

        Abstract: The operating efficiency of SQL Server Database can be effected by the bad performance of server. When the server crashs, how to recover the data of database. This article achieves a feasible way for database server tranfer and log transmission by using log transfer function of SQL Server 2000 standand.

        Key words:Database transfer; Log transmssion; Backup

        1 引言

        在維護(hù)海量數(shù)據(jù)的時候,經(jīng)常會遇到這樣的情況:SQL Server數(shù)據(jù)庫運行一段時間后,可能由于存放SQL Server數(shù)據(jù)庫的硬盤空間不足或服務(wù)器性能、質(zhì)量不佳,使數(shù)據(jù)庫運行效率大大下降,甚至不能工作。同時,我們還常常擔(dān)心如果計算機(jī)崩潰了,已經(jīng)存儲的大量數(shù)據(jù)怎么樣恢復(fù)?又如何進(jìn)行完整的數(shù)據(jù)備份?本文就數(shù)據(jù)庫服務(wù)器遷移和日志傳送討論一種切實可行的方案。

        2 數(shù)據(jù)庫現(xiàn)狀

        我們的數(shù)據(jù)庫采用SQL Server 2000標(biāo)準(zhǔn)版,數(shù)據(jù)量達(dá)到幾千萬級,大小為90GB,經(jīng)常需要進(jìn)行新建表、修改數(shù)據(jù)庫結(jié)構(gòu)等操作,允許最大限度宕機(jī)6小時。在服務(wù)器硬件故障等情況發(fā)生時,采用備份和恢復(fù)一系列操作很難保證在限定時間內(nèi)能恢復(fù)正常。

        由于SQL Server 2000標(biāo)準(zhǔn)版支持日志傳輸,成本較低,我們決定采用高可用性的溫備方案——使用現(xiàn)有的SQL Server 2000 標(biāo)準(zhǔn)版來實現(xiàn)日志傳輸。

        日志傳輸有如下的特點:

        自動同步:由主服務(wù)器的SQL Server Agent服務(wù)定期在主服務(wù)器上備份日志,備用服務(wù)器的SQL Server Agent 服務(wù)定期從主服務(wù)器的共享文件夾復(fù)制日志備份文件到備用服務(wù)器,再定義日志備份的還原。

        數(shù)據(jù)副本間斷性只讀:在正常情況下備用服務(wù)器的數(shù)據(jù)可以只讀訪問,但是在恢復(fù)日志備份的時候要中斷訪問。

        手工轉(zhuǎn)移:如果主服務(wù)器出現(xiàn)故障,需要將備用服務(wù)器轉(zhuǎn)成正常狀態(tài),并修改服務(wù)器的IP地址或者服務(wù)器名。

        數(shù)據(jù)庫級轉(zhuǎn)移:每個數(shù)據(jù)庫需要單獨配置,如果有大量數(shù)據(jù)庫需要實現(xiàn)高可用性,則不建議使用日志傳輸。

        有數(shù)據(jù)損失:由于主服務(wù)器和備用服務(wù)器采用備份日志進(jìn)行傳輸,而不是實時同步,因此會在備份的間隔期內(nèi)出現(xiàn)該間隔期中插入、修改的操作丟失。丟失數(shù)據(jù)的量取決于日志傳輸?shù)娜齻€自動化任務(wù)的時間安排。當(dāng)然備份、傳輸、恢復(fù)的間隔越短,數(shù)據(jù)的損失就越少,而性能的損失就是增加[1]。

        我們選用了一臺與要備份的服務(wù)器性能差不多的機(jī)器作為備用服務(wù)器。

        3 準(zhǔn)備工作

        (1)在主服務(wù)器Primary上設(shè)置SQL Server 和SQL Server Agent服務(wù)的啟動方式為自動啟動,并設(shè)置服務(wù)啟動帳號為本地系統(tǒng)帳號。

        在備用服務(wù)器Primary_BAK上設(shè)置SQL Server 和 SQL Server Agent服務(wù)的啟動方式為自動啟動,并設(shè)置服務(wù)啟動帳號為域帳號SQL Agent User及其密碼。

        (2)在主服務(wù)器Primary和備用服務(wù)器Primary_BAK的SQL Server代理——“屬性”——“高級”中,將“SQL Server代理意外停止時自動重新啟動”選項勾選,確?!癝QL Server代理”時刻保持運行狀態(tài)。

        (3)在主服務(wù)器Primary和備用服務(wù)器Primary_BAK上準(zhǔn)備日志備份的空間,大小推薦是日志文件的兩倍。

        (4)在主服務(wù)器Primary上要備份的數(shù)據(jù)庫NN_SUB——“屬性”——“選項”——“故障還原”中將模型選為“完全”,只有完整模式才能做日志備份。

        (5)在主服務(wù)器Primary上建立共享文件夾,創(chuàng)建的目錄為E:\\ProductLogs,共享名稱為ProductLogs,用于存儲產(chǎn)生的日志備份,并設(shè)置共享文件夾的NTFS權(quán)限和共享權(quán)限,需要給予域帳號SQLAgentUser共享文件夾的只讀權(quán)限,刪除默認(rèn)的EveryOne的只讀權(quán)限;需要給予SQLAgentUser共享文件夾的NTFS讀寫權(quán)限。

        (6)如果主服務(wù)器上Primary上NN_SUB數(shù)據(jù)庫上除了SA帳號,還有其他的帳號,在備用服務(wù)器Primary_BAK上需要建立同名同密碼同SID的登錄帳號[2]。

        4 手工備份

        (1)因為這時備用服務(wù)器Primary_BAK上還沒有數(shù)據(jù)庫,所以我們需要先進(jìn)行一個全備。利用SQL Server 2000自帶的“備份數(shù)據(jù)庫”完整備份主服務(wù)器Primary上的數(shù)據(jù)庫NN_SUB,設(shè)置備份的目標(biāo)路徑為主服務(wù)器Primary的E盤。

        (2)在備用服務(wù)器Primary_BAK上從遠(yuǎn)程服務(wù)器Primary的E盤的NN_SUB完整備份中恢復(fù)數(shù)據(jù)庫,設(shè)置數(shù)據(jù)庫恢復(fù)之后的模式為只讀模式。

        (3)利用SQL Server 2000的“數(shù)據(jù)庫維護(hù)計劃”——“新建維護(hù)計劃”——選擇要維護(hù)的數(shù)據(jù)庫NN_SUB,按默認(rèn)設(shè)置繼續(xù)下一步,選擇“作為維護(hù)計劃的一部分來備份事務(wù)日志”,在“指定事務(wù)日志的備份磁盤目錄”處指定備份的目錄為之前創(chuàng)建的共享文件夾目錄 E:\\ProductLogs,并勾選“刪除早于此時間的文件”,設(shè)置為1周。調(diào)度設(shè)為每小時備份一次。繼續(xù)下一步到完成。這個計劃將自動每小時產(chǎn)生一個事務(wù)日志備份文件,文件格式為:NN_SUB_tlog_yyyymmddhh.trn,確保備用服務(wù)器Primary_BAK可以按照順序進(jìn)行恢復(fù)[3]。

        5 日志傳送

        如何將主服務(wù)器Primary上的日志備份轉(zhuǎn)移到備用服務(wù)器Primary_BAK上呢?我們通過幾個SQL腳本來實現(xiàn)。

        5.1 Instlog.sql腳本

        Instlog.sql腳本實現(xiàn)2個功能:

        (1)用于在MSDB數(shù)據(jù)庫中創(chuàng)建三個表:

        backup_movement_plans:存放創(chuàng)建的維護(hù)計劃名稱。

        backup_movement_plan_databases:存放日志傳送作業(yè)的源服務(wù)器和目標(biāo)服務(wù)器,裝載延遲時間、最后復(fù)制的日志及其復(fù)制時間、最后裝載的日志及其裝載時間。

        backup_movement_plan_history:存儲復(fù)制日志備份和裝載日志備份的作業(yè)執(zhí)行記錄。

        (2)在MSDB數(shù)據(jù)庫中安裝兩個存儲過程

        sp_create_backup_movement_plan:調(diào)用該存儲過程用于創(chuàng)建備份和恢復(fù)數(shù)據(jù)庫的維護(hù)計劃和作業(yè),以及傳送日志的源路徑和目標(biāo)路徑,裝載的頻率和復(fù)制的頻率。關(guān)鍵代碼如下:

        //創(chuàng)建備份數(shù)據(jù)庫的作業(yè)

        EXECUTE @ReturnCode = msdb.dbo.sp_add_job @job_name = @CopyJobName

        IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

        EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_name = @CopyJobName, @step_id = 1, @step_name = N'step1',

        @command = @CopyCommand, @subsystem = N'TSQL', @on_success_step_id = 0, @on_success_action = 1,

        @on_fail_step_id = 0, @on_fail_action = 2, @flags = 4

        IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

        EXECUTE @ReturnCode = msdb.dbo.sp_add_jobschedule @job_name = @CopyJobName,

        @freq_subday_interval = @copy_job_freq,

        @name = N'sch1', @enabled = 1, @freq_type = 4, @active_start_date = 19980402,

        @active_start_time = 0, @freq_interval = 1, @freq_subday_type = 4, @freq_relative_interval = 0,

        @freq_recurrence_factor = 0, @active_end_date = 99991231, @active_end_time = 235959

        IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

        EXECUTE @ReturnCode = msdb.dbo.sp_add_jobserver @job_name = @CopyJobName, @server_name = N'(local)'

        IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

        sp_add_db_to_backup_movement_plan:調(diào)用該存儲過程,用戶指定進(jìn)行日志傳送的數(shù)據(jù)庫。

        5.2 sp_create_backup_movement_plan.sql腳本

        sp_create_backup_movement_plan.sql腳本用于創(chuàng)建事務(wù)日志備份的文件復(fù)制計劃,需要在備用服務(wù)器Primary_BAK的MSDB數(shù)據(jù)庫上執(zhí)行,腳本參數(shù)的名稱和功能以及具體設(shè)置如下:

        @name維護(hù)計劃名稱(日志傳送)

        @source_dir日志源文件夾(\\\\主服務(wù)器Primary\\ProudctLogs)

        @dest_dir日志目標(biāo)文件夾(E:\\ShippedLogs)

        @sub_dir子文件夾標(biāo)記(0)

        @load_job_freq裝載作業(yè)的頻率,分鐘

        @copy_job_freq復(fù)制作業(yè)的頻率,分鐘

        5.3 sp_add_db_to_backup_movement_plan.sql腳本

        sp_add_db_to_backup_movement_plan.sql腳本調(diào)用存儲過程sp_add_db_to_backup_movement_plan ,添加數(shù)據(jù)庫到日志傳送計劃,需要在備用服務(wù)器Primary_BAK的MSDB數(shù)據(jù)庫上執(zhí)行,腳本參數(shù)的名稱和功能以及具體設(shè)置如下:

        @plan_name日志傳送計劃名稱(日志傳送)

        @source_db主數(shù)據(jù)庫名(NN_SUB)

        @dest_db備用數(shù)據(jù)庫名(NN_SUB)

        @load_delay裝載延時,分鐘

        @load_all裝載所有未裝載的日志(1)

        @source_server日志傳送的源服務(wù)器(主服務(wù)器Primary)

        @retention_period備用服務(wù)器上日志保留時間,小時

        6 故障轉(zhuǎn)移

        故障轉(zhuǎn)移即主服務(wù)器出現(xiàn)故障之后,用備用服務(wù)器取代主服務(wù)器的過程。由于應(yīng)用程序訪問數(shù)據(jù)庫服務(wù)器的方式不一樣,恢復(fù)過程也不一樣,這里討論應(yīng)用程序使用機(jī)器名訪問數(shù)據(jù)庫服務(wù)器的轉(zhuǎn)移過程。

        (1)在備用服務(wù)器Primary_BAK上,手工啟動SQL Server Agent 下面的復(fù)制作業(yè)和裝載作業(yè),完成剩余日志的復(fù)制和裝載。

        (2)將復(fù)制作業(yè)和裝載作業(yè)禁用。

        (3)將主服務(wù)器Primary斷開網(wǎng)絡(luò)。

        (4)在備用服務(wù)器Primary_BAK上執(zhí)行下面的腳本,執(zhí)行完成之后,數(shù)據(jù)庫的狀態(tài)會由只讀狀態(tài)變?yōu)榭勺x可寫狀態(tài)。

        Use Master

        Restore Database NN_SUB With Recovery

        (5)修改備用服務(wù)器Primary_BAK的IP地址。

        (6)從AD用戶和計算機(jī)工具中在AD中刪除主服務(wù)器Primary。

        (7)在備用服務(wù)器Primary_BAK上執(zhí)行下面語句,否則重命名后SQL Server服務(wù)無法啟動:

        Sp_DropServer Primary_BAK

        Sp_AddServer Primary

        (8)將備用服務(wù)器Primary_BAK重命名為Primary,重啟服務(wù)器。

        7 注意事項

        不要長時間訪問備用服務(wù)器Primary_BAK上的NN_SUB數(shù)據(jù)庫不斷開。Primary_BAK上的NN_SUB數(shù)據(jù)庫平時是只讀狀態(tài),由于恢復(fù)數(shù)據(jù)庫的時候要排他訪問,因此,如果備用服務(wù)器Primary_BAK上的NN_SUB數(shù)據(jù)庫裝載傳送過來的日志的時候,有用戶訪問正在進(jìn)行,這時候恢復(fù)會失敗,但不影響日志傳送的正常工作,下一次還會繼續(xù)啟動進(jìn)行恢復(fù)。但是如果有用戶長時間不斷開訪問Primary_BAK,會導(dǎo)致長時間日志無法加載。未被加載的日志備份是不會被刪除的,累積下去,會導(dǎo)致日志文件越來越多,耗盡硬盤剩余空間,進(jìn)而導(dǎo)致數(shù)據(jù)庫因空間不足復(fù)制日志文件失敗[3]。

        參考文獻(xiàn):

        [1]鄒建. 中文版SQL Server2000開發(fā)與管理應(yīng)用實例[M]. 北京:人民郵電出版社,2005.

        [2]葛美紅,徐超. 一種將SQL數(shù)據(jù)庫遠(yuǎn)程備份與恢復(fù)的方法[J]. 電腦知識與技術(shù)學(xué)術(shù)交流,2006,12:3-5.

        [3]趙杰,李濤,朱慧. SQL Server 數(shù)據(jù)庫管理、設(shè)計與實現(xiàn)教程[M]. 北京:清華大學(xué)出版社,2004.

        [4]王俊偉,史創(chuàng)明. SQL Server 2000中文版數(shù)據(jù)庫管理與應(yīng)用標(biāo)準(zhǔn)教程[M]. 北京清華大學(xué)出版社,2006.

        收稿日期:2008-01-12

        作者簡介:李娜(1980-),女,工程師,碩士,研究方向:數(shù)據(jù)庫管理。

        国产毛片一区二区三区| 女人体免费一区二区| 国产夫妻av| 欧美亚洲另类自拍偷在线拍| 一区二区三区国产视频在线观看| 黄页免费人成网址大全| 亚洲国产av一区二区三区天堂| 亚洲性码不卡视频在线| 亚洲视频免费在线观看| 欧美大屁股xxxx高跟欧美黑人| 精品无码久久久久成人漫画| 国产成人无码一二三区视频| 思思99热| 免费观看在线视频一区| 中文字幕一区二区人妻性色av| 中国亚洲一区二区视频| 日本又色又爽又黄的a片18禁| av在线亚洲欧洲日产一区二区| 亚洲区日韩精品中文字幕| 久久精品国产亚洲av试看| 一区二区国产av网站| 欧美不卡一区二区三区| 好日子在线观看视频大全免费动漫| 亚洲精品国产成人AV| 亚洲三区二区一区视频| 国产一区亚洲一区二区| 亚洲中文字幕九色日本| 国产日产精品一区二区三区四区的特点 | 无码人妻一区二区三区在线| 亚洲性无码一区二区三区| 久久精品国产一区二区电影| 青青草国内视频在线观看| 国产一区三区二区视频在线观看| 亚洲中文字幕久久精品品| 亚洲av美国av产亚洲av图片| 国产呦系列呦交| 日韩久久一级毛片| 国产成人丝袜在线无码| 一本色道久久88加勒比—综合| 性高朝久久久久久久3小时| 巨茎中出肉欲人妻在线视频|