ãã·ãã¹ãã£ãã¯ã¢ãŒãã§ã·ã£ãŒãããŒãã«ããããŒã¿ãããŒãžããã³ç§»è¡ãã
ãã®ããã¥ã¡ã³ãã§ã¯ããã·ãã¹ãã£ãã¯ã¢ãŒãïŒããã©ã«ãã¢ãŒãïŒã§ããŒã¿ç§»è¡ïŒDMïŒã«ãã£ãŠæäŸãããã·ã£ãŒãã£ã³ã°ãµããŒãæ©èœã玹ä»ããŸãããã®æ©èœã䜿çšãããšãã¢ããã¹ããªãŒã ã®MySQLãŸãã¯MariaDBã€ã³ã¹ã¿ã³ã¹ã®åãããŒãã«ã¹ããŒããæã€ããŒãã«ã®ããŒã¿ããããŠã³ã¹ããªãŒã ã®TiDBã®1ã€ã®åãããŒãã«ã«ããŒãžããŠç§»è¡ã§ããŸãã
å¶é
DMã«ã¯ããã·ãã¹ãã£ãã¯ã¢ãŒãã§ã®æ¬¡ã®ã·ã£ãŒãã£ã³ã°DDL䜿çšå¶éããããŸãã
- è«çã·ã£ãŒãã£ã³ã°ã°ã«ãŒãïŒ1ã€ã®åãããŠã³ã¹ããªãŒã ããŒãã«ã«ããŒãžããã³ç§»è¡ããå¿ èŠããããã¹ãŠã®ã·ã£ãŒãããŒãã«ã§æ§æãããïŒã®å Žåãç§»è¡ãå®è¡ããããã«ã·ã£ãŒãããŒãã«ã®ãœãŒã¹ãæ£ç¢ºã«å«ã1ã€ã®ã¿ã¹ã¯ã䜿çšããããã«å¶éãããŸãã
- è«çã·ã£ãŒãã£ã³ã°ã°ã«ãŒãã§ã¯ããã¹ãŠã®ã¢ããã¹ããªãŒã ã·ã£ãŒãã£ã³ã°ããŒãã«ã§åãDDLã¹ããŒãã¡ã³ããåãé åºã§å®è¡ããå¿
èŠãããïŒã¹ããŒãåãšããŒãã«åã¯ç°ãªãå ŽåããããŸãïŒãçŸåšã®DDLæäœãå®å
šã«è¡ãããªãéãæ¬¡ã®DDLã¹ããŒãã¡ã³ããå®è¡ã§ããŸãããçµäºããã
- ããšãã°ã
column B
ã远å ããåã«column A
ããtable_1
ã远å ããå Žåãcolumn A
ã远å ããåã«column B
ããtable_2
ã远å ããããšã¯ã§ããŸããã DDLã¹ããŒãã¡ã³ããå¥ã®é åºã§å®è¡ããããšã¯ãµããŒããããŠããŸããã
- ããšãã°ã
- ã·ã£ãŒãã£ã³ã°ã°ã«ãŒãã§ã¯ã察å¿ããDDLã¹ããŒãã¡ã³ãããã¹ãŠã®ã¢ããã¹ããªãŒã ã·ã£ãŒãããŒãã«ã§å®è¡ããå¿
èŠããããŸãã
- ããšãã°ã1ã«å¯Ÿå¿ãã
DM-worker-2
ã€ä»¥äžã®ã¢ããã¹ããªãŒã ã·ã£ãŒãããŒãã«ã§DDLã¹ããŒãã¡ã³ããå®è¡ãããªãå ŽåãDDLã¹ããŒãã¡ã³ããå®è¡ããä»ã®DMã¯ãŒã«ãŒã¯ãç§»è¡ã¿ã¹ã¯ãäžæåæ¢ããDM-worker-2
ãã¢ããã¹ããªãŒã DDLã¹ããŒãã¡ã³ããåä¿¡ããã®ãåŸ ã¡ãŸãã
- ããšãã°ã1ã«å¯Ÿå¿ãã
- ã·ã£ãŒãã£ã³ã°ã°ã«ãŒãã®ç§»è¡ã¿ã¹ã¯ã¯
DROP DATABASE
ããµããŒãããŠããŸãDROP TABLE
ã- DM-workerã®åæãŠãããã¯ãã¢ããã¹ããªãŒã ã·ã£ãŒãããŒãã«ã®
DROP DATABASE
ã¹ããŒãã¡ã³ããèªåçã«ç¡èŠãDROP TABLE
ã
- DM-workerã®åæãŠãããã¯ãã¢ããã¹ããªãŒã ã·ã£ãŒãããŒãã«ã®
- ã·ã£ãŒãã£ã³ã°ã°ã«ãŒãã®ç§»è¡ã¿ã¹ã¯ã¯
TRUNCATE TABLE
ããµããŒãããŠããŸããã- DM-workerã®åæãŠãããã¯ãã¢ããã¹ããªãŒã ã·ã£ãŒãããŒãã«ã®
TRUNCATE TABLE
ã¹ããŒãã¡ã³ããèªåçã«ç¡èŠããŸãã
- DM-workerã®åæãŠãããã¯ãã¢ããã¹ããªãŒã ã·ã£ãŒãããŒãã«ã®
- ã·ã£ãŒãã£ã³ã°ã°ã«ãŒãç§»è¡ã¿ã¹ã¯ã¯
RENAME TABLE
ããµããŒãããŸãããæ¬¡ã®å¶éããããŸãïŒãªã³ã©ã€ã³DDLã¯å¥ã®ãœãªã¥ãŒã·ã§ã³ã§ãµããŒããããŠããŸãïŒã- ããŒãã«ã®ååã倿Žã§ããã®ã¯ãä»ã®ããŒãã«ã§äœ¿çšãããŠããªãæ°ããååã®ã¿ã§ãã
- 1ã€ã®
RENAME TABLE
ã¹ããŒãã¡ã³ãã«ã¯ã1ã€ã®RENAME
æäœã®ã¿ãå«ããããšãã§ããŸãã
- ã·ã£ãŒãã£ã³ã°ã°ã«ãŒãã®ç§»è¡ã¿ã¹ã¯ã§ã¯ãåDDLã¹ããŒãã¡ã³ãã«1ã€ã®ããŒãã«ã®ã¿ã«å¯Ÿããæäœãå«ãŸããŠããå¿ èŠããããŸãã
- åã·ã£ãŒãããŒãã«ã®ããŒãã«ã¹ããŒãã¯ãã€ã³ã¯ãªã¡ã³ã¿ã«ã¬ããªã±ãŒã·ã§ã³ã¿ã¹ã¯ã®éå§ç¹ã§åãã§ããå¿ èŠããããŸããããã«ãããç°ãªãã·ã£ãŒãããŒãã«ã®DMLã¹ããŒãã¡ã³ãããæç¢ºãªããŒãã«ã¹ããŒããšãããã«ç¶ãã·ã£ãŒãã£ã³ã°DDLã䜿çšããŠããŠã³ã¹ããªãŒã ã«ç§»è¡ã§ããããã«ãªããŸããã¹ããŒãã¡ã³ãã¯æ£ããç §åããã³ç§»è¡ã§ããŸãã
- ããŒãã«ã«ãŒãã£ã³ã°ã®ã«ãŒã«ã倿Žããå¿
èŠãããå Žåã¯ããã¹ãŠã®ã·ã£ãŒãã£ã³ã°DDLã¹ããŒãã¡ã³ãã®ç§»è¡ãå®äºããã®ãåŸ
ã€å¿
èŠããããŸãã
- ã·ã£ãŒãã£ã³ã°DDLã¹ããŒãã¡ã³ãã®ç§»è¡äžã«ã
dmctl
ã䜿çšããŠrouter-rules
ã倿Žãããšããšã©ãŒãå ±åãããŸãã
- ã·ã£ãŒãã£ã³ã°DDLã¹ããŒãã¡ã³ãã®ç§»è¡äžã«ã
- DDLã¹ããŒãã¡ã³ããå®è¡ãããŠããã·ã£ãŒãã£ã³ã°ã°ã«ãŒãã«æ°ããããŒãã«ã
CREATE
远å ããå¿ èŠãããå Žåã¯ãããŒãã«ã¹ããŒããæ°ãã倿ŽãããããŒãã«ã¹ããŒããšåãã§ããããšã確èªããå¿ èŠããããŸãã- ããšãã°ãå
ã®
table_1
ãštable_2
ã®äž¡æ¹ã«æåã¯2ã€ã®åïŒaãbïŒããããã·ã£ãŒãã£ã³ã°DDLæäœåŸã«3ã€ã®åïŒaãbãcïŒããããããç§»è¡åŸãæ°ããäœæãããããŒãã«ã«ã3ã€ã®åïŒ aãbãcïŒã
- ããšãã°ãå
ã®
- DDLã¹ããŒãã¡ã³ããåä¿¡ããDMã¯ãŒã«ãŒã¯ãä»ã®DMã¯ãŒã«ãŒãDDLã¹ããŒãã¡ã³ããåä¿¡ããã®ãåŸ ã€ããã«ã¿ã¹ã¯ãäžæåæ¢ãããããããŒã¿ç§»è¡ã®é å»¶ãå¢å ããŸãã
ããã¯ã°ã©ãŠã³ã
çŸåšãDMã¯ROW
圢åŒã®binlogã䜿çšããŠç§»è¡ã¿ã¹ã¯ãå®è¡ããŸãã binlogã«ã¯ãããŒãã«ã¹ããŒãæ
å ±ã¯å«ãŸããŠããŸããã ROW
ã®binlogã䜿çšããŠããŒã¿ãç§»è¡ããå Žåãè€æ°ã®ã¢ããã¹ããªãŒã ããŒãã«ãåãããŠã³ã¹ããªãŒã ããŒãã«ã«ç§»è¡ããŠããªãå ŽåãããŠã³ã¹ããªãŒã ããŒãã«ã®ããŒãã«ã¹ããŒããæŽæ°ã§ãã1ã€ã®ã¢ããã¹ããªãŒã ããŒãã«ã®DDLæäœã®ã¿ãååšããŸãã ROW
ã®binlogã¯ãèªå·±èšè¿°ã®æ§è³ªãæã£ãŠãããšèŠãªãããšãã§ããŸããç§»è¡ããã»ã¹äžã«ãDMLã¹ããŒãã¡ã³ãã¯ãåã®å€ãšããŠã³ã¹ããªãŒã ã®ããŒãã«ã¹ããŒãã«å¿ããŠäœæã§ããŸãã
ãã ããã·ã£ãŒãã£ã³ã°ãããããŒãã«ãããŒãžããã³ç§»è¡ããããã»ã¹ã§ãã¢ããã¹ããªãŒã ããŒãã«ã§DDLã¹ããŒãã¡ã³ããå®è¡ããŠããŒãã«ã¹ããŒãã倿Žããå Žåã¯ãçæãããDMLã¹ããŒãã¡ã³ãéã®äžæŽåãåé¿ããããã«ã远å ã®æäœãå®è¡ããŠDDLã¹ããŒãã¡ã³ããç§»è¡ããå¿ èŠããããŸããåã®å€ãšå®éã®ããŠã³ã¹ããªãŒã ããŒãã«ã¹ããŒãã«ãã£ãŠã
ç°¡åãªäŸã次ã«ç€ºããŸãã
äžèšã®äŸã§ã¯ãããŒãžããã»ã¹ãç°¡ç¥åãããŠãããã¢ããã¹ããªãŒã ã«ã¯2ã€ã®MySQLã€ã³ã¹ã¿ã³ã¹ã®ã¿ãååšããåã€ã³ã¹ã¿ã³ã¹ã«ã¯1ã€ã®ããŒãã«ãããããŸãããç§»è¡ãéå§ããããšã2ã€ã®ã·ã£ãŒãã£ã³ã°ãããããŒãã«ã®ããŒãã«ã¹ããŒãããŒãžã§ã³ã¯schema V1
ãšããŠããŒã¯ãããDDLã¹ããŒãã¡ã³ãã®å®è¡åŸã®ããŒãã«ã¹ããŒãããŒãžã§ã³ã¯schema V2
ãšããŠããŒã¯ãããŸãã
ããã§ãç§»è¡ããã»ã¹ã§ã2ã€ã®ã¢ããã¹ããªãŒã ã·ã£ãŒãããŒãã«ããåä¿¡ããbinlogããŒã¿ã®æç³»åãæ¬¡ã®ããã«ãªã£ãŠãããšä»®å®ããŸãã
- ç§»è¡ãéå§ããããšãDM-workerã®åæãŠãããã¯ã2ã€ã®ã·ã£ãŒãã£ã³ã°ãããããŒãã«ãã
schema V1
ã®DMLã€ãã³ããåãåããŸãã t1
ã§ãã€ã³ã¹ã¿ã³ã¹1ããã®ã·ã£ãŒãã£ã³ã°DDLã€ãã³ããåä¿¡ãããŸããt2
以éãåæãŠãããã¯ã€ã³ã¹ã¿ã³ã¹1ããschema V2
ã®DMLã€ãã³ããåä¿¡ããŸãããã ããã€ã³ã¹ã¿ã³ã¹2ããã¯ãschema V1
ã®DMLã€ãã³ããåŒãç¶ãåä¿¡ããŸããt3
ã§ãã€ã³ã¹ã¿ã³ã¹2ããã®ã·ã£ãŒãã£ã³ã°DDLã€ãã³ããåä¿¡ãããŸããt4
以éãåæãŠãããã¯ã€ã³ã¹ã¿ã³ã¹2ãããschema V2
ã®DMLã€ãã³ããåä¿¡ããŸãã
ã·ã£ãŒãããŒãã«ã®DDLã¹ããŒãã¡ã³ãã¯ç§»è¡ããã»ã¹äžã«åŠçãããªããšæ³å®ããŸããã€ã³ã¹ã¿ã³ã¹1ã®DDLã¹ããŒãã¡ã³ããããŠã³ã¹ããªãŒã ã«ç§»è¡ãããåŸãããŠã³ã¹ããªãŒã ããŒãã«ã¹ããŒããschema V2
ã«å€æŽãããŸãããã ããããšãã°2ã®å ŽåãDM-workerã®åæãŠãããã¯ãŸã t2
ããt3
ãŸã§ã®schema V1
ã®DMLã€ãã³ããåä¿¡ããŠããŸãããããã£ãŠã schema V1
ã®DMLã¹ããŒãã¡ã³ããããŠã³ã¹ããªãŒã ã«ãã€ã°ã¬ãŒã·ã§ã³ããããšãDMLã¹ããŒãã¡ã³ããšããŒãã«ã»ã¹ããŒãã®éã®äžæŽåããšã©ãŒãåŒãèµ·ãããããŒã¿ãæ£åžžã«ãã€ã°ã¬ãŒã·ã§ã³ã§ããªãå¯èœæ§ããããŸãã
åå
ãã®ã»ã¯ã·ã§ã³ã§ã¯ããã·ãã¹ãã£ãã¯ã¢ãŒãã§ã®äžèšã®äŸã«åºã¥ããŠãã·ã£ãŒãã£ã³ã°ãããããŒãã«ãããŒãžããããã»ã¹ã§DMãDDLã¹ããŒãã¡ã³ããç§»è¡ããæ¹æ³ã瀺ããŸãã
ãã®äŸã§ã¯ã DM-worker-1
ã¯MySQLã€ã³ã¹ã¿ã³ã¹1ããããŒã¿ãç§»è¡ãã DM-worker-2
ã¯MySQLã€ã³ã¹ã¿ã³ã¹2ããããŒã¿ãç§»è¡ããŸãDM-master
ã¯è€æ°ã®DMã¯ãŒã«ãŒéã®DDLç§»è¡ã調æŽããŸãã DDLã¹ããŒãã¡ã³ããåä¿¡ããDM-worker-1
ããéå§ããŠãDDLç§»è¡ããã»ã¹ã¯æ¬¡ã®ããã«ç°¡ç¥åãããŸãã
DM-worker-1
ã¯MySQLã€ã³ã¹ã¿ã³ã¹1ããt1
ã§DDLã¹ããŒãã¡ã³ããåä¿¡ãã察å¿ããDDLããã³DMLã¹ããŒãã¡ã³ãã®ããŒã¿ç§»è¡ãäžæåæ¢ããDDLæ å ±ãDM-master
ã«éä¿¡ããŸããDM-master
ã¯ãåä¿¡ããDDLæ å ±ã«åºã¥ããŠãã®DDLã¹ããŒãã¡ã³ãã®ç§»è¡ã調æŽããå¿ èŠããããšå€æãããã®DDLã¹ããŒãã¡ã³ãã®ããã¯ãäœæããDDLããã¯æ å ±ãDM-worker-1
ã«éãè¿ããåæã«DM-worker-1
ããã®ããã¯ã®ææè ãšããŠããŒã¯ããŸããDM-worker-2
ã¯ãMySQLã€ã³ã¹ã¿ã³ã¹2ããt3
ã§DDLã¹ããŒãã¡ã³ããåä¿¡ãããŸã§DMLã¹ããŒãã¡ã³ãã®ç§»è¡ãç¶è¡ãããã®DDLã¹ããŒãã¡ã³ãã®ããŒã¿ç§»è¡ãäžæåæ¢ããDDLæ å ±ãDM-master
ã«éä¿¡ããŸããDM-master
ã¯ãåä¿¡ããDDLæ å ±ã«åºã¥ããŠããã®DDLã¹ããŒãã¡ã³ãã®ããã¯ããã§ã«ååšããŠãããšå€æããããã¯æ å ±ãDM-worker-2
ã«çŽæ¥éä¿¡ããŸãã- ã¿ã¹ã¯éå§æã®æ§ææ
å ±ãã¢ããã¹ããªãŒã MySQLã€ã³ã¹ã¿ã³ã¹ã®ã·ã£ãŒãããŒãã«æ
å ±ãããã³ãããã€ã¡ã³ãããããžæ
å ±ã«åºã¥ããŠã
DM-master
ã¯ãããŒãžãããã¹ãŠã®ã¢ããã¹ããªãŒã ã·ã£ãŒãããŒãã«ã®ãã®DDLã¹ããŒãã¡ã³ããåä¿¡ãããšå€æãããã®DDLã¹ããŒãã¡ã³ããããŠã³ã¹ããªãŒã ã«ç§»è¡ããããã®DDLããã¯ïŒDM-worker-1
ïŒã DM-worker-1
ã¯ãã¹ããã2ã§åä¿¡ããDDLããã¯æ å ±ã«åºã¥ããŠDDLã¹ããŒãã¡ã³ãå®è¡èŠæ±ãæ€èšŒãããã®DDLã¹ããŒãã¡ã³ããããŠã³ã¹ããªãŒã ã«ç§»è¡ããŠãçµæãDM-master
ã«éä¿¡ããŸãããã®æäœãæåãããšãDM-worker-1
ã¯åŸç¶ã®ïŒt2
ã®binlogããéå§ããŠïŒDMLã¹ããŒãã¡ã³ãã®ç§»è¡ãç¶è¡ããŸããDM-master
ã¯ãDDLãæ£åžžã«å®è¡ããããšããããã¯ææè ããã®å¿çãåä¿¡ããDDLããã¯ãåŸ æ©ããŠããä»ã®ãã¹ãŠã®DMã¯ãŒã«ãŒïŒDM-worker-2
ïŒã«ããã®DDLã¹ããŒãã¡ã³ããç¡èŠããŠãåŸç¶ã®ïŒbinlogããéå§ããŠïŒç§»è¡ãç¶è¡ããããã«èŠæ±ããŸããt4
ïŒDMLã¹ããŒãã¡ã³ãã
è€æ°ã®DMã¯ãŒã«ãŒéã§ã®ã·ã£ãŒãã£ã³ã°DDLç§»è¡ãåŠçããDMã®ç¹æ§ã¯ã次ã®ããã«çµè«ä»ããããšãã§ããŸãã
- ã¿ã¹ã¯æ§æãšDMã¯ã©ã¹ã¿å±éããããžãŒæ
å ±ã«åºã¥ããŠãè«çã·ã£ãŒãã£ã³ã°ã»ã°ã«ãŒãã
DM-master
ã«çµã¿èŸŒãŸããDDLç§»è¡ã調æŽããŸããã°ã«ãŒãã¡ã³ããŒã¯ãç§»è¡ã¿ã¹ã¯ããåå²ãããåãµãã¿ã¹ã¯ãåŠçããDMã¯ãŒã«ãŒã§ãïŒã - binlogã€ãã³ãããDDLã¹ããŒãã¡ã³ããåä¿¡ããåŸãåDMã¯ãŒã«ãŒã¯DDLæ
å ±ã
DM-master
ã«éä¿¡ããŸãã DM-master
ã¯ãåDMã¯ãŒã«ãŒããåä¿¡ããDDLæ å ±ãšã·ã£ãŒãã£ã³ã°ã°ã«ãŒãæ å ±ã«åºã¥ããŠãDDLããã¯ãäœæãŸãã¯æŽæ°ããŸãã- ã·ã£ãŒãã£ã³ã°ã°ã«ãŒãã®ãã¹ãŠã®ã¡ã³ããŒãåãç¹å®ã®DDLã¹ããŒãã¡ã³ããåãåã£ãå Žåãããã¯ãã¢ããã¹ããªãŒã ã·ã£ãŒãããŒãã«ã§ã®DDLå®è¡åã®ãã¹ãŠã®DMLã¹ããŒãã¡ã³ããå®å šã«ç§»è¡ããããã®DDLã¹ããŒãã¡ã³ããå®è¡ã§ããããšã瀺ããŸãããã®åŸãDMã¯åŸç¶ã®DMLã¹ããŒãã¡ã³ãã®ç§»è¡ãç¶è¡ã§ããŸãã
- ããŒãã«ã«ãŒã¿ãŒã«ãã£ãŠå€æãããåŸãã¢ããã¹ããªãŒã ã·ã£ãŒãããŒãã«ã®DDLã¹ããŒãã¡ã³ãã¯ãããŠã³ã¹ããªãŒã ã§å®è¡ãããDDLã¹ããŒãã¡ã³ããšäžèŽããŠããå¿ èŠããããŸãããããã£ãŠããã®DDLã¹ããŒãã¡ã³ãã¯DDLææè ã1åã ãå®è¡ããå¿ èŠããããä»ã®ãã¹ãŠã®DMã¯ãŒã«ãŒã¯ãã®DDLã¹ããŒãã¡ã³ããç¡èŠã§ããŸãã
äžèšã®äŸã§ã¯ãåDMã¯ãŒã«ãŒã«å¯Ÿå¿ããã¢ããã¹ããªãŒã ã®MySQLã€ã³ã¹ã¿ã³ã¹ã«ããŒãžããå¿ èŠãããã·ã£ãŒãããŒãã«ã¯1ã€ã ãã§ãããã ããå®éã®ã·ããªãªã§ã¯ãè€æ°ã®ã·ã£ãŒãã¹ããŒãã«è€æ°ã®ã·ã£ãŒãããŒãã«ãããã1ã€ã®MySQLã€ã³ã¹ã¿ã³ã¹ã«ããŒãžãããå ŽåããããŸãããããŠããããçºçãããšãã·ã£ãŒãã£ã³ã°DDLç§»è¡ã®èª¿æŽãããè€éã«ãªããŸãã
1ã€ã®MySQLã€ã³ã¹ã¿ã³ã¹ã«ããŒãžããã2ã€ã®ã·ã£ãŒãããŒãã«ãã€ãŸãtable_1
ãštable_2
ããããšä»®å®ããŸãã
ããŒã¿ã¯åãMySQLã€ã³ã¹ã¿ã³ã¹ããååŸãããããããã¹ãŠã®ããŒã¿ã¯åãbinlogã¹ããªãŒã ããååŸãããŸãããã®å Žåãæç³»åã¯æ¬¡ã®ããã«ãªããŸãã
- DM-workerã®åæãŠãããã¯ãç§»è¡ã®éå§æã«äž¡æ¹ã®ã·ã£ãŒãã£ã³ã°ãããããŒãã«ãã
schema V1
ã®DMLã¹ããŒãã¡ã³ããåãåããŸãã t1
ã§ãDM-workerã®åæãŠãããã¯table_1
ã®DDLã¹ããŒãã¡ã³ããåãåããŸããt2
ããt3
ãŸã§ãåä¿¡ããããŒã¿ã«ã¯ãtable_1
ããschema V2
ã®DMLã¹ããŒãã¡ã³ããštable_2
ããschema V1
ã®DMLã¹ããŒãã¡ã³ããå«ãŸããŸããt3
ã§ãDM-workerã®åæãŠãããã¯table_2
ã®DDLã¹ããŒãã¡ã³ããåãåããŸããt4
以éãDM-workerã®åæãŠãããã¯äž¡æ¹ã®ããŒãã«ããschema V2
ã®DMLã¹ããŒãã¡ã³ããåãåããŸãã
ç¹ã«ããŒã¿ç§»è¡äžã«DDLã¹ããŒãã¡ã³ããåŠçãããªãå Žåã table_1
ã®DDLã¹ããŒãã¡ã³ããããŠã³ã¹ããªãŒã ã«ç§»è¡ãããããŠã³ã¹ããªãŒã ããŒãã«ã¹ããŒãã倿Žããããšã table_2
ããschema V1
ã®DMLã¹ããŒãã¡ã³ãã¯æ£åžžã«ç§»è¡ã§ããŸããããããã£ãŠãåäžã®DMã¯ãŒã«ãŒå
ã«ã DM-master
å
ãšåæ§ã®è«çã·ã£ãŒãã£ã³ã°ã°ã«ãŒããäœæãããŸãããã ãããã®ã°ã«ãŒãã®ã¡ã³ããŒã¯ãåãã¢ããã¹ããªãŒã MySQLã€ã³ã¹ã¿ã³ã¹å
ã®ç°ãªãã·ã£ãŒãã£ã³ã°ããŒãã«ã§ãã
ãã ããDMã¯ãŒã«ãŒãã·ã£ãŒãã£ã³ã°ã°ã«ãŒãã®ç§»è¡ãããèªäœã®äžã§èª¿æŽããå Žåã DM-master
ã«ãã£ãŠå®è¡ããããã®ãšå®å
šã«åãã§ã¯ãããŸããããã®çç±ã¯æ¬¡ã®ãšããã§ãã
- DMã¯ãŒã«ãŒã
table_1
ã®DDLã¹ããŒãã¡ã³ããåä¿¡ãããšãç§»è¡ãäžæåæ¢ããããšã¯ã§ãããåŸç¶ã®table_2
ã®DDLã¹ããŒãã¡ã³ããååŸããããã«binlogã®è§£æãç¶è¡ããå¿ èŠããããŸããããã¯ãt2
ããt3
ã®éã§è§£æãç¶ç¶ããå¿ èŠãããããšãæå³ããŸãã t2
ããt3
ãŸã§ã®binlogè§£æããã»ã¹äžãã·ã£ãŒãã£ã³ã°DDLã¹ããŒãã¡ã³ããç§»è¡ãããŠæ£åžžã«å®è¡ããããŸã§ãtable_1
ããschema V2
ã®DMLã¹ããŒãã¡ã³ããããŠã³ã¹ããªãŒã ã«ç§»è¡ããããšã¯ã§ããŸããã
DMã§ã¯ãDMã¯ãŒã«ãŒå ã§DDLã¹ããŒãã¡ã³ããã·ã£ãŒãã£ã³ã°ããåçŽåãããç§»è¡ããã»ã¹ã¯æ¬¡ã®ãšããã§ãã
table_1
att1
ã®DDLã¹ããŒãã¡ã³ããåä¿¡ãããšãDMã¯ãŒã«ãŒã¯DDLæ å ±ãšbinlogã®çŸåšã®äœçœ®ãèšé²ããŸãã- DM-workerã¯ã
t2
ããt3
ã®éã§binlogã®è§£æãç¶è¡ããŸãã - DM-workerã¯ã
table_1
ã«å±ããschema V2
ã¹ããŒãã®DMLã¹ããŒãã¡ã³ããç¡èŠããtable_2
ã«å±ããschema V1
ã¹ããŒãã®DMLã¹ããŒãã¡ã³ããããŠã³ã¹ããªãŒã ã«ç§»è¡ããŸãã table_2
att3
ã®DDLã¹ããŒãã¡ã³ããåä¿¡ãããšãDMã¯ãŒã«ãŒã¯DDLæ å ±ãšbinlogã®çŸåšã®äœçœ®ãèšé²ããŸãã- DMã¯ãŒã«ãŒã¯ãç§»è¡ã¿ã¹ã¯ã®æ§æãšã¢ããã¹ããªãŒã ã¹ããŒãããã³ããŒãã«ã®æ å ±ã«åºã¥ããŠãMySQLã€ã³ã¹ã¿ã³ã¹å ã®ãã¹ãŠã®ã·ã£ãŒãã£ã³ã°ããŒãã«ã®DDLã¹ããŒãã¡ã³ããåä¿¡ããããšå€æããããããããŠã³ã¹ããªãŒã ã«ç§»è¡ããŠããŠã³ã¹ããªãŒã ããŒãã«ã¹ããŒãã倿ŽããŸãã
- DM-workerã¯ãæ°ããbinlogã¹ããªãŒã ãè§£æããéå§ç¹ããã¹ããã1ã§ä¿åãããäœçœ®ã«èšå®ããŸãã
- DM-workerã¯ãbinlogã®è§£æã
t2
ããt3
ã®éã§åéããŸãã - DM-workerã¯ã
table_1
ã«å±ããschema V2
ã¹ããŒãã®DMLã¹ããŒãã¡ã³ããããŠã³ã¹ããªãŒã ã«ç§»è¡ããtable_2
ã«å±ããschema V1
ã¹ããŒãã®DMLã¹ããŒãã¡ã³ããç¡èŠããŸãã - ã¹ããã4ã§ä¿åãããbinlogäœçœ®ãè§£æããåŸãDMã¯ãŒã«ãŒã¯ãã¹ããã3ã§ç¡èŠããããã¹ãŠã®DMLã¹ããŒãã¡ã³ããåã³ããŠã³ã¹ããªãŒã ã«ãã€ã°ã¬ãŒã·ã§ã³ããããšå€æããŸãã
- DM-workerã¯ãbinlogã®äœçœ®
t4
ããç§»è¡ãåéããŸãã
äžèšã®åæãããDMã¯ãã·ã£ãŒãã£ã³ã°DDLã®ç§»è¡ãåŠçããéã®èª¿æŽãšå¶åŸ¡ã«ãäž»ã«2ã¬ãã«ã®ã·ã£ãŒãã£ã³ã°ã°ã«ãŒãã䜿çšããŠãããšçµè«ä»ããããšãã§ããŸããç°¡ç¥åãããããã»ã¹ã¯æ¬¡ã®ãšããã§ãã
- åDMã¯ãŒã«ãŒã¯ãã¢ããã¹ããªãŒã MySQLã€ã³ã¹ã¿ã³ã¹å ã®è€æ°ã®ã·ã£ãŒãã£ã³ã°ããŒãã«ã§æ§æããã察å¿ããã·ã£ãŒãã£ã³ã°ã°ã«ãŒãã®DDLã¹ããŒãã¡ã³ãã®ç§»è¡ãåå¥ã«èª¿æŽããŸãã
- DM-workerã¯ããã¹ãŠã®ã·ã£ãŒãã£ã³ã°ãããããŒãã«ã®DDLã¹ããŒãã¡ã³ããåä¿¡ããåŸãDDLæ
å ±ã
DM-master
ã«éä¿¡ããŸãã DM-master
ã¯ãåä¿¡ããDDLæ å ±ã«åºã¥ããŠãDMã¯ãŒã«ãŒã§æ§æãããã·ã£ãŒãã£ã³ã°ã°ã«ãŒãã®DDLç§»è¡ã調æŽããŸãã- ãã¹ãŠã®DMã¯ãŒã«ãŒããDDLæ
å ±ãåä¿¡ããåŸã
DM-master
ã¯DDLããã¯ææè ïŒç¹å®ã®DMã¯ãŒã«ãŒïŒã«DDLã¹ããŒãã¡ã³ãã®å®è¡ãèŠæ±ããŸãã - DDLããã¯ã®ææè
ã¯DDLã¹ããŒãã¡ã³ããå®è¡ããçµæã
DM-master
ã«è¿ããŸããæ¬¡ã«ãææè ã¯ãDDLç§»è¡ã®å éšèª¿æŽäžã«ã以åã«ç¡èŠãããDMLã¹ããŒãã¡ã³ãã®ç§»è¡ãåéããŸãã DM-master
ã¯ãææè ãDDLã¹ããŒãã¡ã³ããæ£åžžã«å®è¡ããããšã確èªããåŸãä»ã®ãã¹ãŠã®DMã¯ãŒã«ãŒã«ç§»è¡ãç¶è¡ããããã«èŠæ±ããŸãã- ä»ã®ãã¹ãŠã®DMã¯ãŒã«ãŒã¯ãDDLç§»è¡ã®å éšèª¿æŽäžã«ã以åã«ç¡èŠãããDMLã¹ããŒãã¡ã³ãã®ç§»è¡ãåå¥ã«åéããŸãã
- ç¡èŠãããDMLã¹ããŒãã¡ã³ãã®ç§»è¡ãå床çµäºãããšããã¹ãŠã®DMã¯ãŒã«ãŒã¯éåžžã®ç§»è¡ããã»ã¹ãåéããŸãã