Computer >> Máy Tính >  >> Lập trình >> Cơ sở dữ liệu

Di chuyển cơ sở dữ liệu SQL Server sang phiên bản AWS RDS

Blog này giải thích cách di chuyển cơ sở dữ liệu Microsoft® SQL Server® được lưu trữ tại cơ sở (hoặc trên Amazon® EC2 hoặc Azure®) sang Amazon Relational DatabaseService (RDS). Việc di chuyển này yêu cầu sao lưu cơ sở dữ liệu SQL của bạn vào AWS S3bucket và khôi phục cơ sở dữ liệu trên phiên bản AWS RDS của bạn từ nhóm S3 đó.

Giới thiệu

Các phiên bản trước của phiên bản Amazon RDS không cho phép bạn khôi phục dữ liệu từ .bak các tập tin. Do đó, người dùng phải sử dụng Dịch vụ di chuyển dữ liệu của Amazon hoặc sử dụng Nhập và xuất thuật sĩ để di chuyển dữ liệu đến và đi từ AWS RDS.

Amazon bắt đầu hỗ trợ cho Native Backup Restore vào tháng 7 năm 2016 và thêm các quy trình được lưu trữ sau đây vào cơ sở dữ liệu MSDB trên RDS:

  • rds_backup_database - Sao lưu một cơ sở dữ liệu duy nhất vào một nhóm S3.
  • rds_restore_database - Khôi phục một cơ sở dữ liệu duy nhất từ ​​S3.
  • rds_task_status - Theo dõi tác vụ sao lưu và khôi phục đang chạy.
  • rds_cancel_task - Hủy tác vụ sao lưu hoặc khôi phục đang chạy.

Blog này thảo luận về cách tận dụng rds_restore_database thủ tục khôi phục .bak tệp từ S3 và cách sử dụng rds_task_status quy trình theo dõi tiến trình khôi phục trong khi lệnh đồng bộ AWS S3 được sử dụng để tải tệp sao lưu lên nhóm AWS S3.

Điều kiện tiên quyết

Để thực hiện di chuyển, bạn phải có các điều kiện tiên quyết sau:

  • Proxy SQL Server Agent
  • Giao diện dòng lệnh AWS (AWS CLI)
  • ProfileName (người dùng AWS có quyền truy cập vào Amazon S3 và một nhóm S3 bao gồm aws_access_key_idaws_secret_access_key .)
  • Phiên bản AWS RDS với nhóm tùy chọn thích hợp với SQLSERVER_BACKUP_RESTORE tùy chọn được ánh xạ tới nó.
  • Cài đặt PowerShell

Bạn cũng nên có kiến ​​thức cơ bản về SQL Server, tạo nhóm S3, tạo người dùng AWS, cấp quyền truy cập vào nhóm S3 và tạo phiên bản RDS.

Giải pháp

Các bước sau bao gồm giải pháp trong các phần sau:

  1. Sao lưu cơ sở dữ liệu trên máy chủ cục bộ.

  2. Sao chép tệp sao lưu vào nhóm AWS S3.

  3. Khôi phục bản sao lưu SQL trong RDS từ nhóm S3.

Sao lưu cơ sở dữ liệu trên máy chủ cục bộ

Bạn có thể sử dụng bất kỳ phương pháp nào để sao lưu cục bộ. Ví dụ sau sử dụng .bat script bằng lệnh sqlcmd mà bạn có thể sử dụng như trong bất kỳ công việc SQL agent nào, trong trường hợp bạn cần lập lịch tác vụ di chuyển:

Sqlcmd -S SourceInstanceName -U sa -P password_here -Q
"Declare @DBName nvarchar(200)='MigrationTestDB'
DECLARE @BackupLocation NVARCHAR(2000) = 'C:\Temp\RDSmigration\backup\'+@DBName+
+ REPLACE(CONVERT(VARCHAR(20), GETDATE(), 120) + '.bak', ':', '');
BACKUP DATABASE @DBName TO DISK = @BackupLocation with compression;"

