0Pricing
Cloud & IT Cert Prep · บทเรียน

แนวทางปฏิบัติที่ดีในการย้ายฐานข้อมูล

ใช้ Azure Database Migration Service เพื่อย้ายฐานข้อมูล SQL Server ไปยัง Azure SQL โดยมีเวลาหยุดทำงานน้อยที่สุด และแก้ไขปัญหาสคีมาและความเข้ากันได้ที่พบบ่อย

แนวทางปฏิบัติที่ดีในการย้ายฐานข้อมูล เป็นบทเรียน Cloud & IT Cert Prep ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cloud & IT Cert Prep และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cloud & IT Cert Prep มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดการย้ายฐานข้อมูลจึงแตกต่าง

การย้ายฐานข้อมูลมีความซับซ้อนกว่าการย้าย VM เนื่องจากฐานข้อมูลมี สถานะคงอยู่ และมักมี การเชื่อมต่อที่ใช้งานอยู่ตลอด 24 ชั่วโมงทุกวัน แนวทางคัดลอกและกู้คืนแบบง่าย ๆ ต้องหยุดให้บริการหลายชั่วโมง ซึ่งยอมรับไม่ได้สำหรับระบบจริง แนวทางปฏิบัติที่ดีที่สุดในการย้ายฐานข้อมูลใช้ การจำลองข้อมูลอย่างต่อเนื่อง เพื่อให้ต้นทางและเป้าหมายซิงค์กันระหว่างตรวจสอบเป้าหมาย จากนั้นจึงดำเนินการ เปลี่ยนระบบตามแผนในช่วงเวลาสั้น ๆ เมื่อเปลี่ยนการรับส่งข้อมูลไปยังฐานข้อมูล Azure ใหม่

Azure Database Migration Service

Azure Database Migration Service (DMS) เป็นบริการที่มีการจัดการเต็มรูปแบบสำหรับควบคุมการย้ายแบบออนไลน์ (หยุดให้บริการเกือบเป็นศูนย์) และแบบออฟไลน์ (อาศัยช่วงหยุดให้บริการ) จากกลไกฐานข้อมูลภายในองค์กรที่ได้รับความนิยมไปยังบริการฐานข้อมูลที่มีการจัดการของ Azure DMS รองรับแหล่งที่มา ได้แก่ SQL Server, MySQL, PostgreSQL, MongoDB, Oracle และเป้าหมาย ได้แก่ Azure SQL Database, Azure SQL Managed Instance, Azure Database for MySQL และ Azure Cosmos DB บริการนี้ผสานรวมกับ Data Migration Assistant (DMA) เพื่อดำเนินการตรวจสอบความเข้ากันได้ก่อนการย้าย

# Create a DMS instance
az dms create \
  --service-name myDMS \
  --resource-group myRG \
  --location eastus \
  --sku-name Premium_4vCores \
  --vnet myVnet \
  --subnet mySubnet

การประเมินก่อนการย้ายด้วย DMA

ก่อนย้าย SQL Server ให้เรียกใช้ Data Migration Assistant (DMA) กับฐานข้อมูลต้นทาง DMA จะระบุสิ่งต่อไปนี้: ปัญหาด้านความเข้ากันได้ (ฟีเจอร์ที่ใช้ในฐานข้อมูลของคุณแต่ไม่รองรับโดยเป้าหมาย Azure SQL), การเปลี่ยนแปลงที่ทำให้การทำงานเดิมหยุดลง, ฟีเจอร์ที่เลิกใช้งานแล้ว และ คำแนะนำด้านประสิทธิภาพ ระบบจะสร้างรายงาน HTML โดยละเอียดและจัดลำดับปัญหาตามความรุนแรง เพื่อให้ทีมของคุณแก้ไขปัญหาเหล่านั้นได้ก่อนเริ่มช่วงเวลาการย้าย

# Run DMA assessment from CLI (Windows only)
# DmaCmd.exe /AssessmentName='SQL2022toAzureSQL' \
#   /AssessmentSourcePlatform='SqlOnPrem' \
#   /AssessmentTargetPlatform='AzureSqlDatabase' \
#   /AssessmentDatabases='Server=myServer;Initial Catalog=AdventureWorks;Integrated Security=true'

