จะย้ายฐานข้อมูล GCP ได้อย่างราบรื่นได้อย่างไร? การย้ายข้อมูลแบบไม่หยุดนิ่งด้วย Database Migration Service (DMS)

เมฆ 2026-06-04 阅读 7
1

ในด้านการประมวลผลแบบคลาวด์มีสิ่งหนึ่งที่สถาปนิกและการดำเนินงานและการบำรุงรักษา (SRE) ทุกคนสามารถทำงานล่วงเวลาได้ตลอดทั้งคืนและนั่นคือ

การย้ายฐานข้อมูล

เมื่อหลายคนได้ยินคำว่า "ย้ายห้องสมุด" ภาพที่อยู่ในใจคือเลือกช่วงเวลาธุรกิจที่ต่ำในวันที่30ของปีใหม่หรือสามโมงเช้าแขวนประกาศ "ระบบอยู่ระหว่างการบำรุงรักษา" ในหน้าแรกจากนั้นรีบส่งออก SQL, ถ่ายโอนไฟล์, นำเข้าไลบรารีใหม่, แก้ไขการกำหนดค่า... กระบวนการทั้งหมดก็เหมือนกับการเดินไต่เชือกที่ระดับความสูงเมื่อลิงก์ใดติดอยู่หรือข้อมูลไม่ตรงกันเวลาในการระงับธุรกิจจะยาวขึ้นเรื่อยๆ

แต่ในความเป็นจริงแล้วผู้ให้บริการระบบคลาวด์ในปัจจุบันไม่ได้รับความนิยมมานานแล้วในการ "ฆ่าศัตรูหนึ่งพันคนและเอาชนะตัวเองแปดร้อยคน" วันนี้เราจะมาพูดถึงสิ่งประดิษฐ์ที่จัดทำโดย Google Cloud (GCP)-

Database Migration Service (DMS)

ในฐานะคนที่ผ่านโคลนในสภาพแวดล้อมการผลิตวันนี้ฉันใช้ภาษาที่เข้าใจง่ายที่สุดโดยไม่ต้องพูดถึงคำศัพท์ที่ทำให้ง่วงนอนในเอกสารราชการและสอนวิธีใช้ DMS เพื่อให้บรรลุ "การหยุดทำงานเป็นศูนย์" "การเคลื่อนไหวที่ราบรื่น

1.แนวคิดหลัก: "zero stop moving moving" ของ DMS คืออะไร?

ก่อนที่จะเริ่มเราใช้เวลาสักครู่เพื่อทำความเข้าใจตรรกะพื้นฐานของมันหลักของความสามารถของ DMS ในการบรรลุ "การหยุดทำงานเป็นศูนย์" คือไม่ทิ้งข้อมูลในครั้งเดียวแต่แบ่งออกเป็นสองขั้นตอน:

การซื้อบัญชี Google Cloud

การเริ่มต้นแบบเต็ม (การจำลองข้อมูลหุ้น):DMS จะคัดลอกข้อมูลย้อนหลังทั้งหมดที่มีอยู่ในฐานข้อมูลต้นฉบับไปยังไลบรารีเป้าหมายของ GCP (เช่น Cloud SQL) ก่อนในกระบวนการนี้ธุรกิจออนไลน์ของคุณจะทำงานตามปกติและการอ่านและการเขียนตามปกติจะไม่ได้รับผลกระทบเลย

การซิงโครไนซ์ที่เพิ่มขึ้น (ข้อมูลการติดตามแบบเรียลไทม์): เมื่อมีการส่งข้อมูลในอดีต DMS จะอ่านบันทึกของไลบรารีต้นทาง (เช่น Binlog ของ MySQL หรือ WAL ของ PostgreSQL) และข้อมูลทางธุรกิจที่สร้างขึ้นใหม่อย่างต่อเนื่องในระหว่างการย้ายเต็มจำนวนซิงโครไนซ์ "ไปยังไลบรารีใหม่ในขณะนี้ข้อมูลของไลบรารีเก่าและใหม่เกือบจะซิงโครไนซ์แบบเรียลไทม์

