Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> ฐานข้อมูล

ย้ายฐานข้อมูล SQL Server ไปยังอินสแตนซ์ AWS RDS

บล็อกนี้อธิบายวิธีย้ายฐานข้อมูล Microsoft® SQL Server® ที่โฮสต์ภายในองค์กร (หรือบน Amazon® EC2 หรือ Azure®) ไปยัง Amazon Relational DatabaseService (RDS) การย้ายนี้ต้องการการสำรองฐานข้อมูล SQL ของคุณไปยัง AWS S3bucket และกู้คืนฐานข้อมูลบนอินสแตนซ์ AWS RDS ของคุณจากบัคเก็ต S3 นั้น

แนะนำตัว

อินสแตนซ์ Amazon RDS เวอร์ชันก่อนหน้าไม่อนุญาตให้คุณกู้คืนข้อมูลจาก .bak ไฟล์. ด้วยเหตุนี้ ผู้ใช้จึงต้องใช้บริการ Amazon Data Migration หรือใช้นำเข้าและส่งออก วิซาร์ดเพื่อย้ายข้อมูลเข้าและออกจาก AWS RDS

Amazon เริ่มรองรับ Native Backup Restore ในเดือนกรกฎาคม 2016 และเพิ่มขั้นตอนการจัดเก็บต่อไปนี้ในฐานข้อมูล MSDB บน ​​RDS:

  • rds_backup_database – สำรองข้อมูลฐานข้อมูลเดียวไปยังบัคเก็ต S3
  • rds_restore_database – กู้คืนฐานข้อมูลเดียวจาก S3
  • rds_task_status – ติดตามงานสำรองและกู้คืนที่ทำงานอยู่
  • rds_cancel_task – ยกเลิกงานสำรองที่ทำงานอยู่หรือกู้คืน

บล็อกนี้อธิบายวิธีใช้ประโยชน์จาก rds_restore_database ขั้นตอน torestore a .bak ไฟล์จาก S3 และวิธีใช้ rds_task_status ขั้นตอนเพื่อตรวจสอบความคืบหน้าในการกู้คืนในขณะที่ใช้คำสั่งซิงค์ AWS S3 เพื่ออัปโหลดไฟล์สำรองไปยังบัคเก็ต AWS S3

ข้อกำหนดเบื้องต้น

ในการย้ายข้อมูล คุณควรมีข้อกำหนดเบื้องต้นดังต่อไปนี้:

  • พร็อกซีตัวแทนเซิร์ฟเวอร์ SQL
  • อินเทอร์เฟซบรรทัดคำสั่งของ AWS (AWS CLI)
  • ProfileName (ผู้ใช้ AWS ที่มีสิทธิ์เข้าถึง Amazon S3 และบัคเก็ต S3 รวมถึง aws_access_key_id และ aws_secret_access_key .)
  • อินสแตนซ์ AWS RDS ที่มีกลุ่มตัวเลือกที่เหมาะสมที่มี SQLSERVER_BACKUP_RESTORE ตัวเลือกที่แมปกับมัน
  • การติดตั้ง PowerShell

คุณควรมีความรู้พื้นฐานเกี่ยวกับ SQL Server, การสร้างบัคเก็ต S3, การสร้างผู้ใช้ AWS, การอนุญาตการเข้าถึงบัคเก็ต S3 และการสร้างอินสแตนซ์ RDS

วิธีแก้ปัญหา

ขั้นตอนต่อไปนี้ครอบคลุมวิธีแก้ปัญหาในส่วนต่อไปนี้:

  1. สำรองฐานข้อมูลบนเซิร์ฟเวอร์ภายในเครื่อง

  2. คัดลอกไฟล์สำรองไปยังบัคเก็ต AWS S3

  3. กู้คืนข้อมูลสำรอง SQL ใน RDS จากบัคเก็ต S3

สำรองฐานข้อมูลบนเซิร์ฟเวอร์ภายในเครื่อง

คุณสามารถใช้วิธีใดก็ได้เพื่อสำรองข้อมูลในเครื่อง ตัวอย่างต่อไปนี้ใช้ .bat สคริปต์ด้วยคำสั่ง sqlcmd ที่คุณสามารถใช้ได้เช่นเดียวกับงานเอเจนต์ SQL ในกรณีที่คุณจำเป็นต้องกำหนดเวลางานการย้ายข้อมูล:

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;"

