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