เนื่องจากข้อมูลของไลบรารีเก่าและใหม่มีความสอดคล้องกันคุณจึงสามารถเปลี่ยนสตริงการเชื่อมต่อฐานข้อมูลของแอปพลิเคชันเป็นที่อยู่ของไลบรารีใหม่ได้อย่างอิสระในระหว่างวันและเมื่อธุรกิจมีความผ่อนคลายมากที่สุด

เวลาหยุดชะงักของธุรกิจเป็นเพียงไม่กี่สิบวินาทีหรือแม้แต่วินาทีเมื่อรีสตาร์ทแอปพลิเคชันและสลับการกำหนดค่า

2."การตรวจสอบความปลอดภัยสามครั้ง" ก่อนย้าย (การเตรียมการ)

การเคลื่อนย้ายด้วย DMS ก็เหมือนกับการบินโดยเครื่องบินเมื่อการตรวจสอบความปลอดภัยเสร็จสิ้นการเดินทางก็ประสบความสำเร็จครึ่งหนึ่งสามจุดต่อไปนี้กำหนดโดยตรงว่าการย้ายข้อมูลจะล้มเหลวหรือไม่:

1.เปิดบันทึกของไลบรารีต้นทาง (ขั้นตอนที่สำคัญที่สุด)

DMS ต้องสามารถอ่านบันทึกแบบเรียลไทม์ของไลบรารีต้นทางของคุณเพื่อทำการซิงโครไนซ์เพิ่มเติม

ถ้าไลบรารีต้นทางคือ MySQL: คุณต้องแน่ใจว่าได้เปิด binlog และ binlog_format ต้องตั้งค่าเป็น ROW,binlog

_ Row_image ถูกตั้งค่าเป็น FULL 。

หากไลบรารีต้นทางเป็น PostgreSQL: คุณต้องตั้งค่า wal_level เป็น logical และกำหนดค่า Slots Replication

2.คิดเกี่ยวกับวิธีการเชื่อมต่อเครือข่าย (แผนการเชื่อมต่อ)

ต้องสามารถพูดคุยระหว่างไลบรารีต้นทางและ GCP ได้อย่างปลอดภัย DMS มีวิธีการเชื่อมต่อหลายวิธีเรียงตามระดับความปลอดภัยและคำแนะนำ:

การเชื่อมต่อ VPC (การเชื่อมต่อแบบเพียร์ทูเพียร์ VPC): หากไลบรารีต้นทางของคุณอยู่ใน VPC อื่นของ GCP หรือห้องคอมพิวเตอร์ที่เชื่อมต่อผ่านสายเฉพาะ (Interconnect) นี่เป็นตัวเลือกแรกรวดเร็วและปลอดภัย

Reverse SSH Tunnel (อุโมงค์ SSH ย้อนกลับ): โปรแกรมพลเรือนที่ใช้บ่อยที่สุดเปิดเครื่องเสมือนขนาดเล็กในเครือข่ายของไลบรารีต้นทางเป็นเครื่องกระโดดน้ำและเชื่อมต่อ GCP ผ่านอุโมงค์เข้ารหัส

รายการอนุญาต IP (Public IP): ง่ายที่สุดแต่ยังแนะนำน้อยที่สุดเปิดเผย IP เครือข่ายสาธารณะของไลบรารีต้นทางโดยตรงไปยังช่วง IP ของ DMS หากการทดสอบสามารถทำได้เพียงแค่ใช้สภาพแวดล้อมการผลิตด้วยความระมัดระวัง

3.สร้างบัญชีการโยกย้าย

การซื้อบัญชี Google Cloud

อย่าใช้โดยตรง

รูท

หรือ

ผู้ดูแลระบบ

บัญชีสูงสุดประเภทนี้จะเรียกใช้สำหรับการโยกย้ายสร้างไฟล์

