RDS SQL Server提供了將本地SQL Server資料庫遷移到阿里雲RDS SQL Server的資料庫上雲方案。您只需將本地SQL Server資料庫的全量備份資料上傳至阿里雲的Object Storage Service服務(OSS),然後通過RDS控制台即可將全量備份資料上雲至指定RDS SQL Server資料庫中。適用於資料備份、遷移和災備恢複等情境。
本方案僅適用於將資料上雲至RDS SQL Server 2008 R2雲端硬碟、2012及以上版本的執行個體中。
如需將資料上雲至RDS SQL Server 2008 R2本地碟執行個體中,請參見全量備份資料上雲(SQL Server 2008 R2本地碟)。
前提條件
RDS SQL Server執行個體版本為2008 R2雲端硬碟、2012及以上,且執行個體中沒有與待上雲資料庫名稱相同的資料庫。如需建立執行個體,請參見建立RDS SQL Server執行個體。
說明RDS SQL Server 2008 R2雲端硬碟執行個體已停止新售,詳情請參見【停售/下線】2023年07月14日起RDS SQL Server 2008 R2雲端硬碟執行個體停止售賣。
RDS SQL Server執行個體擁有足夠的儲存空間。如果空間不足,請提前升級執行個體空間。具體操作,請參見變更配置。
RDS SQL Server執行個體已建立高許可權帳號。具體操作,請參見建立資料庫和帳號。
在本機資料庫環境中執行
DBCC CHECKDB
語句,以確保資料庫中沒有任何的allocation errors
和consistency errors
。正常執行結果如下:... CHECKDB found 0 allocation errors and 0 consistency errors in database 'xxx'. DBCC execution completed. If DBCC printed error messages, contact your system administrator.
已開通OSS服務。具體操作,請參見開通OSS服務。
如果通過RAM使用者登入,則必須滿足以下條件:
RAM帳號具備AliyunOSSFullAccess許可權和AliyunRDSFullAccess許可權。如何為RAM使用者授權,請參見通過RAM對OSS進行許可權管理和通過RAM對RDS進行許可權管理。
阿里雲帳號(主帳號)已授權RDS官方服務帳號可以訪問您OSS的許可權。
所在阿里雲帳號(主帳號)需手動建立權限原則,然後將許可權添加到RAM帳號中。如何建立權限原則,請參見通過指令碼編輯模式建立自訂權限原則。
策略內容如下:
{ "Version": "1", "Statement": [ { "Action": [ "ram:GetRole" ], "Resource": "acs:ram:*:*:role/AliyunRDSImportRole", "Effect": "Allow" } ] }
注意事項
本方案遷移的層級為資料庫,即每次只能遷移一個資料庫上雲。如果需要遷移多個或所有資料庫,建議採用執行個體級的遷移上雲方案,具體操作,請參見SQL Server執行個體層級遷移上雲。
不支援高版本的備份檔案遷移至低版本。例如從SQL Server 2016遷移到SQL Server 2012。
不支援差異備份檔案或記錄備份檔案。
全量備份檔案名不能包含特殊字元!@#$%^&*()_+-=,否則會導致上雲失敗。
授予RDS服務帳號訪問OSS的許可權以後,系統會在存取控制RAM的角色管理中建立名為AliyunRDSImportRole的角色,請勿修改或刪除這個角色,否則會導致上雲任務因無法下載備份檔案而失敗。如果修改或刪除了這個角色,您需要通過資料上雲嚮導重新授權。
本方案遷移上雲後,無法使用原有的資料庫帳號,需要在RDS控制台重新建立帳號。
在OSS備份資料恢複上雲任務沒有完成之前,請不要刪除OSS上的備份檔案,否則會導致上雲任務失敗。
備份檔案的尾碼名必須為bak、diff、trn或log,說明如下:
bak:全量備份檔案。
diff:差異備份檔案。
trn或者log:交易記錄備份檔案。
說明如果備份檔案不是上述提到的檔案尾碼,系統可能無法正確識別該檔案的類型並影響後續操作。
如果您使用下載的RDS SQL Server全量備份檔案,該檔案預設為zip格式,請解壓擷取尾碼名為bak的備份檔案後,再進行上雲操作。
費用說明
本方案中僅會產生OSS的相關費用,詳情如下圖所示。
情境 | 費用說明 |
將本機資料備份檔案上傳至OSS | 不產生費用。 |
備份檔案儲存在OSS | 會產生OSS的儲存費用,計費詳情請參見OSS定價。 |
將備份檔案從OSS遷移至RDS |
|
步驟一:備份本機資料庫
在對本機資料庫做全量備份之前,請確保已停止寫入資料。備份過程中新寫入的資料將不會被備份。
下載備份指令碼,用SSMS(SQL Server Management Studio)開啟備份指令碼。
修改的如下參數。
配置項
說明
@backup_databases_list
需要備份的資料庫,多個資料庫以分號(;)或者半形逗號(,)分隔。
@backup_type
備份類型。參數值如下:
FULL:全量備份。
DIFF:差異備份。
LOG:記錄備份。
@backup_folder
備份檔案所在的本地目錄。如不存在,會自動建立。
@is_run
是否執行備份。參數值如下:
1:執行備份。
0:只做檢查,不執行備份。
說明修改指令碼中SELECT語句中的如上參數,位於指令碼中YOU HAVE TO INIT PUBLIC VARIABLES HERE下。
執行備份指令碼。
步驟二:上傳備份檔案到OSS
建立儲存空間Bucket。
登入OSS管理主控台。
單擊Bucket列表,然後單擊建立Bucket。
配置如下關鍵參數,其他參數可以保持預設。
重要建立的儲存空間僅用於本次資料上雲,且上雲後不再使用,因此只需配置關鍵參數即可,為避免資料泄露及產生相關費用,上雲完成後請及時刪除。
建立Bucket時請勿開啟資料加密。更多詳情,請參見資料加密。
參數
說明
取值樣本
Bucket 名稱
儲存空間名稱,全域唯一,設定後無法修改。
命名規則:
只能包括小寫字母、數字和短劃線(-)。
必須以小寫字母或者數字開頭和結尾。
長度必須在3~63字元之間。
migratetest
地區
Bucket所屬的地區,如果您通過ECS內網上傳資料至Bucket中,且通過內網將資料恢複至RDS中,則需要三者地區保持一致。
華東1(杭州)
儲存類型
選擇標準儲存。本文上雲操作不支援其他儲存類型的Bucket。
標準儲存
上傳備份檔案到OSS。
說明當RDS執行個體和OSS的Bucket在同一地區時,二者可以通過內網互連,且資料上傳速度更快,並且不會產生外網流量費用。因此,在上傳備份檔案時,建議將檔案上傳至與目標RDS執行個體在同一地區的Bucket上。
本機資料庫備份完成後,需要將備份檔案上傳到您的OSS Bucket中,您可以採用如下方法之一:
步驟三:建立資料上雲任務
- 訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。
在左側功能表列中選擇備份恢複。
單擊頁面上方的OSS備份資料恢複上雲。
在資料匯入嚮導頁面,單擊兩次下一步,進入資料匯入步驟。
說明如果您是第一次使用OSS備份資料恢複上雲功能,需要給RDS官方服務帳號授予訪問OSS的許可權,請單擊授權地址並同意授權,否則會因許可權問題導致OSS Bucket下拉式清單為空白。
設定如下參數。
配置項
說明
資料庫名
備份資料匯入目標RDS執行個體上的資料庫名,名稱需要符合SQL Server官方限制。
重要進行上雲操作前,請確保目標執行個體上不存在與備份檔案指定要還原的資料庫名稱相同的資料庫,也不存在相同名稱的未附加資料庫檔案。若都不存在,則可以使用備份組中同名資料庫檔案名稱還原資料庫。
如果目標執行個體上存在與備份檔案指定要還原的資料庫名稱相同的資料庫,或者存在同名的未附加資料庫檔案,上雲操作將失敗。
OSS Bucket
選擇備份檔案所在的OSS Bucket。
OSS子檔案夾名
備份檔案所在的子檔案夾名。
OSS檔案清單
單擊右側按鈕,可以按照備份檔案名首碼模糊尋找,會展示檔案名稱、檔案大小和更新時間。請選擇需要上雲的備份檔案。
上雲方案
開啟資料庫(只有一個全量備份檔案):全量上雲,適合僅有一個完全備份檔案上雲的情境。本操作選擇開啟資料庫,此時CreateMigrateTask中的
BackupMode = FULL
並且IsOnlineDB = True
。不開啟資料庫(還有差異備份或記錄檔):增量上雲,適合有完全備份檔案加上記錄備份(或者差異備份檔案)上雲的情境,此時CreateMigrateTask中的
BackupMode = UPDF
並且IsOnlineDB = False
。
一致性檢查方式
非同步執行DBCC:在開啟資料庫的時候系統不做DBCC CheckDB,會在開啟資料庫任務結束以後,非同步執行DBCC CheckDB操作,以此來節約開啟資料庫操作的時間開銷(資料庫比較大,DBCC CheckDB非常耗時),減少您的業務停機時間。如果您對業務停機時間要求非常敏感,且不關心DBCC CheckDB結果,建議使用非同步執行DBCC。此時CreateMigrateTask 中的
CheckDBMode = AsyncExecuteDBCheck
。同步執行DBCC:相對於非同步執行DBCC,有的使用者非常關心DBCC CheckDB的結果,以此來找出使用者線下資料庫資料一致性錯誤。此時,建議您選擇同步執行DBCC,影響是會拉長開啟資料庫的時間。此時CreateMigrateTask 中的
CheckDBMode = SyncExecuteDBCheck
。
單擊確定。
請耐心等待上雲任務完成,您可以單擊重新整理查看資料上雲任務最新狀態。如果上雲失敗,請根據任務描述提示排查錯誤,具體可參見本文的常見錯誤。
步驟四:查看備份上雲記錄
您可以在備份恢複頁面備份資料上雲記錄頁簽內查看備份上雲記錄,預設會展示最近一周的記錄。
常見錯誤
每一條備份上雲恢複記錄中,都會有任務描述資訊,可以通過這些描述資訊提示來發現任務失敗或報錯的原因,常見的錯誤資訊如下:
同名資料庫已經存在
錯誤資訊:The database (xxx) is already exist on RDS, please backup and drop it, then try again.
錯誤原因:為了保證RDS SQL Server上資料的安全性,RDS SQL Server不支援同名資料庫的上雲操作。
解決方案:如果您確實需要對現有資料庫的資料進行覆蓋,請自行先備份已經存在的資料,然後刪除資料庫,最後再重新資料上雲任務。
使用差異備份檔案
錯誤資訊:Backup set (xxx.bak) is a Database Differential backup, we only accept a FULL Backup.
錯誤原因:您提供的備份檔案是差異備份,不是全量備份檔案,一次性全量遷入上雲僅支援全量備份檔案,不支援差異備份。
使用記錄備份檔案
錯誤資訊:Backup set (xxx.trn) is a Transaction Log backup, we only accept a FULL Backup.
錯誤原因:您提供的備份檔案是記錄備份,不是全量備份檔案,一次性全量遷入上雲僅支援全量備份檔案,不支援記錄備份。
備份檔案校正失敗
錯誤資訊:Failed to verify xxx.bak, backup file was corrupted or newer edition than RDS.
錯誤原因:備份檔案損壞或者備份檔案所在的本地環境SQL Server執行個體版本比RDS SQL Server版本高,導致校正失敗。例如將一個SQL Server 2016的備份還原到RDS SQL Server 2012版本,就會報告這個錯誤。
解決方案:如果是備份檔案損壞,請在本地環境重新做一個全量備份,重建遷移上雲任務;如果是版本過高,請使用與本地環境版本一致或者更高的RDS SQL Server。
DBCC CHECKDB失敗
錯誤資訊:DBCC checkdb failed.
錯誤原因:DBCC CheckDB檢查操作報錯,說明資料庫在本地環境中已經有錯誤發生。
解決方案:使用如下命令修複本地環境資料庫錯誤後重新上雲。
說明使用該命令修複錯誤的過程,可能會導致資料丟失。
DBCC CHECKDB (DBName, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS
空間不足1
錯誤資訊:Not Enough Disk Space for restoring, space left (xxx MB) < needed (xxx MB).
錯誤原因:RDS執行個體剩餘空間不滿足備份檔案上雲所需要的最小空間要求。
解決方案:升級執行個體空間。
空間不足2
錯誤資訊:Not Enough Disk Space, space left xxx MB < bak file xxx MB.
錯誤原因:RDS執行個體剩餘空間比備份檔案本身小,不滿足最小空間要求。
解決方案:升級執行個體空間。
沒有高許可權帳號
錯誤資訊:Your RDS doesn’t have any init account yet, please create one and grant permissions on RDS console to this migrated database (XXX).
錯誤原因:RDS執行個體不存在高許可權帳號,OSS備份資料上雲任務不知道需要為哪個使用者授權,但是備份檔案已經成功還原到目標執行個體上,所以任務狀態是成功的。
解決方案:建立高許可權帳號,具體操作,請參見建立資料庫和帳號(SQL Server 2012、2014、2016、2017和2019)。
RAM帳號操作許可權不足
Q:步驟三:建立資料上雲任務的步驟5中,各配置項參數均已填寫完整,但確定按鈕為灰色無法單擊?
A:無法單擊的原因可能是您為RAM使用者,您的帳號許可權不足。請參見本文前提條件,確保相應許可權已授予。
相關API
API | 描述 |
將OSS上的備份檔案還原到RDS SQL Server執行個體,建立資料上雲任務。 | |
開啟RDS SQL Server備份資料上雲任務的資料庫。 | |
查詢RDS SQL Server執行個體備份資料上雲工作清單。 | |
查詢RDS SQL Server備份資料上雲任務的檔案詳情。 |