คัดลอกและอัปโหลดไฟล์สำรองไปยังบัคเก็ต AWS S3

คุณสามารถทำได้โดยใช้ AWS S3 copy หรือ AWS S3 sync คำสั่ง อย่างไรก็ตาม คำสั่ง thesync ได้รับความนิยมอย่างมากและใช้กันอย่างแพร่หลายในอุตสาหกรรม ดังนั้นตัวอย่างต่อไปนี้จึงใช้คำสั่งนี้

ตามค่าเริ่มต้น คำสั่ง AWS sync จะไม่ลบไฟล์ มันเพียงคัดลอกไฟล์ที่ปรับแต่งใหม่ไปยังปลายทาง คุณสามารถใช้สคริปต์ PowerShell ต่อไปนี้ในงานตัวแทน SQL คุณต้องเรียกใช้ทั้งการสำรองข้อมูลและขั้นตอนการคัดลอกนี้โดยใช้บัญชีพร็อกซีตัวแทน SQL ที่กำหนดค่าให้เรียกใช้ cmdExec และระบบย่อยของ PowerShell

$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
}

กู้คืนข้อมูลสำรอง SQL ใน RDS จากบัคเก็ต S3

เรียกใช้คำสั่งต่อไปนี้เพื่อกู้คืน MigrationTestDB2019-08-15 181640.bak ไฟล์เป็น MigrationTestDB ฐานข้อมูล:

EXEC msdb.dbo.rds_restore_database
   @restore_db_name = 'MigrationTestDB',
   @S3_arn_to_restore_from = 'arn:aws:s3:::ramkrdsrestore/MigrationTestDB2019-08-15 181640.bak'
ย้ายฐานข้อมูล SQL Server ไปยังอินสแตนซ์ AWS RDS

สังเกตพารามิเตอร์ที่ให้มากับกระบวนงานที่เก็บไว้ คุณต้องระบุพารามิเตอร์ต่อไปนี้:

  • ชื่อของฐานข้อมูลที่จะกู้คืน
  • ชื่อทรัพยากร Amazon (ARN) ของไฟล์สำรองข้อมูล สำหรับวัตถุ S3 ARN จะเป็นไปตามรูปแบบที่แสดงที่นี่

SQL Server เริ่มงานคืนค่าและกำหนด TaskID . คุณสามารถติดตามสถานะของงานได้อย่างง่ายดายด้วยคำสั่งต่อไปนี้:

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

คุณสามารถใช้ TaskID เพื่อติดตามความคืบหน้าแทน @db_name .

ย้ายฐานข้อมูล SQL Server ไปยังอินสแตนซ์ AWS RDS

พึงระวังข้อกังวลต่อไปนี้:

  • ชื่อไฟล์สำรองที่เก็บข้อมูลจะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ใน rds_restore_database ขั้นตอน
  • บทบาท IAM ที่ใช้ในกลุ่มตัวเลือกมีสิทธิ์เข้าถึงที่ฝากข้อมูล S3
  • นโยบายบัคเก็ต S3 ไม่มีข้อจำกัดในการยกเว้นบทบาท IAM
  • อินสแตนซ์ RDS SQL ใช้กลุ่มตัวเลือกที่ถูกต้องที่คุณเพิ่มตัวเลือกสำรอง/กู้คืน การตั้งค่านี้มีความสำคัญ หากไม่มีสิ่งนี้ การคืนค่าจะไม่เริ่มขึ้น

ข้อจำกัดของการสำรองข้อมูลดั้งเดิมของ SQL Server และการกู้คืนใน Amazon RDS