Dms_user

ให้สิทธิ์การอ่านและคัดลอกที่จำเป็นเท่านั้น (เช่น MySQL

REPLICATION CLIENT

,

REPLICATION SLAVE

,

เลือก

ฯลฯ) หลังจากการย้ายเสร็จสิ้นให้ลบบัญชีนี้โดยตรงซึ่งปลอดภัยและสง่างาม

3.การต่อสู้จริง: สี่ขั้นตอนในการกำหนดค่า DMS

การเตรียมการเสร็จสิ้นเราตรงไปที่คอนโซล GCP ค้นหา

Database Migration

ขั้นตอนที่1: สร้าง "Migration Job"

หลังจากคลิกที่สร้างคุณจะต้องกรอกข้อมูลพื้นฐานของงาน:

ประเภทฐานข้อมูลต้นทาง: เช่น MySQL ที่สร้างขึ้นเอง, AWS RDS หรือฐานข้อมูลระบบคลาวด์อื่นๆ

ประเภทฐานข้อมูลเป้าหมาย: โดยปกติแล้วจะเป็น Cloud SQL หรือ AlloyDB ที่โฮสต์โดย GCP 。

ประเภทการโยกย้าย: ไม่ลังเลที่จะเลือก "การซิงค์ต่อเนื่อง (Continuous)" การเลือกสิ่งนี้เท่านั้นคือการหยุดและการเคลื่อนย้ายเป็นศูนย์หากคุณเลือก "one-time" ข้อมูลจะสิ้นสุดลงหลังจากการถ่ายโอนและไม่รวมการซิงโครไนซ์ที่เพิ่มขึ้นในภายหลัง

ขั้นตอนที่2: กำหนดค่าการเชื่อมต่อแหล่งที่มา (Connection Profile)

นี่คือการกรอก "ข้อมูลการตรวจสอบความปลอดภัย" ที่เราเพิ่งเตรียมไว้:

ป้อนที่อยู่ IP พอร์ตบัญชี dms_user และรหัสผ่านของไลบรารีต้นทาง

เลือกวิธีการเชื่อมต่อเครือข่ายที่คุณกำหนด (เช่นกำหนดค่า Rev

อุโมงค์ SSH)

คลิกที่ "ทดสอบการเชื่อมต่อ" เพื่อให้แน่ใจว่าแถบความคืบหน้าเปลี่ยนเป็นสีเขียวหากมีการรายงานข้อผิดพลาดโดยปกติแล้วไฟร์วอลล์หรือทีมรักษาความปลอดภัยจะไม่ปล่อยให้กลับไปตรวจสอบเครือข่าย

ขั้นตอนที่3: กำหนดค่าไลบรารีปลายทาง (Cloud SQL)

หากยังไม่ได้สร้าง Cloud SQL เป้าหมาย DMS จะอนุญาตให้คุณ "สร้างใหม่ด้วยคลิกเดียว" โดยตรงในอินเทอร์เฟซ

คุณสามารถเลือกการกำหนดค่าเดียวกันกับไลบรารีต้นทาง (CPU, หน่วยความจำ, พื้นที่เก็บข้อมูล)

ขอแนะนำอย่างยิ่ง: โดยวิธีการตรวจสอบความพร้อมใช้งานสูง (HA) และการสำรองข้อมูลอัตโนมัติของไลบรารีเป้าหมายในขั้นตอนเดียว

ขั้นตอนที่4: เริ่มการตรวจสอบและเรียกใช้ (Start Job)

ก่อนที่จะคลิกเรียกใช้ DMS จะมีฟังก์ชัน "Pre-flight check" ที่มีประสิทธิภาพมากโดยอัตโนมัติจะช่วยให้คุณตรวจสอบ: รูปแบบบันทึกของไลบรารีต้นทางใช่ไหม? สิทธิ์เพียงพอหรือไม่? เวอร์ชันเข้ากันไม่ได้?

