Georgy Rylov ã«ãã 2020 幎åé ã®ã¬ããŒããWAL-G: æ°ããæ©äŒãšã³ãã¥ããã£ã®æ¡å€§ãã®æžãèµ·ãããèªãããšããå§ãããŸãã
ãªãŒãã³ãœãŒã¹ã®ã¡ã³ããã¯ãæé·ããã«ã€ããŠå€ãã®èª²é¡ã«çŽé¢ããŸããããå€ãã®å¿ èŠãªæ©èœãäœæããããå€ãã®åé¡ãä¿®æ£ããããå€ãã®ãã« ãªã¯ãšã¹ãã衚瀺ã§ããããã«ããã«ã¯ã©ãããã°ããã§ãããã? WAL-G (PostgreSQL ã®ããã¯ã¢ãã ããŒã«) ãäŸã«ã倧åŠã§ãªãŒãã³ãœãŒã¹éçºã®ã³ãŒã¹ãç«ã¡äžããããšã§ãããã®åé¡ãã©ã®ããã«è§£æ±ºããããäœãéæãããããããŠæ¬¡ã«ã©ãã«é²ããã«ã€ããŠèª¬æããŸãã
çããããŸãããã«ã¡ã¯ïŒç§ã¯ãšã«ããªã³ãã«ã¯åºèº«ã® Yandex éçºè ã§ãããããŠä»æ¥ã¯WAL-Gã«ã€ããŠã話ããŸãã
ã¬ããŒãã®ã¿ã€ãã«ã«ã¯ãããã¯ã¢ããã«é¢ãããã®ãšã¯æžãããŠããŸããã§ããã WAL-Gã£ãŠäœãç¥ã£ãŠã人ããŸããïŒãããšãã¿ããªç¥ã£ãŠãŸããïŒåãããªã人ã¯æãæããŠãã ããããªããŠããšã ãããªãã¯ã¬ããŒããèŠã«æ¥ãã®ã«ããããäœã«ã€ããŠãªã®ãããã£ãŠããŸããã
ä»æ¥äœãèµ·ããããã話ãããŸããããå¶ç¶ã§ãããç§ãã¡ã®ããŒã ã¯ããªãé·ãéããã¯ã¢ãããè¡ã£ãŠããŸãããããã¯ãããŒã¿ãå®å šã確å®ã䟿å©ãã€å¹ççã«ä¿åããæ¹æ³ã«ã€ããŠèª¬æããã·ãªãŒãºã®å¥ã®ã¬ããŒãã§ãã
以åã®ã·ãªãŒãºã§ã¯ãã¢ã³ãã¬ã€ã»ãããã£ã³ãšãŠã©ãžããŒã«ã»ã¬ã¹ã³ãã«ããå€ãã®ã¬ããŒãããããŸãããç§ãã¡ãããããããŸããããããŠãç§ãã¡ã¯äœå¹Žãã®éãWAL-Gã«ã€ããŠè©±ããŠããŸããã
clck.ru/F8ioz â
clck.ru/Ln8Qw â
ãã®ã¬ããŒãã¯æè¡çãªéšåã«é¢ãããã®ã§ãããšããç¹ã§ä»ã®ã¬ããŒããšã¯å°ãç°ãªããŸãããããã§ã¯ã³ãã¥ããã£ã®æé·ã«é¢é£ããŠã©ã®ããã«åé¡ã«ééãããã«ã€ããŠè©±ããŸãããããŠããã®åé¡ã«å¯ŸåŠããã®ã«åœ¹ç«ã€å°ããªã¢ã€ãã¢ãã©ã®ããã«ããŠæãã€ããã®ãã
æ°å¹ŽåãWAL-G 㯠Citus Data ããæäŸãããããªãå°èŠæš¡ãªãããžã§ã¯ãã§ããããããŠç§ãã¡ã¯ããããã åãåã£ãã®ã§ãããããŠããã¯äžäººã®äººéã«ãã£ãŠéçºãããŸããã
ãããŠãWAL-G ã ãã以äžãåããŠããŸããã§ããã
- ã¬ããªã«ããã®ããã¯ã¢ããã
- å¢åããã¯ã¢ããã¯ãããŸããã§ããã
- WAL-Delta ããã¯ã¢ããã¯ãããŸããã§ããã
- ãããŠããŸã 足ããªããã®ããããããããŸããã
ãã®æ°å¹Žéã§ãWAL-G ã¯å€§ããæé·ããŸããã
ãã㊠2020 幎ãŸã§ã«ãäžèšã®ãã¹ãŠããã§ã«å®çŸããŠããŸãããããŠããã«ãçŸåšãããã®ãè¿œå ãããŸããã
- GitHub ã«ã¯ 1 ãè¶ ããã¹ã¿ãŒãä»ããŠããŸãã
- ãã©ãŒã¯150æ¬ã
- ãªãŒãã³PRã¯15件çšåºŠã
- ä»ã«ãå€ãã®è²¢ç®è ãããŸãã
- ãããŠåžžã«åé¡ããªãŒãã³ã«ããŠãã ããããããŠãç§ãã¡ãæåéãæ¯æ¥ããã«è¡ã£ãŠãããã«ã€ããŠäœããããŠãããšããäºå®ã«ãããããããããã¯ããã§ãã
ãããŠãç§ãã¡èªèº«ã Yandex ã®ãããŒãžã ããŒã¿ããŒã¹ ãµãŒãã¹ã«äœãå®è£ ããå¿ èŠããªãå Žåã§ãããã®ãããžã§ã¯ãã«ã¯ãã£ãšæ³šæãæãå¿ èŠããããšããçµè«ã«éããŸããã
ãããŠ2018幎ã®ç§ã®ã©ããã§ãããã¢ã€ãã¢ãç§ãã¡ã®é ã«æµ®ãã³ãŸãããéåžžãããŒã ã«ã¯äººæã足ããªãå Žåã«æ©èœãéçºããããã°ãä¿®æ£ãããããããã®ããã€ãã®æ¹æ³ããããŸããããšãã°ãå¥ã®éçºè ãéã£ãŠã圌ã«ãéãæ¯æãããšãã§ããŸãããããã¯ããã°ããã®éã€ã³ã¿ãŒã³ãåŒãåããŠã圌ã«çµŠæãæ¯æãããšãã§ããŸããããããäŸç¶ãšããŠéåžžã«å€ãã®äººã ã®ã°ã«ãŒããããããã®ãã¡ã®äœäººãã¯ãã§ã«ã³ãŒãã®æžãæ¹ãæ¬åœã«ç¥ã£ãŠããŸããã³ãŒãã®å質ãã©ã®çšåºŠã§ãããã¯å¿ ãããããããŸããã
ç§ãã¡ã¯ãããèããåŠçãéããŠã¿ãããšã«ããŸãããããããåŠçã¯ç§ãã¡ãšäžç·ã«ãã¹ãŠã«åå ããããã§ã¯ãããŸããã圌ãã¯ä»äºã®äžéšã ããè¡ããŸãããããŠãããšãã°ããã¹ããäœæãããã°ãä¿®æ£ããäž»èŠãªæ©èœã«åœ±é¿ãäžããªãæ©èœãå®è£ ããŸããäž»ãªæ©èœã¯ãããã¯ã¢ããã®äœæãšããã¯ã¢ããã®åŸ©å ã§ããããã¯ã¢ããã®äœæãééãããšãããŒã¿ã倱ãããããšã«ãªããŸãããããŠãã¡ããããããæãã§ãã人ã¯ããŸããã誰ãããã¹ãŠãéåžžã«å®å šã§ããããšãæãã§ããŸãããããã£ãŠãåœç¶ã®ããšãªãããèªåã®ã³ãŒããããä¿¡é Œã§ããªãã³ãŒããèš±å¯ããããšã¯æãŸãããããŸãããã€ãŸããéèŠã§ãªãã³ãŒãã¯ãè¿œå ã®ã¯ãŒã«ãŒããåãåããããã®ã§ãã
åŠçPRã¯ã©ã®ãããªæ¡ä»¶ã§èªããããŸããïŒ
- ã³ãŒãããã¹ãã§ã«ããŒããå¿ èŠããããŸãããã¹ãŠã¯ CI ã§è¡ãããå¿ èŠããããŸãã
- ãŸãã2 件ã®ã¬ãã¥ãŒã確èªããŸãã XNUMX ã€ã¯ã¢ã³ãã¬ã€ã»ãããã£ã³ã«ãããã®ã§ããã XNUMX ã€ã¯ç§ã«ãããã®ã§ãã
- ããã«ãããã«ãã£ãŠãµãŒãã¹ãäžæãããªãããšã確èªããããã«ããã®ã³ããããå«ãã¢ã»ã³ããªãåå¥ã«ã¢ããããŒãããŸãããããŠããšã³ãããŒãšã³ãã®ãã¹ãã§äœã倱æããªãããšã確èªããŸãã
ãªãŒãã³ãœãŒã¹ç¹å¥è¬åº§
ãªããããå¿ èŠãªã®ãããããŠãªããããçŽ æŽãããã¢ã€ãã¢ã ãšç§ã«ã¯æããã®ãã«ã€ããŠå°ã説æããŸãã
ç§ãã¡ã«ãšã£ãŠãå©çã¯æçœã§ãã
- äœåãªæãåŸãããŸãã
- ãããŠãã¹ããŒããªã³ãŒããæžãè³¢ãåŠçã®äžããããŒã ã®åè£è ãæ¢ããŠããŸãã
åŠçã«ãšã£ãŠã®ã¡ãªããã¯äœã§ãã?
åŠçã¯å°ãªããšããèªåãæžããã³ãŒãã«å¯ŸããŠééãåãåãã®ã§ã¯ãªããåŠçã®èšé²ã«å¯Ÿããæ瞟ã ããåãåãããããããã¯ããŸãæçœã§ã¯ãªããããããŸããã
ãã®ããšã«ã€ããŠåœŒãã«å°ããŠã¿ãŸããããããŠåœŒãã®èšèã§ã¯æ¬¡ã®ããã«ãªããŸãã
- ãªãŒãã³ãœãŒã¹ã«ãããè²¢ç®è ã®çµéšã
- å±¥æŽæžã«äžè¡å ¥ããŠãã ããã
- èªåèªèº«ã蚌æããŠãYandex ã®é¢æ¥ã«åæ ŒããŠãã ããã
- GSoC ã¡ã³ããŒã«ãªããŸãããã
- ã³ãŒããæžããã人ã®ããã® +1 ç¹å¥ã³ãŒã¹ã
ã³ãŒã¹ãã©ã®ããã«æ§æããããã«ã€ããŠã¯è©±ããŸããã WAL-Gãã¡ã€ã³ãããžã§ã¯ãã ã£ããšããããšã ãã¯èšã£ãŠãããŸãããã®ã³ãŒã¹ã«ã¯ãOdysseyãPostgreSQLãClickHouse ãªã©ã®ãããžã§ã¯ããå«ãŸããŠããŸãã
ãããŠããã®ã³ãŒã¹ã ãã§ãªããåé¡ãåºé¡ãããåæ¥èšŒæžãã³ãŒã¹ã¯ãŒã¯ãé ãããŸããã
ãŠãŒã¶ãŒã«ãšã£ãŠã®ã¡ãªããã¯ã©ãã§ããããïŒ
ããã§ã¯ãæãèå³ã®ããéšåã«ç§»ããŸããããããã§äœã®åœ¹ã«ç«ã€ã®ïŒéèŠãªã®ã¯ãåŠçãã¡ãå€ãã®ãã°ãä¿®æ£ãããšããããšã§ãããããŠãããªããç§ãã¡ã«æ±ããŠãããªã¯ãšã¹ãæ©èœãäœæããŸããã
ãããŠãããªããé·ãéæãã§ãããã®ããããŠãããå®çŸãããã®ã«ã€ããŠã話ãããŸãããã
ããŒãã«ã¹ããŒã¹ã®ãµããŒãã WAL-G ã®ããŒãã«ã¹ããŒã¹ã¯ããããã WAL-G ã®ãªãªãŒã¹ä»¥æ¥æåŸ ãããŠããŸãããWAL-G ã¯ãããŒãã«ã¹ããŒã¹ã䜿çšããããŒã¿ããŒã¹ ããã¯ã¢ããããµããŒããããŠããå¥ã®ããã¯ã¢ãã ããŒã« WAL-E ã®åŸç¶ã§ããããã§ãã
ãããäœãªã®ãããããŠãªããããå¿ èŠãªã®ããç°¡åã«æãåºãããŠãã ãããéåžžããã¹ãŠã® Postgres ããŒã¿ã¯ãããŒã¹ãšåŒã°ãããã¡ã€ã« ã·ã¹ãã äžã® 1 ã€ã®ãã£ã¬ã¯ããªãå æããŸãããã®ãã£ã¬ã¯ããªã«ã¯ãPostgres ã«å¿ èŠãªãã¹ãŠã®ãã¡ã€ã«ãšãµããã£ã¬ã¯ããªããã§ã«å«ãŸããŠããŸãã
ããŒãã«ã¹ããŒã¹ã¯ Postgres ããŒã¿ãå«ããã£ã¬ã¯ããªã§ãããããŒã¹ ãã£ã¬ã¯ããªã®å€éšã«ã¯ãããŸããããã®ã¹ã©ã€ãã¯ãããŒãã«ããã¯ãããŒã¹ ãã£ã¬ã¯ããªã®å€ã«ããããšã瀺ããŠããŸãã
ãã㯠Postgres èªäœã§ã¯ã©ã®ããã«èŠããã§ãããã?ããŒã¹ ãã£ã¬ã¯ããªã«ã¯å¥ã®ãµããã£ã¬ã¯ã㪠pg_tblspc ããããŸãããŸããå®éã«ã¯ããŒã¹ ãã£ã¬ã¯ããªã®å€åŽã«ãã Postgres ããŒã¿ãå«ããã£ã¬ã¯ããªãžã®ã·ã³ããªã㯠ãªã³ã¯ãå«ãŸããŠããŸãã
ããããã¹ãŠã䜿çšãããšããããã®ã³ãã³ãã¯æ¬¡ã®ããã«ãªããŸããã€ãŸããæå®ãããè¡šé åã«è¡šãäœæãããããçŸåšã©ãã«ãããã確èªããŸãããããã¯æåŸã® 2 è¡ã§ãæåŸã® 2 ã€ã®ã³ãã³ããåŒã³åºãããŸãããããŠãäœããã®æ¹æ³ãããããšã¯æããã§ãããããå®éã«ã¯ãããã¯æ¬åœã®ããæ¹ã§ã¯ãããŸãããããã¯ãããŒã¹ ãã£ã¬ã¯ããªããããŒãã«ã¹ããŒã¹ãžã®æ¥é èŸä»ãã®ãã¹ã§ãããããŠãããããå®éã®ããŒã¿ã«ã€ãªããã·ã³ããªãã¯ãªã³ã¯ãšç §åãããŸãã
ç§ãã¡ã®ããŒã ã§ã¯ããããã¹ãŠã䜿çšããŠããããã§ã¯ãããŸããããä»ã®å€ãã® WAL-E ãŠãŒã¶ãŒã䜿çšããŠããŠãWAL-G ã«ç§»è¡ããããšç§ãã¡ã«æžããŠããŸããããããã圌ãã®åŠšããšãªã£ãŠããŸãããããã¯çŸåšãµããŒããããŠããŸãã
ã¹ãã·ã£ã«ã³ãŒã¹ããããããããäžã€ã®ç¹åŸŽã¯ãã£ããã¢ããã§ãããããã Postgres ããã Oracle ããã䜿ã£ãããšããã人ã¯ããã£ããã¢ããã«ã€ããŠç¥ã£ãŠããŸãã
ãããäœã§ãããã«ã€ããŠç°¡åã«èª¬æããŸããç§ãã¡ã®ãµãŒãã¹ã®ã¯ã©ã¹ã¿ãŒ ããããžãŒã¯é垞次ã®ããã«ãªããŸããç§ãã¡ã«ã¯ãã¹ã¿ãŒãããŸããããããå è¡æžã蟌ã¿ãã°ãã¹ããªãŒãã³ã°ããã¬ããªã«ããããŸãããããŠãã¬ããªã«ã¯ãã¹ã¿ãŒã«ãçŸåšã©ã® LSN äžã«ããããäŒããŸãããããŠãããšäžŠè¡ããŠããã°ãã¢ãŒã«ã€ãããããšãã§ããŸãããŸãããã°ã®ã¢ãŒã«ã€ãã«å ããŠãããã¯ã¢ãããã¯ã©ãŠãã«éä¿¡ãããŸãããããŠãå·®åããã¯ã¢ãããéä¿¡ãããŸãã
äœãåé¡ãªã®ã§ãããã?ããªã倧èŠæš¡ãªããŒã¿ããŒã¹ãããå Žåãã¬ããªã«ããã¹ã¿ãŒãããå€§å¹ ã«é ãå§ããããšãå€æããå ŽåããããŸãããããŠåœŒå¥³ã¯ãšãŠãé ããŠããã®ã§ã決ããŠåœŒã«è¿œãã€ãããšã¯ã§ããŸãããéåžžããã®åé¡ã¯äœããã®æ¹æ³ã§è§£æ±ºããå¿ èŠããããŸãã
æãç°¡åãªæ¹æ³ã¯ãã¬ããªã«ãåé€ããŠåã¢ããããŒãããããšã§ããã¬ããªã«ã«è¿œãã€ãããšã¯ãªããåé¡ã«å¯ŸåŠããå¿ èŠãããããã§ãããã ãã10 TB ã®ããŒã¿ããŒã¹ ããã¯ã¢ããå šäœã埩å ããã«ã¯éåžžã«é·ãæéãããããããããã«ã¯ããªãã®æéãããããŸãããããŠããã®ãããªåé¡ãçºçããå Žåã«ã¯ãããããã¹ãŠãã§ããã ãæ©ãè¡ããããšèããŠããŸãããããŠããããŸãã«ãã£ããã¢ããã®ç®çã§ãã
Catchup ã䜿çšãããšããã®æ¹æ³ã§ã¯ã©ãŠãã«ä¿åããããã«ã¿ ããã¯ã¢ããã䜿çšã§ããŸããé ããŠããã¬ããªã«ãçŸåšã©ã® LSN ã«ããããæå®ããããã catchup ã³ãã³ãã§æå®ããŠããã® LSN ãšã¯ã©ã¹ã¿ãŒãçŸåšé 眮ãããŠãã LSN ãšã®éã®å·®åããã¯ã¢ãããäœæããŸãããã®åŸãé ããŠããã¬ããªã«ã«ãã®ããã¯ã¢ããã埩å ããŸãã
ãã®ä»ã®æ ç¹
åŠçãã¡ã¯ãŸããäžåºŠã«ããããã®æ©èœãç§ãã¡ã«ãããããŠãããŸããã Yandex ã§ã¯ Postgres ã ãã§ãªããMySQLãMongoDBãRedisãClickHouse ã䜿çšããŠãããããããæç¹ã§ MySQL ã®ãã€ã³ãã€ã³ã¿ã€ã ãªã«ããªã䜿çšããŠããã¯ã¢ãããäœæã§ããå¿ èŠããããã¢ããããŒãããæ©äŒããããŸãããããããã¯ã©ãŠãã«è»¢éããŸãã
ãããŠãWAL-G ãšåããããªæ¹æ³ã§ãããå®çŸããããšèããŸããããããŠç§ãã¡ã¯å®éšããŠããããã©ã®ããã«èŠãããã確èªããããšã«ããŸããã
ãããŠæåã¯ããã®ããžãã¯ããŸã£ããå ±æããã«ããã©ãŒã¯ã§ã³ãŒããæžããŸããã圌ãã¯ãç§ãã¡ãããçš®ã®å®çšçãªã¢ãã«ãæã£ãŠããããããé£è¡ã§ããããšã«æ°ã¥ããŸãããããã§ãç§ãã¡ã®ã¡ã€ã³ã®ã³ãã¥ããã£ã¯ãã¹ãã°ã¬ãžã¹ãã§ããã圌ã㯠WAL-G ã䜿çšããŠããã®ã§ã¯ãªãããšèããŸããããããã£ãŠããããã®éšåãäœããã®æ¹æ³ã§åé¢ããå¿ èŠããããŸããã€ãŸããPostgres ã®ã³ãŒããç·šéããŠã MySQL ã¯å£ããŸããããMySQL ãç·šéããŠã Postgres ã¯å£ããŸããã
ãããã©ã®ããã«åé¢ãããã«ã€ããŠã®æåã®ã¢ã€ãã¢ã¯ãPostgreSQL æ¡åŒµæ©èœã§äœ¿çšãããŠããã®ãšåãã¢ãããŒãã䜿çšãããšããã¢ã€ãã¢ã§ããããããŠå®éãMySQL ã®ããã¯ã¢ãããäœæããã«ã¯ãããçš®ã®åçã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããå¿ èŠããããŸããã
ããããããã§ã¯ãã®ã¢ãããŒãã®é察称æ§ãããã«ããããŸãã Postgres ãããã¯ã¢ãããããšãã¯ãPostgres ã®éåžžã®ããã¯ã¢ãããä¿åããã°ããã¹ãŠåé¡ãããŸããããããŠãMySQL ã®å Žåã¯ãPostgres ã®ããã¯ã¢ãããã€ã³ã¹ããŒã«ãããã®ããã« MySQL ã®ãã€ããã㯠ã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããããšãããããŸããããªãã ãå¥åŠã«èãããŸããç§ãã¡ãããæããããã¯ç§ãã¡ãå¿ èŠãšãã解決çã§ã¯ãªããšå€æããŸããã
PostgresãMySQLãMongoDBãRedis çšã®ããŸããŸãªãã«ã
ããããããã«ãããç°ãªãåºå°ã«ç°ãªãã¢ã»ã³ããªãå²ãåœãŠããšããæ£ãã決å®ãäžãããšãã§ãããšæãããŸããããã«ãããWAL-G ãå®è£ ããå ±é API ã«ã¢ã¯ã»ã¹ããããŸããŸãªããŒã¿ããŒã¹ã®ããã¯ã¢ããã«é¢é£ä»ããããããžãã¯ãåé¢ããããšãå¯èœã«ãªããŸããã
ããã¯ãçåŸãã¡ã«åé¡ãäžããåã«ãç§ãã¡èªèº«ãæžããéšåã§ããã€ãŸããããã¯ãŸãã«åœŒããäœãééã£ãããšãããå¯èœæ§ãããéšåãªã®ã§ãç§ãã¡ã¯ãã®ãããªããšãããã»ããããããã¹ãŠãããŸãããã ãããšå€æããŸããã
ãã®åŸãåé¡ãåºããŸããããããã¯ããã«è§£äœãããŸãããåŠç㯠3 ã€ã®æ ç¹ããµããŒãããå¿ èŠããããŸããã
ããã¯ã1 幎以äžãã®æ¹æ³ã§ WAL-G ã䜿çšããŠããã¯ã¢ããããŠãã MySQL ã§ãã
ãããŠçŸåšãMongoDB ã¯æ¬çªç°å¢ã«è¿ã¥ããŠããããã¡ã€ã«ã§å®æãããããšããŠããŸããå®éãç§ãã¡ã¯ããããã¹ãŠã®ãã¬ãŒã ã¯ãŒã¯ãäœæããŸãããããããçåŸãã¡ã¯å®è¡å¯èœãªãã®ãããã€ãæžããŸããããããŠãããããæ¬çªç°å¢ã§åãå ¥ããããç¶æ ã«ããŸãã
ãããã®åé¡ã¯ãåŠçããããã®ããŒã¿ããŒã¹ããšã«å®å šãªããã¯ã¢ãã ããŒã«ãäœæããå¿ èŠãããããã«ã¯èŠããŸããã§ãããç§ãã¡ã«ã¯ãã®ãããªåé¡ã¯ãããŸããã§ãããç§ãã¡ã®åé¡ã¯ããã€ã³ãã€ã³ã¿ã€ã ãªã«ããªãå¿ èŠã§ãããã¯ã©ãŠãã«ããã¯ã¢ãããããããšã§ããããããŠåŠçãã¡ã«ãããã解決ããã³ãŒããæžãããã«æ±ããŸãããåŠçãã¡ã¯æ¢åã®ããã¯ã¢ãã ããŒã«ã䜿çšããŠäœããã®æ¹æ³ã§ããã¯ã¢ãããäœæããããããã¹ãŠã¯ã©ãŠãã«è»¢éãã WAL-G ã§çµåããŸãããããã«ãããã«ãã€ã³ãã€ã³ã¿ã€ã ãªã«ããªãè¿œå ããŸããã
çåŸãã¡ã¯ä»ã«äœãæã£ãŠããŸããã?圌ãã¯ãLibsodium æå·åãµããŒãã WAL-G ã«å°å ¥ããŸããã
ããã¯ã¢ãã ã¹ãã¬ãŒãž ããªã·ãŒããããŸããããã¯ã¢ãããæ°žä¹ ãšããŠããŒã¯ã§ããããã«ãªããŸããããããŠãã©ããããããããµãŒãã¹ãããããä¿åããããã»ã¹ãèªååããæ¹ã䟿å©ã§ãã
ãã®å®éšã®çµæã¯ã©ããªããŸããã?
ååç»é²è ã¯100åãè¶ ããŸãããæåãç§ã¯ãšã«ããªã³ãã«ã¯ã®å€§åŠããŠã©ã«é£éŠå€§åŠã§ãããšã¯èšããŸããã§ãããããã§ãã¹ãŠãçºè¡šããŸããã 100人ãç»é²ããŸãããå®éã«ã¯ãäœããå§ãã人ã¯ãã£ãšå°ãªããçŽ 30 人ã§ããã
ãã§ã«ååšããã³ãŒãã®ãã¹ããäœæããå¿ èŠããã£ããããã³ãŒã¹ãä¿®äºãã人ã¯ããã«å°ãªããªããŸããããŸãããã°ãä¿®æ£ããããæ©èœãè¿œå ãããããããšãã§ããŸãããããŠãäŸç¶ãšããŠã³ãŒã¹ãééããåŠçãããŸãã
çŸåšããã®ã³ãŒã¹äžã«åŠçã¯çŽ 14 ã®åé¡ãä¿®æ£ããããŸããŸãªãµã€ãºã® 10 ã®æ©èœãäœæããŸããããããŠãããã¯XNUMX人ãXNUMX人ã®éçºè ã®å®å šãªçœ®ãæãã§ããããã«ç§ã«ã¯æããŸãã
ãšããããç§ãã¡ã¯åæ¥èšŒæžãšã³ãŒã¹ã¯ãŒã¯ãçºè¡ããŸããããããŠ12åãåæ¥èšŒæžãåãåããŸããããã¡ïŒäººã¯ãã§ã«ãïŒãã§é²è¡æžã¿ãæ®ã£ã人ãã¡ã¯ãŸã ä¿è·ãããŠããŸããã§ãããã圌ãã«ãšã£ãŠã倧äžå€«ã ãšæããŸãã
å°æ¥ã®èšç»
å°æ¥çã«ã¯ã©ã®ãããªèšç»ãããã®ã§ãããã?
å°ãªããšãããŠãŒã¶ãŒããæ¢ã«èããŠãããå®çŸããããšèããŠããæ©èœãªã¯ãšã¹ãã¯ãããŸããããïŒ
- HA ã¯ã©ã¹ã¿ãŒã®ããã¯ã¢ãã ã¢ãŒã«ã€ãå ã®ã¿ã€ã ã©ã€ã³è¿œè·¡ã®æ£ç¢ºæ§ãç£èŠããŸãã WAL-Gã䜿ãã°ãããå¯èœã§ãããããŠããã®åé¡ã«åãçµãåŠçãåºãŠãããšæããŸãã
- ã¯ã©ãŠãéã§ããã¯ã¢ãããš WAL ã転éãã責任è ããã§ã«ããŸãã
- ãããŠç§ãã¡ã¯æè¿ãããŒãžãæžãæããã«å¢åããã¯ã¢ããã解åããããã«éä¿¡ããã¢ãŒã«ã€ããæé©åããããšã§ãWAL-G ãããã«é«éåã§ãããšããã¢ã€ãã¢ãçºè¡šããŸããã
ããã§å ±æã§ããŸã
ãã®å ±åæžã¯äœã®ããã«ãã£ãã®ã§ãããã?ããã«ãçŸåšããã®ãããžã§ã¯ãããµããŒãããŠããã 4 人ã«å ããŠãããã«å€ãã®æãå ãã£ãŠããŸããç¹ã«å人çãªã¡ãã»ãŒãžã§çžæã«æçŽãæžãå Žåã¯ããã§ãããŸããããŒã¿ãããã¯ã¢ããã㊠WAL-G ã䜿çšããŠããã¯ã¢ãããè¡ãå ŽåããŸã㯠WAL-G ãžã®ç§»è¡ãåžæããå Žåã¯ãã客æ§ã®ãåžæã«ç°¡åã«å¯Ÿå¿ã§ããŸãã
QRã³ãŒããšãªã³ã¯ã§ãããããã確èªããŠããã¹ãŠã®é¡ããæžãããšãã§ããŸããããšãã°ãããã€ãã®ãã°ã¯ä¿®æ£ãããŠããŸããããããã¯ãæ¬åœã«æ¬²ããæ©èœãããã®ã«ãäœããã®çç±ã§ããããŸã ããã¯ã¢ããã«å«ãŸããŠããªãå ŽåããããŸããããã«ã€ããŠã¯å¿ ãæžããŠãã ããã
質å
ããã«ã¡ã¯ïŒãå ±åããããšãããããŸãïŒ WAL-G ã«ã€ããŠã®è³ªåã§ãããPostgres ã«ã€ããŠã¯è³ªåããŸããã WAL-G 㯠MySQL ãããã¯ã¢ããããè¿œå ã®ããã¯ã¢ãããåŒã³åºããŸãã CentOS ã«ææ°ã®ã€ã³ã¹ããŒã«ãå®è¡ããMySQL ã yum install ãããšãMariDB ãã€ã³ã¹ããŒã«ãããŸããããŒãžã§ã³ 10.3 以éãè¿œå ã®ããã¯ã¢ããã¯ãµããŒããããªããªããMariDB ããã¯ã¢ããããµããŒããããŸãããããã§ããïŒ
çŸæç¹ã§ã¯ãMariDB ã®ããã¯ã¢ããã¯è©ŠããŠããŸããã FoundationDB ã®ãµããŒãã®ãªã¯ãšã¹ãã¯ãããŸããããéåžžããã®ãããªãªã¯ãšã¹ããããã°ããµããŒãããŠããã人ãèŠã€ããããšãã§ããŸããç§ãæã£ãŠããã»ã©é·ããé£ããããããŸããã
ããã«ã¡ã¯ãå ±åããããšãããããŸãïŒæœåšçãªæ°æ©èœã«é¢ãã質åã WAL-G ãããŒããšé£æºãããŠãããŒãã«ããã¯ã¢ããã§ããããã«ããæºåã¯ã§ããŠããŸãã?
ããŒãã¹ãã¬ãŒãžã«ããã¯ã¢ããããããšã¯æããã«æå³ããŸããïŒ
ã¯ãã
ãã®è³ªåã«ç§ãããäžæã«çããããã¢ã³ãã¬ã€ã»ãããã£ã³ãããŸãã
(ã¢ã³ãã¬ã€) ã¯ããã質åããããšãããããŸããããã¯ã¢ãããã¯ã©ãŠã ã¹ãã¬ãŒãžããããŒãã«è»¢éãããšãããªã¯ãšã¹ãããããŸããããããŠãã®ããã«
ãå ±åããããšãããããŸãïŒèå³æ·±ãéçºããã»ã¹ãããã¯ã¢ããã¯éèŠãªæ©èœã§ããããã¹ãã§ååã«ã«ããŒããå¿ èŠããããŸããæ°ããããŒã¿ããŒã¹ã®æ©èœãå®è£ ãããšããåŠçããã¹ããæžããŸãããããããšãèªåã§ãã¹ããæžããŠããåŠçã«å®è£ ãæž¡ããŸããã?
çåŸãã¡ã¯ãã¹ããæžããŸãããããããåŠçãã¡ã¯æ°ããããŒã¿ããŒã¹ãªã©ã®æ©èœã«ã€ããŠããã«å€ãã®ããšãæžããŸããã圌ãã¯çµ±åãã¹ããæžããŸããããããŠåœŒãã¯åäœãã¹ããæžããŸãããçµ±åãæåããå Žåãã€ãŸãçŸæç¹ã§ã¯ãããã¯æåã§å®è¡ããããããšãã° cron ã§å®è¡ããã¹ã¯ãªããã§ããã€ãŸããããã«ããèæ¬ã¯éåžžã«æ確ã§ãã
åŠçãã¡ã¯ããŸãçµéšããããŸããã審æ»ã«ã¯æéãããããŸãã?
ã¯ããã¬ãã¥ãŒã«ã¯ããªãã®æéãããããŸããã€ãŸããéåžžãæ°äººã®ã³ããã¿ãŒãäžåºŠã«ãã£ãŠæ¥ãŠãç§ãããããã£ããç§ãããããã£ããšèšã£ãå Žåã圌ããããã«äœãæžããããç解ããããã«ãçŽåæ¥èããŠæéã確ä¿ããå¿ èŠããããŸããã³ãŒãã泚ææ·±ãèªãŸãªããã°ãªããªãããã§ãã圌ãã¯é¢æ¥ãåããªãã£ããç§ãã¡ã¯åœŒãã®ããšãããç¥ããªãã®ã§ãããªãã®æéãããããŸãã
ãå ±åããããšãããããŸãïŒä»¥åãAndrey Borodin ã¯ãWAL-G ã® archive_command ãçŽæ¥åŒã³åºãå¿ èŠããããšè¿°ã¹ãŸããããã ããããçš®ã®ã¯ã©ã¹ã¿ãŒ ã«ãŒããªããžã®å Žåã¯ãã·ã£ããã®éä¿¡å ã®ããŒãã決å®ããè¿œå ã®ããžãã¯ãå¿ èŠã§ãããã®åé¡ãèªåã§ã©ããã£ãŠè§£æ±ºããŸãã?
ããã§äœãåé¡ã§ãã?ããã¯ã¢ãããäœæããåæã¬ããªã«ããããšããŸãããŸãã¯äœïŒ
(Andrey) å®éã®ãšãããWAL-G ã¯ã·ã§ã« ã¹ã¯ãªãããªãã§äœ¿çšããããšãç®çãšããŠããŸããäœãã足ããªãå Žåã¯ãWAL-G å ã«ããã¹ãããžãã¯ãè¿œå ããŸããããã¢ãŒã«ã€ããã©ãããè¡ããããã«ã€ããŠã¯ãã¯ã©ã¹ã¿ãŒå ã®çŸåšã®ãã¹ã¿ãŒããã¢ãŒã«ã€ããããã¹ãã§ãããšèããããŸããã¬ããªã«ããã¢ãŒã«ã€ãããã®ã¯æªãèãã§ããåé¡ã«ã¯ããŸããŸãªã·ããªãªãèããããŸããç¹ã«ãã¿ã€ã ã©ã€ã³ãšè¿œå æ å ±ã®ã¢ãŒã«ã€ãã«é¢ããåé¡ã§ããã質åããããšãããããŸãïŒ
(説æ: ã·ã§ã« ã¹ã¯ãªãããåé€ããŸãã
ããã°ãã¯ïŒãå ±åããããšãããããŸãïŒããªãã話ãããã£ããã¢ããæ©èœã«èå³ããããŸããã¬ããªã«ãé ããŠããŠè¿œãã€ããªãç¶æ³ã«é¥ããŸããããããŠãWAL-G ã®ããã¥ã¡ã³ãã«ã¯ãã®æ©èœã®èª¬æãèŠã€ãããŸããã§ããã
Catchupã¯æåéã20幎2020æXNUMXæ¥ã«ç»å ŽããŸãããããã¥ã¡ã³ãã«ã¯ããå°ãäœæ¥ãå¿ èŠãªå ŽåããããŸããç§ãã¡ã¯ãããèªåãã¡ã§æžããŠããŸãããããã»ã©äžæã«æžããŠããããã§ã¯ãããŸããããããŠãããããåŠçã«ãããæžãããèŠæ±ãå§ããã¹ãã§ãããã
ããçºå£²ãããŸãããïŒ
ãã«ãªã¯ãšã¹ãã¯ãã§ã«ç¡å¹ã«ãªã£ãŠããŸããã€ãŸãããã§ãã¯ããŸãããããããã¹ãã¯ã©ã¹ã¿ãŒã§è©ŠããŠã¿ãŸããããããŸã§ã®ãšãããå®æŠäŸã§ããããã¹ãã§ããç¶æ³ã¯ãããŸããã
ãã€é äºæ³ãããŸãã?
ããããªãã 1 ãæãåŸ ã¡ãã ããã確å®ã«ç¢ºèªããŸãã
åºæïŒ habr.com