ต่อไปนี้คือข้อจำกัดบางประการของการสำรองข้อมูลและการคืนค่าดั้งเดิมของ SQL Server ใน AmazonRDS:

  • ไม่มีส่วนต่าง บันทึกธุรกรรม สำรองข้อมูลกลุ่มไฟล์ หรือกู้คืน ซึ่งไม่เป็นอุปสรรคต่อการกู้คืนข้อมูล Amazon RDS ช่วยให้คุณสร้างสแน็ปช็อตอินสแตนซ์ตามกำหนดการ และสแน็ปช็อตเหล่านั้นสามารถเข้าถึงได้ตลอดระยะเวลา 35 วัน คุณสามารถกู้คืนอินสแตนซ์ได้ภายในห้านาทีของเวลาที่กำหนดในช่วง 35 วันที่ผ่านมา
  • คุณไม่สามารถกู้คืนข้อมูลสำรองที่เข้ารหัส KMS จาก S3 ไปยังภายในองค์กรได้
  • คุณไม่สามารถกู้คืนฐานข้อมูลในอินสแตนซ์ RDS เดียวกันได้
  • คุณไม่สามารถกู้คืนข้อมูลสำรองของฐานข้อมูลที่เปิดใช้งาน Tabular Data Encryption (TDE) ได้
  • อินสแตนซ์ RDS เป้าหมายต้องการการเข้าถึงบัคเก็ต S3
  • บัญชีผู้ใช้ที่กำลังเรียกใช้คำสั่งสำรองและเรียกคืนข้อมูลดั้งเดิมของ RDS SQL Server จำเป็นต้องมีสิทธิ์ที่เหมาะสม

บทสรุป

บล็อกนี้แสดงวิธีสำรองฐานข้อมูลบนปลายทางระบบคลาวด์และเรียกคืนข้อมูลบนอินสแตนซ์ AWS RDS อินสแตนซ์ RDS ไม่ให้สิทธิ์เข้าถึงไดรฟ์หรือเซิร์ฟเวอร์ กุญแจสำคัญคือการถ่ายโอนไฟล์สำรองไปยัง AWS S3bucket แล้วกู้คืนจากที่นั่น

อีกหนึ่งกรณีการใช้งานสำหรับบทความนี้คือการจัดเก็บข้อมูลสำรอง SQL ของคุณโดยตรงบน AWSS3 ซึ่งให้ความพร้อมใช้งานของข้อมูล ความปลอดภัย และการปรับปรุงประสิทธิภาพ Amazon S3 ได้รับการออกแบบมาเพื่อความทนทาน 99.999999999% (สิบเอ็ด 9 วินาที) แนวทางนี้คุ้มค่าเมื่อต้องจัดเก็บข้อมูลสำรองฐานข้อมูลโดยประหยัดพื้นที่จัดเก็บข้อมูลจำนวนมาก

ใช้แท็บคำติชมเพื่อแสดงความคิดเห็นหรือถามคำถาม

เพิ่มประสิทธิภาพสภาพแวดล้อมของคุณด้วยการดูแลระบบ การจัดการ และการกำหนดค่าจากผู้เชี่ยวชาญ

บริการแอปพลิเคชันของ Rackspace(RAS) ผู้เชี่ยวชาญจะให้บริการแบบมืออาชีพและที่มีการจัดการในแอปพลิเคชันที่หลากหลาย:

  • แพลตฟอร์มอีคอมเมิร์ซและประสบการณ์ดิจิทัล
  • การวางแผนทรัพยากรองค์กร (ERP)
  • ระบบธุรกิจอัจฉริยะ
  • การจัดการลูกค้าสัมพันธ์ของ Salesforce (CRM)
  • ฐานข้อมูล
  • อีเมลโฮสติ้งและประสิทธิภาพการทำงาน

เราจัดส่ง:

  • ความเชี่ยวชาญที่เป็นกลาง :เราลดความซับซ้อนและเป็นแนวทางในการสร้างสรรค์สิ่งใหม่ของคุณ โดยมุ่งเน้นที่ความสามารถที่มอบคุณค่าในทันที
  • ประสบการณ์สุดคลั่ง ™:เรารวมกระบวนการก่อน เทคโนโลยีที่สอง®แนวทางพร้อมการสนับสนุนทางเทคนิคเฉพาะเพื่อมอบโซลูชันที่ครอบคลุม
  • ผลงานที่ยอดเยี่ยม :เราใช้ประสบการณ์ระบบคลาวด์ที่ครอบคลุมเพื่อช่วยคุณเลือกและปรับใช้เทคโนโลยีที่เหมาะสมบนระบบคลาวด์ที่เหมาะสม
  • ส่งไว :เราพบคุณในที่ที่คุณอยู่ในการเดินทางของคุณและปรับความสำเร็จของเราไปพร้อมกับคุณ

เรียนรู้เพิ่มเติมเกี่ยวกับฐานข้อมูล

ใช้แท็บคำติชมเพื่อแสดงความคิดเห็นหรือถามคำถาม คุณสามารถเริ่มการสนทนากับเราได้