หากมีข้อผิดพลาดสีแดงให้ไปที่ไลบรารีต้นทางเพื่อเปลี่ยนการกำหนดค่าตามคำแนะนำหากเป็นเครื่องหมายขีดสีเขียวทั้งหมดให้คลิกโดยตรง

"เริ่มต้น (Start)"

4.Cutover: วิธียิง "ช็อตสุดท้าย" อย่างสมบูรณ์แบบ

เมื่องานทำงานคุณจะเห็นสถานะกลายเป็น

Full dump in progress

(ส่งออกเต็มจำนวน) แล้วกลายเป็น

CDC in progress

(การซิงโครไนซ์ที่เพิ่มขึ้น)

เมื่อเข้าสู่สถานะ

CDC in progress

และ

"ซิงโครไนซ์หน่วงเวลา (Lag)" เข้าใกล้0

ในเวลานั้นหมายความว่าข้อมูลของไลบรารีใหม่และไลบรารีเก่าได้รับการซิงโครไนซ์อย่างสมบูรณ์ในเวลานี้เราสามารถเตรียม "การตัด" ที่แท้จริงได้

นี่คือสาระสำคัญของการกำหนดความสำเร็จหรือความล้มเหลวของการหยุดทำงานเป็นศูนย์โปรดปฏิบัติตามขั้นตอนต่อไปนี้อย่างเคร่งครัด:

1.ธุรกิจสัมผัสกับ "อ่านอย่างเดียว"

เพื่อป้องกันไม่ให้มีการเขียนข้อมูลใหม่ไม่ถูกต้องภายในไม่กี่วินาทีหลังจากเปลี่ยนการเชื่อมต่อขั้นแรกให้ตั้งค่าบริการเป็น "โหมดอ่านอย่างเดียว" บนเลเยอร์แอปพลิเคชันหรือฐานข้อมูลต้นทาง

2.รอให้คลื่นข้อมูลสุดท้ายของ DMS ผูก

สังเกตอินเทอร์เฟซ DMS เพื่อให้แน่ใจว่าความล่าช้า (Lag) กลายเป็น0อย่างสมบูรณ์ซึ่งหมายความว่าข้อมูลสองสามชิ้นสุดท้ายที่สร้างโดยไลบรารีต้นทางก่อนการอ่านอย่างเดียวนั้นอยู่ในไลบรารี GCP ใหม่อย่างต่อเนื่อง

3.คลิกที่ "สมบูรณ์ (Promote)" บน DMS

คลิกที่คอนโซล GCP

“โปรโมชั่น”

ปุ่มการกระทำนี้จะทำสองสิ่ง:

ตัดการซิงโครไนซ์ระหว่างไลบรารีใหม่และไลบรารีเก่า

การซื้อบัญชี Google Cloud

อัปเกรด Cloud SQL เป้าหมายจาก "ผู้รับแบบอ่านอย่างเดียว" เป็น "ไลบรารีหลักของการผลิตที่อ่านและเขียนได้อย่างอิสระ"

4.แก้ไขการกำหนดค่าแอปพลิเคชันและออนไลน์ทั้งหมด

เปลี่ยนการกำหนดค่าการเชื่อมต่อฐานข้อมูลของแอปพลิเคชันของคุณเป็นที่อยู่ IP ของ Cloud SQL ใหม่ยกเลิกโหมดอ่านอย่างเดียวของแอปพลิเคชันและเริ่มบริการใหม่

ตรวจสอบธุรกิจเพื่อดูว่าการสั่งซื้อที่แผนกต้อนรับและการเข้าสู่ระบบส่วนหลังเป็นเรื่องปกติหรือไม่หากทุกอย่างเป็นไปด้วยดีขอแสดงความยินดีการย้ายฐานข้อมูลที่น่าตื่นเต้นนี้กำลังใช้งานอยู่

หากไม่มีการรับรู้เลยก็สำเร็จ!

