Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีติดตามการเปลี่ยนแปลง Database Schema ใน MySQL

สร้างตาราง Version Control เพื่อบันทึก Schema Changes (Migration) ทุกครั้งที่รัน Script

สร้างตาราง Schema Version

mysql> CREATE TABLE SchemaDatabaseMethodDemo (
    -> WhenTime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    -> TheKey VARCHAR(200) NOT NULL,
    -> Version VARCHAR(200),
    -> PRIMARY KEY(TheKey)
    -> ) ENGINE=InnoDB;

บันทึก Version ทุกครั้งที่ Deploy

mysql> INSERT INTO SchemaDatabaseMethodDemo VALUES (NOW(), '1001', 'version 5.6.12');

ผลลัพธ์:

+---------------------+--------+----------------+
| WhenTime            | TheKey | Version        |
+---------------------+--------+----------------+
| 2018-10-29 14:21:47 | 1001   | version 5.6.12 |
+---------------------+--------+----------------+

แนวทางปฏิบัติ (Best Practices)

  1. รัน INSERT นี้ที่ จุดเริ่มต้นหรือสิ้นสุด ของ Migration Script ทุกไฟล์
  2. ใช้ TheKey เป็น Migration ID (เช่น V001__create_users_table)
  3. ควรใช้ Tool จริง เช่น Flyway, Liquibase, gh-ost, pt-online-schema-change แทนการทำเอง
หมายเหตุ: ตารางนี้เป็นแค่ Log แบบ Manual จริงๆ ควรใช้ Migration Tool ที่มี Checksum, Rollback, Lock-free Schema Change