online-schema-changeãéä¿¡ãã¦ãããçãç®ãã¿ã話
å
æ¥è¨äºã«æ¸ããããã«ãç¡åæ¢ã®ALTERæå®è¡ã§ã¯
Percona-Toolkitã®Online-schema-changeãå©ç¨ãã¦ãã¾ãã
無停止でALTERできるPercona-Toolkitのonline-schema-change
ãªã³ã©ã¤ã³ã§ã®ã«ã©ã 追å
ç§ãæ
å½ãã¦ãããµã¼ãã¹ã§ã¯ãALTERæå®è¡æã«ã¬ããªã±ã¼ã·ã§ã³ã®é
延ãåºæ¥ãã ãçºçãããããªãã®ã§ã
以ä¸ã®æ§ãªæé ã§Online-schema-changeãå®è¡ãã¦ãã¾ãã
(1) ã¹ã¬ã¼ãå
¨å°ã§Online-schema-changeã®å®è¡
(2) ãã¹ã¿ã¼ã§Online-schema-changeã®å®è¡ï¼--set-vars="sql_log_bin=0"ã®ãªãã·ã§ã³æå®ï¼
"sql_log_bin=0"ãªãã·ã§ã³ãã¤ãã¦å®è¡ããã¨ãbinlogãåºããã«å®è¡ã§ããã®ã§ã
ãã¹ã¿ã¼ã§å®è¡ãã¦ããã®ã¯ã¨ãªã¯ã¹ã¬ã¼ãã«ã¬ããªã±ã¼ã·ã§ã³ããã¾ããã
ãã®æé ã§INDEXã®è¿½å ãã«ã©ã ã®è¿½å ãªã©ãå®è¡ãã¦ãã¾ããã
äºæ
ã®çºç
ãã¤ãã®ããã«ãã¹ã¬ã¼ãã§online-schema-changeå®è¡å¾ããã¹ã¿ã¼ã§å®è¡ããã¾ããã
ããã¨ãä¸æã«ã¢ã©ã¼ãã¡ã¼ã«ãããã
ã¹ã¬ã¼ãå
¨å°ãã¨ã©ã¼ã§ã¬ããªã±ã¼ã·ã§ã³åæ¢ãã¦ã¾ããã
Last_SQL_Error: Error executing row event: 'Table 'hoge._user_new' doesn't exist' Replicate_Ignore_Server_Ids:
äºæ
ã®æ¦è¦
"sql_log_bin=0"ãªãã·ã§ã³ãæå®ãã¦å®è¡ãããã¹ã¿ã¼DBã§ã®ä½æ¥æã«ã
ãªããããªã¬ã¼ã®ä½æãã¹ã¬ã¼ãã«ã¬ããªã±ã¼ã·ã§ã³ããã¦ã
ã¹ã¬ã¼ãå´ã§åå¨ããªããã¼ãã«ã¸æ´æ°ãèµ°ãããã«ãªãã¨ã©ã¼ã§åæ¢ãã¾ããã
ãããããOnline-Schema-Changeã®ä»çµã¿ã¨ãã¦ã¯ãå æ¥è¨äºã«æ¸ããã¨ãã
online-schema-changeã®ä»çµã¿
http://d.hatena.ne.jp/fat47/20140418/1397811745
1.ã対象ãã¼ãã«ã¨åãæ§é ãããä½æ¥ç¨ãã¼ãã«ãä½æãã
2.ãä½æ¥ç¨ãã¼ãã«ã«å¤æ´ããALTERæãé©ç¨ãã
3.ã3ã¤ããªã¬ã¼ãä½æãã¦ã対象ãã¼ãã«ã¸ã®æ¿å ¥ã»åé¤ã»æ´æ°ãä½æ¥ç¨ãã¼ãã«ã«åæ ãããããã«ãã
4. 対象ãã¼ãã«ããä½æ¥ç¨ãã¼ãã«ã¸ãã¼ã¿ãã³ãã¼ãã¦ãã
5. RENAMEãã¦å¯¾è±¡ãã¼ãã«ã¨ä½æ¥ç¨ãã¼ãã«ãå ¥ãæ¿ãã
6. å ¥ãæ¿ãå¾ã®å¤ããã¼ãã«ã¨ããªã¬ã¼ãåé¤ãã
ãã®ããã«ãªã£ã¦ãã¾ãã
ãã®(3)ã§ã®å¦çããªããã¹ã¬ã¼ãã«ãä¼æ¬ãã¦ã
Last_SQL_Error: Error executing row event: 'Table 'hoge._user_new' doesn't exist' Replicate_Ignore_Server_Ids:
ãã®hoge._user_newãã¼ãã«ã¸ã®æ´æ°ãã¹ã¬ã¼ãã§èµ°ãããã«ãªã£ã¦ãã¾ãã¾ããã
çºçããç°å¢
ãã¼ã¸ã§ã³
DBãã¹ã¿ã¼
OS | CentOS5.4 |
DB | MySQL5.5.24 |
Percona-Toolkit | 2.2.7-1 |
DBã¹ã¬ã¼ã
OS | CentOS6.2 |
DB | MySQL5.5.24 |
Percona-Toolkit | 2.2.7-1 |
çºè¡ããSQL
ALTER TABLE `user` ADD COLUMN fuga int(10) NOT NULL DEFAULT '0' COMMENT 'fugafuga';
対象ãã¼ãã«ã®ãã¼ã¿ä»¶æ°
select count(*) from user; +----------+ | count(*) | +----------+ | 18476032 | +----------+ 1 row in set (9.09 sec)
æ¤è¨¼ç°å¢ã§ãããã試ãã¦ã¿ã
æ¬çªãã¼ã¿ãå
¥ãã¦æ¤è¨¼ç°å¢ã§è©¦ãã¦ã¿ã¾ããã
ã¡ãªã¿ã«ãä»åãã¼ã¿æ°ã®å°ãªãã¹ãã¼ã¸ã³ã°ç°å¢ã§äºåã«è©¦ãã¦ãã¾ãããããã¡ãã®åä½ã§ã¯åé¡ããã¾ããã§ããã
ã¨ã©ã¼åºã¦å¤±æãããã¿ã¼ã³
â DBMã®OSãã¼ã¸ã§ã³ãå
¥ãæ¿ãã
DBMãCentOS6.2ãDBSãCentOS5.4ã«
â MySQLã®ãã¼ã¸ã§ã³ãä¸ãã¦ã¿ã
MySQL5.5.24ãã5.5.34ã«
â Percona-Toolkitã®ãã¼ã¸ã§ã³ä¸ãã¦ã¿ã
ä»ãµã¼ãã¹ã§åä½å®ç¸¾ã®ãã2.2.6ã«
â ã«ã©ã 追å ã§ã¯ãªãã¦INDEX追å ã«ãã¦å®è¡ãã¦ã¿ã
ã¨ã©ã¼åºãã«å®è¡å®äºãããã¿ã¼ã³
â å¥ã®ãã¼ãã«ã«ã«ã©ã 追å ãã¦ã¿ã
â ä»ãµã¼ãã¹ã§å®è¡æåãããã¼ãã«ï¼ä»åã®ãã¼ãã«ãããã¼ã¿é2åï¼ã§ç¢ºèªãã¦ã¿ãã
ä»ãµã¼ãã¹ã®ãã¼ãã«ãdumpãã¦æ¤è¨¼ç°å¢ã«æ¿å
¥ãã¦å®è¡
ã¨ããããçµæ
ä¸é¨ã®æ¡ä»¶ãæºãããã¼ãã«ã§ã®ã¿ãã°ãçºçãã
ã§ããä¸é¨ã®æ¡ä»¶ãããããªãâ¦ããªãã ããããã
ä»å¾ã®å¯¾ç
ã¹ã¬ã¼ãå´ã§ä½æ¥ãã¼ãã«ããªãããã¨ã©ã¼ã«ãªã£ã¦ãã¾ãã®ã§ã
ã¹ã¬ã¼ãå®è¡å¾ã«äºåã«ä½æ¥ãã¼ãã«ï¼_ãã¼ãã«å_new)ãä½æãã¦ããã°ãä»®ã«ã¹ã¬ã¼ãå´ã§
ããªã¬ã¼ãä½æããã¦ãã¾ã£ã¦ãã¨ã©ã¼ã§ã¬ããªåæ¢ãããã¨ã¯ãªãã
ãã¹ã¿ã¼ã§å®è¡å®äºå¾ã«ãã¹ã¬ã¼ãã§ä½æããä½æ¥ãã¼ãã«ãDROPããã
æå¾ã«
æãä½æ¥ããã¨ãã¯ãäºåã«æ¬çªã¨åæ§ã®ç°å¢ã§åä½ãã§ãã¯ãããã¨ï¼
æ¬çªã«è¿ããã¼ã¿éãããªãã¨åç¾ããªããã¨ãããï¼
_|ï¿£|âããµã¼ãã¹åæ¢ããã¦ãæ¬å½ã«æ¬å½ã«ç³ã訳ããã¾ããã§ããã