การย้ายแบบออนไลน์เทียบกับออฟไลน์

การย้ายแบบออฟไลน์จะทำให้ฐานข้อมูลต้นทางออฟไลน์ตลอดระยะเวลาการย้าย เหมาะสำหรับฐานข้อมูลขนาดเล็กหรือระบบที่ไม่สำคัญ ซึ่งสามารถกำหนดช่วงเวลาบำรุงรักษาได้ การย้ายแบบออนไลน์ใช้การจับข้อมูลการเปลี่ยนแปลง (CDC) หรือการส่งบันทึกธุรกรรม เพื่อจำลองการเปลี่ยนแปลงอย่างต่อเนื่องขณะโหลดฐานข้อมูลใหม่ ทำให้ลดเวลาหยุดให้บริการเหลือเพียงขั้นตอนการเปลี่ยนระบบสุดท้าย แนะนำให้ใช้การย้ายแบบออนไลน์สำหรับฐานข้อมูลที่มีขนาดใหญ่กว่า 1 GB หรือมี SLA ที่กำหนดให้หยุดให้บริการน้อยกว่า 1 ชั่วโมง

การกำหนดค่าโครงการการย้าย DMS

โครงการการย้าย DMS จะระบุ การเชื่อมต่อแหล่งที่มา (ชื่อเซิร์ฟเวอร์ การตรวจสอบสิทธิ์ ชื่อฐานข้อมูล), การเชื่อมต่อเป้าหมาย (สตริงการเชื่อมต่อ Azure SQL) และ โหมดการย้าย (ออนไลน์หรือออฟไลน์) นอกจากนี้ คุณยังเลือกฐานข้อมูลและตารางที่จะย้ายได้ DMS จะตรวจสอบการเชื่อมต่อก่อนเริ่มทำงาน โครงการการย้ายจะคงอยู่ในพอร์ทัล Azure ทำให้คุณตรวจสอบความคืบหน้า ลองย้ายตารางที่ล้มเหลวอีกครั้ง และดูบันทึกกิจกรรมโดยละเอียดได้

# Create a DMS project for SQL Server to Azure SQL Database
az dms project create \
  --service-name myDMS \
  --resource-group myRG \
  --name SQL2AzureSQL \
  --source-platform SQL \
  --target-platform SQLDB \
  --location eastus

ย้ายโครงสร้างก่อน

ให้ย้าย โครงสร้างก่อนข้อมูลเสมอ ใช้ DMA หรือ SQL Server Management Studio (SSMS) เพื่อสร้างสคริปต์และนำตาราง มุมมอง กระบวนงานที่จัดเก็บ ฟังก์ชัน และดัชนีไปใช้งานบน Azure SQL Database เป้าหมาย ตรวจสอบว่าวัตถุโครงสร้างทั้งหมดมีอยู่และคอมไพล์ได้โดยไม่มีข้อผิดพลาดก่อนอนุญาตให้ DMS เริ่มถ่ายโอนข้อมูล ข้อผิดพลาดของโครงสร้างที่พบระหว่างการย้ายอาจทำให้การย้ายเสียหายและบังคับให้คุณเริ่มต้นใหม่ทั้งหมด

# Generate schema scripts using sqlpackage
sqlpackage /Action:Script \
  /SourceServerName:myOnPremServer \
  /SourceDatabaseName:AdventureWorks \
  /TargetServerName:mysqlserver.database.windows.net \
  /TargetDatabaseName:AdventureWorksAzure \
  /OutputPath:/tmp/schema.sql

การโหลดข้อมูลเริ่มต้น