Sao chép và tải tệp sao lưu lên nhóm AWS S3

Bạn có thể thực hiện việc này bằng cách sử dụng AWS S3 copy hoặc AWS S3 sync các lệnh. Tuy nhiên, lệnh thesync rất phổ biến và được sử dụng rộng rãi trong ngành, vì vậy ví dụ sau sử dụng nó.

Theo mặc định, lệnh đồng bộ AWS không xóa tệp. Nó chỉ đơn giản là sao chép các tệp mới hoặc đã sửa đổi đến đích. Bạn có thể sử dụng tập lệnh PowerShell sau đây cho một công việc tác nhân SQL. Bạn cần chạy cả bản sao lưu và bước sao chép này bằng cách sử dụng một tài khoản proxy đại lý SQL được định cấu hình để chạy cmdExec và PowerShellsubsystem.

$LogDate = Get-Date -Format yyyy-MM-dd
$Global:LogFile = "C:\Temp\RDSmigration\Logs\$LogDate.log"

$env:Path += ';C:\Program Files\Amazon\AWSCLI\bin'

Set-AWSCredential -ProfileName backuptos3user
aws configure set aws_access_key_id AKIAVIH6FYWVO62BZ7QA
aws configure set aws_secret_access_key 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
aws configure set region ap-south-1

try
{
   $now = (Get-Date -Format G)
   aws s3 sync C:\Temp\RDSmigration\backup s3:// ramkrdsrestore --sse | out-file $LogFile
}
catch {
   Write-Host $_.Exception.Message -ForegroundColor Green
}

Khôi phục bản sao lưu SQL trong RDS từ nhóm S3

Chạy lệnh sau để khôi phục MigrationTestDB2019-08-15 181640.bak tệp dưới dạng MigrationTestDB cơ sở dữ liệu:

EXEC msdb.dbo.rds_restore_database
   @restore_db_name = 'MigrationTestDB',
   @S3_arn_to_restore_from = 'arn:aws:s3:::ramkrdsrestore/MigrationTestDB2019-08-15 181640.bak'
Di chuyển cơ sở dữ liệu SQL Server sang phiên bản AWS RDS

Lưu ý các tham số được cung cấp cho quy trình được lưu trữ. Bạn cần chỉ định các thông số sau:

  • Tên của cơ sở dữ liệu cần khôi phục.
  • Tên Tài nguyên Amazon (ARN) của tệp sao lưu. Đối với các đối tượng S3, ARNfollow theo định dạng được hiển thị ở đây.

SQL Server bắt đầu một tác vụ khôi phục và gán cho nó một TaskID . Bạn có thể dễ dàng theo dõi trạng thái của nhiệm vụ bằng lệnh sau:

EXEC  msdb.[dbo].[rds_task_status]  @db_name ='DestinationDBName'

Bạn có thể sử dụng TaskID để theo dõi tiến trình thay vì @db_name .

Di chuyển cơ sở dữ liệu SQL Server sang phiên bản AWS RDS

Hãy lưu ý những mối quan tâm sau:

  • Tên tệp sao lưu nhóm phân biệt chữ hoa chữ thường trong rds_restore_database thủ tục.
  • Vai trò IAM được sử dụng trong nhóm tùy chọn có quyền truy cập vào nhóm S3.
  • Chính sách nhóm S3 không hạn chế để loại trừ vai trò IAM.
  • Phiên bản SQL RDS sử dụng nhóm tùy chọn chính xác mà bạn đã thêm tùy chọn dự phòng / khôi phục. Cài đặt này rất quan trọng. Nếu không có nó, khôi phục không bắt đầu.

Hạn chế của sao lưu và khôi phục gốc SQL Server trong Amazon RDS