5.สามเณรหลีกเลี่ยงหลุมและพูดคุยเกี่ยวกับประสบการณ์

แม้ว่า DMS จะใช้งานง่ายแต่ในฐานะคนที่มามีหลุมขนาดใหญ่ที่มองไม่เห็นหลายแห่งที่ต้องเตือนคุณ:

ตารางขนาดใหญ่ไม่มีคีย์หลัก: หากมีตารางขนาดใหญ่มากในไลบรารีต้นทางของคุณและไม่มีคีย์หลักอยู่ในนั้นประสิทธิภาพของ DMS จะแย่มากเมื่อทำการซิงโครไนซ์ส่วนเพิ่ม (CDC) และอาจทำให้การซิงโครไนซ์ติดขัด. ก่อนการย้ายข้อมูลอย่าลืมขอให้นักพัฒนาเพิ่มคีย์หลักในตารางโดยไม่มีคีย์หลัก

อย่าบันทึกแบนด์วิดท์เครือข่าย: ขั้นตอนการเคลื่อนย้ายเต็มรูปแบบใช้แบนด์วิดท์เครือข่ายมากหากไลบรารีต้นทางของคุณอยู่ในห้องคอมพิวเตอร์ในพื้นที่และแบนด์วิดท์ของสายเฉพาะหรือเครือข่ายสาธารณะมีขนาดเล็กเกินไปไม่เพียงแต่จะย้ายไปสองสามวันและคืนเท่านั้นแต่ยังอาจบีบแบนด์วิดท์ธุรกิจปกติของห้องคอมพิวเตอร์ของคุณด้วยอย่าลืมเริ่มการเคลื่อนย้ายเต็มรูปแบบในช่วงธุรกิจที่มีน้อยหรือกำหนดขีดจำกัดการเข้าชมใน DMS

หมายเหตุเกี่ยวกับเขตเวลา (Timezone): Cloud SQL เป็นเขตเวลา UTC โดยค่าเริ่มต้นหากไลบรารีต้นทางของคุณใช้ Asia/Shanghai (East Eight District) เวลาในการค้นหาแอปพลิเคชันหลังจากการย้ายข้อมูลอาจน้อยกว่า8ชั่วโมงอย่างอธิบายไม่ได้โปรดจำไว้ว่าเมื่อสร้างไลบรารีเป้าหมายให้ปรับพารามิเตอร์โซนเวลา (default_timezone) ให้เหมือนกับไลบรารีต้นทางทุกประการ

📝สรุป

Database Migration Service(DMS) ของ GCP เป็นหลัก

ฟรีไม่มีเซิร์ฟเวอร์ (Serverless) เครื่องมือการโยกย้าย

(คุณจะต้องจ่ายค่าฮาร์ดแวร์และเครือข่ายของไลบรารีเป้าหมายในระหว่างขั้นตอนการย้ายข้อมูลและ DMS เองจะไม่เรียกเก็บค่าธรรมเนียมซอฟต์แวร์)

มันเปลี่ยน "คลังขนย้ายเนื้อมนุษย์ด้วยตนเอง" ที่เคยมีเกณฑ์สูงและมีความเสี่ยงสูงให้กลายเป็นเมาส์ที่ได้มาตรฐานและเป็นภาพ

สรุปประโยคสุดท้าย:

หยุดใช้ความคิดเก่าๆในการปิดระบบและการบำรุงรักษาเพื่อโยนสภาพแวดล้อมการผลิตใช้ DMS เพื่อทำการซิงโครไนซ์ที่เพิ่มขึ้นอย่างต่อเนื่องเข้าใจความคิดริเริ่มในมือของคุณเองและย้ายห้องสมุดด้วยการดื่มกาแฟในระหว่างวันนี่คือท่าทางที่สง่างามที่การดำเนินการและการบำรุงรักษาระบบคลาวด์สมัยใหม่ควรมี!

cloud
← 返回新闻中心