DMS ดำเนินการ โหลดข้อมูลทั้งหมด โดยอ่านตารางจากฐานข้อมูลต้นทางทีละตาราง แล้วเขียนแถวข้อมูลไปยังเป้าหมาย Azure SQL ด้วยการแทรกข้อมูลจำนวนมาก ระหว่างการโหลดข้อมูลทั้งหมด บริการจะแบ่งตารางขนาดใหญ่ออกเป็นชุดย่อย ๆ ดัชนีบนระบบเป้าหมายจะถูกปิดใช้งานระหว่างการโหลดเพื่อเพิ่มอัตราการส่งข้อมูลให้สูงที่สุด จากนั้นจึงสร้างดัชนีใหม่ภายหลัง สำหรับฐานข้อมูลขนาดใหญ่มาก (ระดับ TB) ควรพิจารณาใช้ Azure Data Factory หรือ การส่งออก bacpac เพื่อโหลดข้อมูลล่วงหน้าและลดเวลาทำงานของ DMS

การบันทึกการเปลี่ยนแปลงข้อมูลเพื่อการซิงค์แบบออนไลน์

สำหรับการย้ายข้อมูลแบบออนไลน์ DMS จะเปิดใช้งาน การบันทึกการเปลี่ยนแปลงข้อมูลของ SQL Server (CDC) ที่ต้นทาง เพื่อบันทึกการดำเนินการ INSERT, UPDATE และ DELETE ที่เกิดขึ้นขณะกำลังโหลดข้อมูลทั้งหมด เมื่อการโหลดข้อมูลทั้งหมดเสร็จสิ้น DMS จะนำการเปลี่ยนแปลงที่บันทึกไว้ไปทำซ้ำบนระบบเป้าหมาย เพื่อค่อย ๆ ลดช่องว่างของข้อมูล เมื่อ เวลาแฝงลดลงจนเกือบเป็นศูนย์ ฐานข้อมูลก็พร้อมสำหรับการสลับระบบ CDC ต้องใช้ SQL Server Agent ที่กำลังทำงานอยู่ และฐานข้อมูลต้นทางต้องอยู่ในโหมด การกู้คืนแบบเต็ม

-- Enable CDC on source database
EXEC sys.sp_cdc_enable_db;

-- Enable CDC on specific table
EXEC sys.sp_cdc_enable_table
  @source_schema = N'dbo',
  @source_name = N'Orders',
  @role_name = NULL;

การสลับระบบและการตรวจสอบความถูกต้อง

เมื่อความล่าช้าของ CDC เหลือน้อยที่สุด ให้เริ่มดำเนินการ สลับระบบ ในพอร์ทัล DMS DMS จะหยุดรับเหตุการณ์ CDC ใหม่ ใช้การเปลี่ยนแปลงที่เหลืออยู่ และทำเครื่องหมายว่าการย้ายข้อมูลเสร็จสมบูรณ์ จากนั้นให้เปลี่ยนสตริงการเชื่อมต่อของแอปพลิเคชันไปยังปลายทาง Azure SQL เรียกใช้ แบบสอบถามตรวจสอบความถูกต้องของข้อมูล โดยเปรียบเทียบจำนวนแถวและผลรวมตรวจสอบระหว่างต้นทางกับเป้าหมายสำหรับตารางที่สำคัญ คงฐานข้อมูลต้นทางไว้ในโหมดอ่านอย่างเดียวเป็นเวลา 24–48 ชั่วโมงหลังการสลับระบบ เผื่อจำเป็นต้องย้อนกลับ

-- Validate row counts post-cutover
SELECT TABLE_NAME, TABLE_ROWS
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'dbo'
ORDER BY TABLE_NAME;

การปรับแต่งประสิทธิภาพหลังการย้ายข้อมูล

หลังการย้ายข้อมูล Azure SQL Database อาจทำงานแตกต่างจาก SQL Server ภายในองค์กร เนื่องจากแคชแผนการสืบค้น สถิติ และฮาร์ดแวร์แตกต่างกัน เรียกใช้ Database Experimentation Assistant (DEA) เพื่อเล่นซ้ำร่องรอยภาระงานบนเป้าหมาย Azure และเปรียบเทียบแผนการทำงาน เปิดใช้งาน Automatic Tuning ใน Azure SQL เพื่อให้บริการสร้างหรือลบดัชนีโดยอัตโนมัติ และบังคับใช้แผนการสืบค้นที่ไม่มีการถดถอยด้านประสิทธิภาพ ซึ่งจะช่วยปรับปรุงประสิทธิภาพในระยะยาวโดยไม่ต้องดำเนินการด้วยตนเอง