Sau đây là một số hạn chế của sao lưu và khôi phục gốc SQL Server trong AmazonRDS:

  • Không có sự khác biệt, nhật ký giao dịch, sao lưu nhóm tệp hoặc khôi phục, điều này không phải là trở ngại cho việc khôi phục dữ liệu. Amazon RDS cho phép bạn tạo các ảnh chụp nhanh phiên bản đã lên lịch và các ảnh chụp nhanh đó luôn có thể truy cập được trong khoảng thời gian 35 ngày. Bạn có thể khôi phục phiên bản trong vòng năm phút theo thời gian đã định trong ba mươi lăm ngày qua.
  • Bạn không thể khôi phục các bản sao lưu được mã hóa KMS từ S3 về tại chỗ.
  • Bạn không thể khôi phục cơ sở dữ liệu trong cùng một phiên bản RDS.
  • Bạn không thể khôi phục các bản sao lưu của cơ sở dữ liệu đã bật Mã hóa dữ liệu dạng bảng (TDE).
  • Các phiên bản RDS mục tiêu yêu cầu quyền truy cập vào nhóm S3.
  • Tài khoản người dùng đang chạy lệnh sao lưu và khôi phục gốc RDS SQL Server cần có quyền thích hợp.

Kết luận

Blog này đã chỉ cho bạn cách sao lưu cơ sở dữ liệu trên đích đến đám mây và khôi phục nó trên phiên bản AWS RDS. Phiên bản RDS không cung cấp quyền truy cập vào các ổ đĩa hoặc máy chủ. Điều quan trọng là chuyển tệp sao lưu sang AWS S3bucket và sau đó khôi phục tệp từ đó.

Một trường hợp sử dụng khác cho bài viết này là lưu trữ các bản sao lưu SQL của bạn trực tiếp trên AWSS3, cung cấp các cải tiến về tính khả dụng, bảo mật và hiệu suất của dữ liệu.Amazon S3 được thiết kế cho độ bền 99,999999999% (mười một 9 giây). Chi phí này đạt đến mức hiệu quả khi lưu trữ các bản sao lưu cơ sở dữ liệu bằng cách tiết kiệm rất nhiều dung lượng lưu trữ.

Sử dụng tab Phản hồi để đưa ra bất kỳ nhận xét hoặc đặt câu hỏi nào.

Tối ưu hóa môi trường của bạn với quản trị, quản lý và cấu hình chuyên gia

Dịch vụ ứng dụng của Rackspace (RAS) các chuyên gia cung cấp các dịch vụ chuyên nghiệp và được quản lý sau trên nhiều danh mục ứng dụng:

  • nền tảng Thương mại điện tử và Trải nghiệm Kỹ thuật số
  • Hoạch định Nguồn lực Doanh nghiệp (ERP)
  • Kinh doanh Thông minh
  • Quản lý quan hệ khách hàng của Salesforce (CRM)
  • Cơ sở dữ liệu
  • Lưu trữ Email và Năng suất

Chúng tôi cung cấp:

  • Chuyên môn không thiên vị :Chúng tôi đơn giản hóa và hướng dẫn hành trình hiện đại hóa của bạn, tập trung vào các khả năng mang lại giá trị tức thì.
  • Trải nghiệm cuồng tín ™:Chúng tôi kết hợp một Quy trình trước. Công nghệ thứ hai. Tiếp cận với hỗ trợ kỹ thuật chuyên dụng để cung cấp các giải pháp toàn diện.
  • Danh mục đầu tư vô song :Chúng tôi áp dụng nhiều kinh nghiệm về đám mây để giúp bạn lựa chọn và triển khai công nghệ phù hợp trên đám mây phù hợp.
  • Phân phối nhanh :Chúng tôi đáp ứng bạn ở nơi bạn đang ở trong hành trình và thành công vượt bậc với bạn.

Tìm hiểu thêm về Cơ sở dữ liệu

Sử dụng tab Phản hồi để đưa ra bất kỳ nhận xét hoặc đặt câu hỏi nào. Bạn cũng có thể bắt đầu cuộc trò chuyện với chúng tôi.