🚀 Database Migration: Mydumper Strategy

สถานการณ์และเป้าหมาย

คู่มือนี้ออกแบบมาสำหรับการย้ายฐานข้อมูล Scan OPD/IPD ที่มีขนาดใหญ่ และประกอบด้วยไฟล์แนบ (รูปภาพ/PDF) จำนวนมาก รองรับทั้ง Windows และ Linux

หลักการทำงานสำคัญ:

  • Remote
    การบริหารจัดการผ่าน SSH: การทำงานทั้งหมดทำผ่านคำสั่งรีโมทจากคอมพิวเตอร์ของคุณ ไม่จำเป็นต้องเข้าถึงหน้าเครื่องเซิร์ฟเวอร์โดยตรง
  • Speed
    Multi-thread Transfer: ใช้ Mydumper ดึงข้อมูลหลายหัวพร้อมกัน เร็วกว่าวิธีปกติ 4-10 เท่า
  • Direct
    Direct Pipeline: ข้อมูลวิ่งตรงระหว่างเซิร์ฟเวอร์ (ผ่าน SSHFS) ไม่กินพื้นที่เครื่องเก่าและไม่ต้องโหลดลงคอมพิวเตอร์ของคุณ

สถาปัตยกรรมระบบ (System Architecture)

💻
คอมพิวเตอร์ของคุณ (Admin PC)
สั่งงานผ่าน SSH (Control Plane)
SSH Port 22
🖥️
เครื่องเก่า
Mydumper (Export)
Data Flow
Direct Transfer (SSHFS)
SSH Port 22
💾
เครื่องใหม่
Myloader (Import)
* ข้อมูล (Data) วิ่งระหว่าง Server โดยตรง / คำสั่ง (Command) วิ่งจากเครื่อง Admin

ประสิทธิภาพการทำงาน (คาดการณ์)

เปรียบเทียบระยะเวลาในการย้ายข้อมูลขนาดใหญ่

*ข้อมูลอ้างอิงจากการทดสอบจริง: Mysqldump (Single-thread) vs Mydumper (4 Threads)

⚙️ ศูนย์ตั้งค่า (Configuration Center)

กรอกข้อมูล User/Pass แยกกันระหว่าง Server (SSH) และ Database (DB)

เครื่องต้นทาง (Source)

System Info
🔑 SSH Credentials (Login)
🗄️ DB Credentials (MySQL)

เครื่องปลายทาง (Target)

System Info
🔑 SSH Credentials (Login)
🗄️ DB Credentials (MySQL)

ข้อมูลทั่วไป

Performance & Scope

1 การเชื่อมต่อรีโมท (SSH Access)

ขั้นตอนการทำงานทั้งหมดในคู่มือนี้ จะเป็นการส่งคำสั่งผ่านระบบ รีโมท (Remote) ด้วย SSH จากคอมพิวเตอร์ของคุณไปยังเครื่องเซิร์ฟเวอร์ ไม่ใช่การไปนั่งทำงานที่หน้าเครื่องเซิร์ฟเวอร์โดยตรง ช่วยให้คุณบริหารจัดการระบบได้จากทุกที่

กรุณาใช้รหัสผ่านของ Server (SSH) ที่กรอกไว้ในส่วนตั้งค่าเพื่อเข้าใช้งาน

🖥️ เข้าเครื่องต้นทาง (Source)

ssh user@ip

รหัสผ่าน SSH: pass

💾 เข้าเครื่องปลายทาง (Target)

ssh user@ip

รหัสผ่าน SSH: pass

💡 คำแนะนำ: หากใช้ Windows สามารถใช้โปรแกรม PuTTY หรือเปิด PowerShell แล้วพิมพ์คำสั่งด้านบนได้เลย

🛠️ การแก้ไขปัญหาที่พบบ่อย

1. View สร้างไม่ได้ (Error DEFINER)

อาการ: นำเข้าเสร็จแล้ว แต่โปรแกรมฟ้องว่าหาตารางบางตัวไม่เจอ หรือมี Error สีแดงตอน Import

sed -i 's/DEFINER=[^ ]*//g' hdbms.*-view.sql

ใช้คำสั่งนี้ในโฟลเดอร์ backup เพื่อลบสิทธิ์เจ้าของเดิมออก แล้วนำเข้าใหม่เฉพาะไฟล์ View

2. รูปภาพไม่ขึ้น (Not found pdf)

อาการ: Web App เปิดได้ แต่รูป Scan ไม่แสดง

สาเหตุ:

  • max_allowed_packet ต่ำเกินไป (ต้องปรับเป็น 1G)
  • sql_mode เข้มงวดเกินไป (ต้องปรับเป็นค่าว่าง)