-- Enable Automatic Tuning on Azure SQL Database
ALTER DATABASE CURRENT SET AUTOMATIC_TUNING (
  FORCE_LAST_GOOD_PLAN = ON,
  CREATE_INDEX = ON,
  DROP_INDEX = OFF
);

การย้ายฐานข้อมูลจากกลไกอื่น

DMS ยังรองรับการย้ายกลไกฐานข้อมูลแบบโอเพนซอร์สด้วย ได้แก่ MySQL ไปยัง Azure Database for MySQL โดยใช้รูปแบบ mysqldump + การจำลองแบบ binlog และ PostgreSQL ไปยัง Azure Database for PostgreSQL โดยใช้ช่องการจำลองแบบเชิงตรรกะ สำหรับการย้ายข้อมูลจาก MongoDB ไปยัง Cosmos DB ให้ใช้ Cosmos DB for MongoDB API และไปป์ไลน์ mongodump / mongorestore แบบเนทีฟ หรือใช้ตัวเชื่อมต่อ MongoDB ของ Azure Data Factory สำหรับ CDC แบบเพิ่มทีละส่วน ควรทดสอบการย้ายข้อมูลบนสำเนาที่ไม่ใช่ระบบจริงเสมอ ก่อนดำเนินการกับข้อมูลที่ใช้งานจริง

# Offline MySQL migration using mysqldump
mysqldump -h source-server -u admin -p \
  --single-transaction --routines --triggers \
  myDatabase > /tmp/myDatabase.sql

# Restore to Azure Database for MySQL
mysql -h myserver.mysql.database.azure.com \
  -u adminUser@myserver -p myDatabase < /tmp/myDatabase.sql

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความเข้าใจแนวคิด Microsoft Azure Fundamentals (AZ-900) จากบทเรียนนี้

สรุปบทเรียน

ในบทเรียนนี้ คุณได้เรียนรู้ว่า Azure Database Migration Service ทำหน้าที่ประสานงานการย้ายฐานข้อมูลทั้งแบบออนไลน์และออฟไลน์, การประเมินก่อนการย้ายข้อมูลด้วย DMA ช่วยตรวจพบปัญหาความเข้ากันได้ก่อนช่วงเวลาการย้ายข้อมูล และ การบันทึกการเปลี่ยนแปลงข้อมูล ช่วยให้สลับระบบฐานข้อมูลจริงได้โดยแทบไม่มีเวลาหยุดทำงาน ต่อไปเราจะเปลี่ยนไปเน้นการปรับต้นทุน Azure ให้เหมาะสม

คำถามที่พบบ่อย

บทเรียน “แนวทางปฏิบัติที่ดีในการย้ายฐานข้อมูล” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “แนวทางปฏิบัติที่ดีในการย้ายฐานข้อมูล” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cloud & IT Cert Prep ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cloud & IT Cert Prep มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “แนวทางปฏิบัติที่ดีในการย้ายฐานข้อมูล”

ใช้ Azure Database Migration Service เพื่อย้ายฐานข้อมูล SQL Server ไปยัง Azure SQL โดยมีเวลาหยุดทำงานน้อยที่สุด และแก้ไขปัญหาสคีมาและความเข้ากันได้ที่พบบ่อย คุณปฏิบัติ Cloud & IT Cert Prep ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cloud & IT Cert Prep หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cloud & IT Cert Prep บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “แนวทางปฏิบัติที่ดีในการย้ายฐานข้อมูล” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Cloud & IT Cert Prep นี้ได้ไหม

ได้ บทเรียน Cloud & IT Cert Prep ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. กรอบการย้ายระบบ 6-Rs
  2. Azure Migrate: การค้นหาและการประเมิน
  3. การย้ายแบบ Rehost ด้วย Azure Migrate (ยกแล้วเปลี่ยน)
  4. แนวทางปฏิบัติที่ดีในการย้ายฐานข้อมูล
← กลับไปที่ Cloud & IT Cert Prep