
圌ã¯ãã£ãããšé ã£ãŠããããããã§ããžã£ã³ãã§é ã£æã£ãã ãããŠãæãã®ç¬éã«ã圌ã¯ç®ã®åã§å®å šã«ãªãã¿ã®ãªãéšå±ã§åãå»ãŸãããªãŒã¯ã®ããŒãã«ã圌ã®æã«æãããå£ãåšãã®ãéã®ãªããã³ããããã®ãèŠããšãã圌ã¯å®¶ã«åž°ãæã ãšæã£ãã ããããæé ãã§ããã
ã¢ã«ã«ãã£ãšããªã¹ã»ã¹ãã«ã¬ãããŒ
GitLab.comã®ç®¡çè ã®1人ãã¬ããªã±ãŒã·ã§ã³ãä¿®æ£ããã³ã³ãœãŒã«ãæ··åããã¡ã€ã³ã®PostgreSQLããŒã¿ããŒã¹ãåé€ãããããOpenSourceã®äžçã«ãšã£ãŠéèŠãªã€ãã³ãã2017幎1æ31æ¥ã«çºçããŸããããã®çµæã倧éã®ãŠãŒã¶ãŒããŒã¿ã倱ããããµãŒãã¹èªäœããªãã©ã€ã³ã«ãªããŸããã ããã«ã5ã€ã®ç°ãªãããã¯ã¢ãã/ã¬ããªã±ãŒã·ã§ã³æ¹æ³ã¯ãã¹ãŠåäœäžèœã§ããããšãå€æããŸããã ããŒã¿ããŒã¹ãåé€ããã6æéåã«èª€ã£ãŠLVMã€ã¡ãŒãžããå埩ããŸããã 圌ããèšãããã«ãããã¯èµ·ãããŸãã ããããç§ãã¡ã¯ãããžã§ã¯ãããŒã ã«æ¬æãè¡šããªããã°ãªããŸããã圌ãã¯ãã¹ãŠããŠãŒã¢ã¢ã§æ±ã匷ããèŠåºããé ã倱ããŸããã§ãããTwitterã§ãã¹ãŠã«ã€ããŠæžããŠãå®éã«ã¯ãããŒã ããªã¢ã«ã¿ã€ã ã§æçš¿ããå éšããã¥ã¡ã³ããå ±æããããšã§ãé©ãã¹ããªãŒãã³æ§ã瀺ããŸããå±éã€ãã³ãã®èª¬æã
ãããèªãã§ãããšãããªãã¯æåéã貧匱ãªYPã®ããã«æããŸããèŠããäžæ¥ã®åŸã®ååŸ11æã«Postgresãšã®éäºã«å€±æããç²ããŠç®ã现ããŠãèŽåœçãªsudo rm -rf
ãæŠéãµãŒããŒã®ã³ã³ãœãŒã«ã«æŒã蟌ã¿ãEnterãæŒããŸãã ãã°ããããŠã圌ã¯èªåãããããšãç解ããåé€ããã£ã³ã»ã«ããŸãããæé
ãã§ã-ãã以äžã®ããŒã¹ã¯ãããŸãã...
ãã®ã±ãŒã¹ã®éèŠæ§ãšå€ãã®ç¹ã§æçãªãããã€ã³ã·ãã³ãã®äœæ¥äžã«GitLab.comã¹ã¿ãããäœæãã圌ã®ãžã£ãŒãã«ã¬ããŒãããã·ã¢èªã«å®å šã«ç¿»èš³ããããšã«ããŸããã ã«ããã®äžã§çµæãèŠã€ããããšãã§ããŸãã
ããã§ã¯ããããã©ã®ããã§ãã£ããã詳现ã«èª¿ã¹ãŸãããã
2017幎1æ31æ¥ããã®GitLab.comããŒã¿ããŒã¹ã«é¢ããã€ã³ã·ãã³ã
泚ïŒãã®ã€ã³ã·ãã³ãã¯ããŒã¿ããŒã¹ã«åœ±é¿ããŸããïŒåé¡ãšããŒãžãªã¯ãšã¹ããå«ãïŒã gitãªããžããªãšwikiããŒãžã¯åœ±é¿ãåããŸããã§ããã
YouTubeã§ã©ã€ã -åé¡ãè°è«ããŠè§£æ±ºããæ¹æ³ã«åŸã£ãŠãã ããïŒ
- 被ã£ãæ倱
- ã¿ã€ã ã©ã€ã³ïŒUTCã§ç€ºãããæéïŒ
- 埩æ§-2017/01/31 23:00ïŒçŽ17:20 UTCããã®ããã¯ã¢ããïŒ
- åé¡ç¹
- ããã®å©ã
- HugOpsïŒãããšã人ã ã芪åã«åå¿ããä»ã®å Žæããã®Twitteræçš¿ãè¿œå ããŸãïŒ
- ã¹ãã£ãŒãã³ã»ããã¹ã
- ãµã ã»ãã¯ããŒã
被ã£ãæ倱
- çŽ6æéã§ããŒã¿ã倱ãããŸããã
- 4,613ã®éåžžãããžã§ã¯ãã74ã®ãã©ãŒã¯ã350ã®èŒžå ¥åãïŒå€§äœïŒå€±ãããŸããã Gitãªããžããªã¯å€±ãããªããããããŒã¿ã倱ãããåã«ãŠãŒã¶ãŒ/ã°ã«ãŒããååšããŠãããããžã§ã¯ããåäœæã§ããŸããããããã®ãããžã§ã¯ãã®åé¡ã埩å ããããšã¯ã§ããŸããã
- çŽ4979ïŒçŽ5000ïŒã®ã³ã¡ã³ãã倱ããŸããã
- æœåšçã«å€±ããã707人ã®ãŠãŒã¶ãŒïŒKibanaã®ãã°ã«ãããšãããæ£ç¢ºã«èšãã®ã¯å°é£ã§ãïŒã
- 1æ31æ¥17:20ããåã«äœæãããWebããã¯ã¯åŸ©å ãããåŸã«äœæãããŸã-ã¯å€±ãããŸãã
ã¿ã€ã ã©ã€ã³ïŒUTCã§ç€ºãããæéïŒ
- 2017/01/31 16ïŒ00/17ïŒ00-21:00
- YPã¯ã¹ããŒãžã³ã°ã§pgpoolãšã¬ããªã±ãŒã·ã§ã³ã®èšå®ã«åãçµãã§ãããLVMã¹ãããã·ã§ãããäœæããŠæŠéããŒã¿ãã¹ããŒãžã³ã°ã«ããŒãããŸãããŸãããã®ããŒã¿ã䜿çšããŠä»ã®ã¬ããªã«ãžã®ããŒã¿ããŒã¹ã®ããŒããé«éåã§ããããšãæåŸ ããŠããŸãã ããã¯ãããŒã¿æ倱ã®çŽ6æéåã«çºçããŸãã
- ã¬ããªã±ãŒã·ã§ã³ã®èšå®ã«ã¯åé¡ããããéåžžã«æéãããããŸãïŒåæåæpg_basebackupã®å Žåã®ã¿çŽ20æéïŒã YPã¯LVMã¹ãããã·ã§ããã䜿çšã§ããŸããã§ããã ãã®æ®µéã§ã®äœæ¥ã¯äžæãããŸããïŒYPã¯ããã®æ¥ã¯åããŠããªãã£ãå¥ã®ååã®å©ããå¿ èŠã ã£ãããããŸãGitLab.comã®ã¹ãã /é«è² è·ã®ããã«ïŒã
- 2017/01/31 21:00- ã¹ãããŒã«ãããµã€ãã®è² è·ã®æ¥å¢ -Twitter | ããã¿
- IPã¢ãã¬ã¹ã§ãŠãŒã¶ãŒããããã¯ããŸãã
- CDNãšããŠãªããžããªã䜿çšããããã®ãŠãŒã¶ãŒã®åé€ããã®çµæã47,000人ã®IPãŠãŒã¶ãŒãåãã¢ã«ãŠã³ãã§ãã°ã€ã³ããŸããïŒããŒã¿ããŒã¹ã®è² è·ãé«ããªããŸãïŒã æ å ±ã¯ããã¯ãã«ã«ãµããŒãããã³ã€ã³ãã©ã¹ãã©ã¯ãã£ããŒã ã«è»¢éãããŸããã
- ã¹ãã ã®ãŠãŒã¶ãŒãåé€ããïŒã¹ããããã䜿çšïŒ -Slack
- ããŒã¿ããŒã¹ã®è² è·ã¯éåžžã«æ»ããããã€ãã®PostgreSQLããŒãã«ã®ããã¥ãŒã ãæåã§éå§ãããå€æ°ã®ç©ºã®è¡ãåé€ãããŸããã
- 2017/01/31 22:00- ã¬ããªã±ãŒã·ã§ã³ã©ã°ã«é¢ããèŠåãåãåããŸãã -Slack
- db2ã®ä¿®æ£ãè©Šã¿ãŸããããã®æ®µéã§ã¯4 GBé ããŠããŸãã
- db2.clusterã¯è€è£œãæåŠãããã£ã¬ã¯ããª/ var / opt / gitlab / postgresql / dataã¯ã¯ãªãŒã³ãªè€è£œã確ä¿ããããã«ã¯ãªãŒã³ã¢ãããããŸãã
- db2.clusterã¯db1ãžã®æ¥ç¶ãæåŠããmax_wal_sendersãäœããããšèªããŸãã ãã®èšå®ã¯ãWALïŒã¬ããªã±ãŒã·ã§ã³ïŒã¯ã©ã€ã¢ã³ãã®æ°ãå¶éããããã«äœ¿çšãããŸãã
- YPã¯db1ã«ãã£ãŠmax_wal_sendersã32ã«ã€ã³ã¯ãªã¡ã³ãããPostgreSQLãåèµ·åããŸãã
- PostgreSQLã¯ãéããŠããã»ããã©ãå€ãããŠèµ·åããªãããšãèªããŸãã
- YPã¯max_connectionsã8000ãã2000ã«åæžããPostgreSQLãèµ·åããŸãïŒ8000ã§ã»ãŒ1幎éæ£åžžã«åäœãããšããäºå®ã«ããããããïŒã
- db2.clusterã¯ãŸã è€è£œãæåŠããŸãããæ¥ç¶ã«ã€ããŠäžå¹³ãèšãããšã¯ãªããªãã代ããã«ãã³ã°ããäœãããŸããã
- ãã®æç¹ã§ãYPã¯çµ¶ææãæ±ãå§ããŸãã ãã®æ¥åã«ã圌ã¯é ãããã®ã§ïŒçŸå°æéã®23:00é ïŒäœæ¥ãçµäºããããšãçºè¡šããŸããããäºæããªãè€è£œã®åé¡ã®ããã«ãã®ãŸãŸã§ããã
- 2017/01/31 23:00é
- YPã¯ãããããpg_basebackupãããŒã¿ãã£ã¬ã¯ããªã®ã¯ãªãŒã³ãã«ã€ããŠããŸãã«ãtooæ ¢ããããšèãããããåé€ããããšã«ããŸããã æ°ç§åŸã圌ã¯db2.cluster.gitlab.comã§ã¯ãªãdb1.cluster.gitlab.comã§ã³ãã³ããå®è¡ããããšã«æ°ä»ããŸãã ã
- 2017/01/31 23:27ïŒYPã¯åé€ããã£ã³ã»ã«ããŸãããæé ãã§ãã çŽ310 GBã®ãã¡ãæ®ã£ãŠããã®ã¯4.5- Slackã ãã§ãã
埩æ§-2017/01/31 23:00ïŒã17ïŒ20 UTCããã®ããã¯ã¢ããïŒ
- æšå¥šããã埩æ§æ¹æ³ïŒ
- db1.staging.gitlab.comãGitLab.comã«ç§»è¡ããŸãïŒçŽ6æéã®ããã¯ãã°ïŒã
- CWïŒåæäžã«åé€ãããWebããã¯ã«åé¡ããããŸãã
- LVMã¹ãããã·ã§ããã埩å ããŸãïŒ6æéé ããŠïŒã
- ã·ãïŒãã¡ã€ã«ãå埩ããããšããŠããŸããïŒ
- CWïŒäžå¯èœïŒ rm -Rvf SidïŒOKã
- JEJïŒããããæé ãã§ããããã©ã€ããããã«èªã¿åãå°çšã¢ãŒãã«åãæ¿ãããšåœ¹ç«ã¡ãŸããïŒ ãŸããäœæ¥ããã»ã¹ã§äœ¿çšãããŠãããã¡ã€ã«èšè¿°åãååŸããããšã¯å¯èœã§ããïŒ http://unix.stackexchange.com/a/101247/213510ã«ããïŒã
- YPïŒPostgreSQLã¯ãã¹ãŠã®ãã¡ã€ã«ãåžžã«éãããŸãŸã«ããªããããããã¯æ©èœããŸããã ãŸããAzureã¯ããŒã¿ãéåžžã«è¿ éã«åé€ããããã«èŠããŸãããä»ã®ã¬ããªã«ãžã®ããŒã¿è»¢éã¯ããã»ã©é«éã§ã¯ãããŸããã ã€ãŸãããã£ã¹ã¯èªäœã®ããŒã¿ã¯åŸ©å ã§ããŸããã
- SHïŒdb1ã¹ããŒãžã³ã°ãµãŒããŒã§ã¯ãå¥ã®PostgreSQLããã»ã¹ãdb2ããã®éçšããŒã¿ã®ã¹ããªãŒã ãgitlab_replicatorãã£ã¬ã¯ããªã«æ³šã蟌ãããã§ãã ã¬ããªã±ãŒã·ã§ã³ã©ã°ã«ãããšãdb2ã¯2016-01-31 05:53ã«è¿æžããããããgitlab_replicatorãåæ¢ããŸããã 幞ããªããšã«ããããŸã§ã®ããŒã¿ã¯ç¡å·ã«èŠãããããWebããã¯ãå埩ã§ããå ŽåããããŸãã
- db1.staging.gitlab.comãGitLab.comã«ç§»è¡ããŸãïŒçŽ6æéã®ããã¯ãã°ïŒã
- å®è¡ãããã¢ã¯ã·ã§ã³ïŒ
- 2017/02/01 23:00-00:00ïŒdb1.staging.gitlab.comããdb1.cluster.gitlab.comïŒæ¬çªïŒã«ããŒã¿ã埩å ããããšã決å®ãããŸããã 6æéé ããŠãããWebããã¯ã¯å«ãŸããŠããŸãããããããå©çšå¯èœãªå¯äžã®ã¹ãããã·ã§ããã§ãã YPã¯ã sudoã§å§ãŸãã³ãã³ããå®è¡ããªãã»ããè¯ããšèšããJNã«å¶åŸ¡ã移ããŸãã
- 2017/02/01 00:36-JNïŒããŒã¿db1.staging.gitlab.comãããã¯ã¢ããããŸãã
- 2017/02/01 00:55-JNïŒdb1.cluster.gitlab.comã«db1.staging.gitlab.comãããŠã³ãããŸãã
- ã¹ããŒãžã³ã° / var / opt / gitlab / postgresql / data /ããæ¬çª / var / opt / gitlab / postgresql / data /ã«ããŒã¿ãã³ããŒããŸãã
- 2017/02/01 01:05-JNïŒnfs-share01ãµãŒããŒã¯ã/ var / opt / gitlab / db-meltdownã®äžæã¹ãã¬ãŒãžãšããŠå²ãåœãŠãããŸãã
- 2017/02/01 01:18-JNïŒå§çž®ãããpg_xlogïŒ '20170131-db-meltodwn-backup.tar.gz'ãå«ãæ®ãã®æ¬çªããŒã¿ãã³ããŒããŸãã
- 2017/02/01 01:58-JNïŒã¹ããŒãžããæ¬çªãžã®åæãéå§ããŠããŸãã
- 2017/02/01 02:00-CWïŒç¶æ³ã説æããããã«å±éããŒãžãæŽæ°ãããŸããã ãªã³ã¯
- 2017/02/01 03:00-ARïŒrsyncã¯çŽ50ïŒ å®äºããŠããŸãïŒãã¡ã€ã«ã®æ°ïŒã
- 017/02/01 04:00-JNïŒrsyncã¯çŽ56.4ïŒ ãå®è¡ããŸããïŒãã¡ã€ã«æ°ã«é¢ããŠïŒã ããŒã¿è»¢éã¯ãus-eastãšus-east-2éã®ãããã¯ãŒã¯åž¯åå¹ ãããã³ã¹ããŒãžã³ã°ãµãŒããŒã®ãã£ã¹ã¯ããã©ââãŒãã³ã¹ã®å¶éïŒ60 Mb / sïŒã®çç±ã§äœéã§ãã
- 2017/02/01 07:00-JNïŒ/ var / opt / gitlab_replicator / postgresqlã§db1ã¹ããŒãžã³ã°ã®æªåŠçããŒã¿ã®ã³ããŒãèŠã€ããŸããã us-eastã§db-crutch VMä»®æ³ãã·ã³ãèµ·åããŠããã®ããŒã¿ãå¥ã®ãã·ã³ã«ããã¯ã¢ããããŸããã æ®å¿µãªããã120 GBã®RAMã«å¶éãããŠãããã¯ãŒã¯ããŒãã¯åŒãåºãããŸããã ãã®ã³ããŒã¯ãããŒã¿ããŒã¹ã®ã¹ããŒã¿ã¹ã確èªããWebããã¯ããŒã¿ãã¢ããããŒãããããã«äœ¿çšãããŸãã
- 2017/02/01 08:07-JNïŒããŒã¿éä¿¡ãé ãïŒããŒã¿éã®42ïŒ ãéä¿¡ãããŸãã
- 2017/02/02 16:28-JNïŒããŒã¿è»¢éãçµäºããŸããã
- 2017/02/02 16:45-以äžã¯åŸ©æ§æé ã§ãã
- å埩æé
- [x]-16:36 UTCã«æ®åœ±ãããDB1ãµãŒããŒã®ã¹ãããã·ã§ããïŒãŸãã¯2ãŸãã¯3ïŒãååŸããŸãã
- [x]-db1.cluster.gitlab.comãPostgreSQL 9.6.1ã«æŽæ°ããŸããããã«ã¯9.6.0ãå«ãŸããŠãããã¹ããŒãžã³ã°ã¯ââ9.6.1ã䜿çšããŸãïŒããããªããšãPostgreSQLãèµ·åããªãå ŽåããããŸãïŒã
- 8.16.3-EEãã€ã³ã¹ããŒã«ããŸã.1ã
- chef-noopãchef-clientã«ç§»åããŸãïŒæåã§ç¡å¹ã«ãããŸããïŒã
- ãã¹ãã§chef-clientãå®è¡ããŸãïŒ16:45ã«å®è¡ïŒã
- [x]-DBã®å®è¡-16:53 UTC
- èµ·åãç£èŠãããã¹ãŠãããŸããã£ãããšã確èªããŸãã
- ããã¯ã¢ãããäœæããŸãã
- [x]-ãšã©ãŒãã¹ããŒãžã³ã°ã«å ¥ããªãããã«ãSentry DSNãæŽæ°ããŸãã
- [x]-ãã¹ãŠã®ããŒãã«ã®èå¥åã10kå¢ãããŠãæ°ãããããžã§ã¯ã/ã³ã¡ã³ããäœæããéã®åé¡ãåé¿ããŸãã https://gist.github.com/anonymous/23e3c0d41e2beac018c4099d45ec88f5ã䜿çšããŠããã¹ãŠã®ã·ãŒã±ã³ã¹ïŒ1è¡ã«1ã€ïŒãå«ãããã¹ããã¡ã€ã«ãèªã¿åããŸãã
- [x]-Rails / Redisãã£ãã·ã¥ãã¯ãªã¢ããŸãã
- [x]-å¯èœãªéãWebããã¯ã埩å
ããŠãã ããã
- [x] Webããã¯ãåé€ããåã«ååŸããã¹ãããã·ã§ããã䜿çšããŠã¹ããŒãžã³ã°ãå®è¡ããŸãã
- [x] Webããã¯ãæå®ã®äœçœ®ã«ããããšã確èªããŠãã ããã
- [x]ãweb_hooksãããŒãã«ã®SQLãã³ãïŒããŒã¿ã®ã¿ïŒãäœæããŸãïŒããŒã¿ãããå ŽåïŒã
- [x] SQLãã³ããéçšãµãŒããŒã«ã³ããŒããŸãã
- [x] SQLãã³ããäœæ¥ããŒã¿ããŒã¹ã«ã€ã³ããŒãããŸãã
- [x]-ã¯ãŒã«ãŒãæ¥ç¶ã§ãããã©ãããRailsã³ã³ãœãŒã«ã§ç¢ºèªããŸãã
- [x]-ã¯ãŒã¯ãããŒãåŸã ã«éå§ããŸãã
- [x]-å±éããŒãžãç¡å¹ã«ããŸãã
- [x]-@gitlabstatusã§ãã©ãã·ã¥ããŸãã
- [x]-ãããªãèšç»/ã¢ã¯ã·ã§ã³ãèšè¿°ããã¯ã©ãã·ã¥é¢é£ã¿ã¹ã¯ãäœæããŸã é衚瀺ã®ããã¹ã
- https://gitlab.com/gitlab-com/infrastructure/issues/1094
- https://gitlab.com/gitlab-com/infrastructure/issues/1095
- https://gitlab.com/gitlab-com/infrastructure/issues/1096
- https://gitlab.com/gitlab-com/infrastructure/issues/1097
- https://gitlab.com/gitlab-com/infrastructure/issues/1098
- https://gitlab.com/gitlab-com/infrastructure/issues/1099
- https://gitlab.com/gitlab-com/infrastructure/issues/1100
- https://gitlab.com/gitlab-com/infrastructure/issues/1101
- https://gitlab.com/gitlab-com/infrastructure/issues/1102
- https://gitlab.com/gitlab-com/infrastructure/issues/1103
- https://gitlab.com/gitlab-com/infrastructure/issues/1104
- https://gitlab.com/gitlab-com/infrastructure/issues/1105
[]-åå空éãæ¢åã®ãŠãŒã¶ãŒ/ã°ã«ãŒãã«å¯Ÿå¿ããå ŽåãProjectãšã³ããªããªãProject Gitãªããžããªã®æ°ãããšã³ããªãäœæããŸãã
- PC-
ãããã®ãªããžããªã®ãªã¹ããäœæããŠãããŒã¿ããŒã¹ãååšãããã©ããã確èªã§ããããã«ããŸãã
[]-äžæãªïŒå€±ãããïŒåå空éãæã€ãªããžããªãåé€ããŸãã
- AR-åã®ãã€ã³ãããã®ããŒã¿ã«åºã¥ããã¹ã¯ãªããã®äœæã
[x]-ã¹ãã ãŠãŒã¶ãŒãå床åé€ããŸãïŒå床åé¡ãçºçããªãããã«ããŸãïŒã
- [x] 47,000åã®IPã¢ãã¬ã¹ãæã€CDNãŠãŒã¶ãŒã
- ããŒã¿åŸ©æ§åŸã«äœæïŒ
- PS1圢åŒ/è²ã®ç«¯æ«ãå€æŽããã¿ã¹ã¯ãäœæããŠã䜿çšãããŠããç°å¢ãããã«ãããããã«ããŸãïŒå®åãŸãã¯ã¹ããŒãžã³ã°ïŒå®åã¯èµ€ãã¹ããŒãžã³ã°ã¯ââé»è²ïŒã ããã©ã«ãã§ã¯ããã¹ãŠã®ãŠãŒã¶ãŒã«å¯ŸããŠãbashããã³ããã§å®å šä¿®é£Ÿãã¹ãåïŒããšãã°ããdb1ãã§ã¯ãªããdb1.staging.gitlab.comãïŒã衚瀺ããŸãïŒ https ://gitlab.com/gitlab-com/infrastructure/issues/1094
- ããŒã¿PostgreSQLãã£ã¬ã¯ããªã®rm -rfãç¡å¹ã«ããæ¹æ³ã¯ïŒ ãããå®è¡å¯èœãå¿ èŠãã¯ããããŸããïŒéåžžã®ããã¯ã¢ãããããå ŽåïŒã
- ããã¯ã¢ããã®ã¢ã©ãŒããè¿œå ïŒS3ã¹ãã¬ãŒãžãªã©ã確èªããŸããããã¯ã¢ãããµã€ãºã®å€åã瀺ãã°ã©ããè¿œå ãããµã€ãºã10ïŒ ä»¥äžæžå°ãããšãã«èŠåã衚瀺ããŸã ïŒ https : //gitlab.com/gitlab-com/infrastructure/issues/1095 ã
管çè ããã®æ å ±ãç°¡åã«ç¢ºèªã§ããããã«ãæåŸã«æåããããã¯ã¢ããã®æå»ãããŒã¿ããŒã¹ã«è¿œå ããããšãæ€èšããŠãã ãããïŒ https://gitlab.zendesk.com/agent/tickets/58274ã§ã¯ã©ã€ã¢ã³ããææ¡ïŒã- 2016-05-13ããæ©èœããŠãããšããäºå®ã«ãããããããPostgreSQLã8000ã«èšå®ãããmax_connectionsã§çªç¶åé¡ãåŒãèµ·ãããçç±ãç解ããŸãã ãã®åé¡ã®äºæ³å€ã®åºçŸã¯ã絶æãšçµ¶ææã®äž»ãªåå ã§ãïŒ https ://gitlab.com/gitlab-com/infrastructure/issues/1096
- WAL / PITRã¢ãŒã«ã€ãã«ããã¬ããªã±ãŒã·ã§ã³ã®ãããå€ã®å¢å ã確èªããããšããæŽæ°ã倱æããåŸã«åœ¹ç«ã¡ãŸãïŒ https : //gitlab.com/gitlab-com/infrastructure/issues/1097
- ãµãŒãã¹ã®èµ·ååŸã«çºçããå¯èœæ§ã®ããåé¡ã解決ããããã®ãŠãŒã¶ãŒåãã®ã¬ã€ããäœæããŸãã
- AzCopyã䜿çšããŠãããããŒã¿ã»ã³ã¿ãŒããå¥ã®ããŒã¿ã»ã³ã¿ãŒã«ããŒã¿ã移åããå®éšïŒMicrosoftã¯ãããã¯rsyncãããé«éã«å®è¡ããå¿
èŠããããšè¿°ã¹ãŠããŸãã
- ããã¯Windowsåºæã®ãã®ã§ããããã§ãããWindowsã®å°é家ïŒãŸãã¯ãªã¢ãŒãã§ããã ããã®è³ªåãååã«ç解ããŠããããããæ£ãããã¹ãã§ãã人ïŒã¯ããŸããã
åé¡ç¹
- ããã©ã«ãã§ã¯ãLVMã¹ãããã·ã§ããã¯24æéã«1åã®ã¿ååŸãããŸãã 幞ããªããšã«ãYPã¯ã¯ã©ãã·ã¥ã®6æéåã«æåã§äœæããŸããã
- å®æçãªããã¯ã¢ããã1æ¥ã«1åããè¡ãããŠããªãããã§ãããYPã¯ãŸã ãããã®ä¿åå Žæãææ¡ããŠããŸããã JNã«ãããšããããã¯æ©èœããŸããããµã€ãºãæ°ãã€ãã®ãã¡ã€ã«ãäœæãããŸãã
- SHïŒ9.6ã§ã¯ãªãPostgreSQL 9.2ã®ãã€ããªãå®è¡ããããããpg_dumpã¯æ£ããæ©èœããªãããã§ãã ããã¯ãããŒã¿/ PG_VERSIONã9.6ã«èšå®ãããŠãããããã®ãã¡ã€ã«ãäœæ¥ããŒãäžã«ãªãå Žåããªã ããã¹ã¯Pg 9.6ã®ã¿ã䜿çšããããã§ãã ãã®çµæã9.2ã¯ããã©ã«ãã§èµ·åããäœãããã«éãã«çµäºããŸãã ãã®çµæãSQLãã³ãã¯äœæãããŸããã Fog-gemã¯å€ãããã¯ã¢ãããã¯ãªã¢ããå¯èœæ§ããããŸãã
- Azureã®ãã£ã¹ã¯ã¹ãããã·ã§ããã¯ãNFSãµãŒããŒçšãããŒã¿ããŒã¹ãµãŒããŒçšã«å«ãŸããŠããŸã-ãããã
- åæããã»ã¹ã¯ãã¹ããŒãžã³ã°ã§ããŒã¿ãåæããåŸãWebããã¯ãåé€ããŸãã 24æé以å ã«äœæãããéåžžã®ããã¯ã¢ããããããããåŒãåºãããšãã§ããªãå Žåããããã¯å€±ãããŸãã
- ã¬ããªã±ãŒã·ã§ã³æé ã¯éåžžã«å£ãããããã©ã³ãã ãªã·ã§ã«ã¹ã¯ãªããã«äŸåãããšã©ãŒãçºçãããããææžåãäžååã§ããããšãå€æããŸããã
- SHïŒåŸã§ãgitlab_replicatorãã£ã¬ã¯ããªã®ã¹ãããã·ã§ãããäœæããã¬ããªã±ãŒã·ã§ã³æ§æãåé€ããå¥ã®PostgreSQLãµãŒããŒãèµ·åããããšã§ãã¹ããŒãžã³ã°ããŒã¿ããŒã¹ã®æŽæ°ãæ©èœããããšãããããŸããã
- S3ããã¯ã¢ãããæ©èœããŸããããã©ã«ããŒã¯ç©ºã§ãã
- ããã¯ã¢ããã®äœæã«å€±æããå Žåã®ä¿¡é Œã§ããéç¥ã·ã¹ãã ã¯ãããŸããããdev-hostã§åãåé¡ãçºçããããã«ãªããŸããã
èšãæãããšã䜿çšãããŠãã5ã€ã®ããã¯ã¢ãã/ã¬ããªã±ãŒã·ã§ã³æ¹æ³ã®ãã¡ãæ©èœãããã®ã¯ãããŸããã =>çŸåšã6æéåã«äœæãããäœæ¥çšããã¯ã¢ããã埩å ããŠããŸãã
http://monitor.gitlab.net/dashboard/db/postgres-stats?panelId=10&fullscreen&from=now-24h&to=now
ããã®å©ã
HugopsïŒããã«ãtwitterãŸãã¯ä»ã®äººã芪åã«åå¿ããå Žæããã®æçš¿ãè¿œå ããŸãïŒ- ããããçš®é¡ã®ãã€ãŒãã®Twitterã¢ãŒã¡ã³ãïŒ https : //twitter.com/i/moments/826818668948549632
- ã€ã³ã»ã¬ããŒãhttps://twitter.com/janl/status/826717066984116229
- ããã£CI https://twitter.com/BuddyGit/status/826704250499633152
- ã±ã³ãhttps://twitter.com/kentchenery/status/826594322870996992
- ãªãŒããªãhttps://twitter.com/LeadOffTeam/status/826599794659450881
- Mozair https://news.ycombinator.com/item?id=13539779
- ç³è«è https://news.ycombinator.com/item?id=13539729
- ã¹ã³ããã»ãã³ã»ã«ãã³https://twitter.com/shanselman/status/826753118868275200
- ãã€ãã»ãã³ã°https://twitter.com/davejlongââ/status/826817435470815233
- ãµã€ã¢ã³ã»ã¹ã¬ãŒã¿ãŒhttps://twitter.com/skslater/status/826812158184980482
- Zaim M Ramlan https://twitter.com/zaimramlan/status/826803347764043777
- ã¢ãŒãã³ã»ãµã°ã¹https://twitter.com/ktheory/status/826802484467396610
- danedevalcourt https://twitter.com/danedevalcourt/status/826791663943241728
- ã«ãŒã«https://twitter.com/irutsun/status/826786850186608640
- ã¶ãã¯ã»ã¯ã¬ã€https://twitter.com/mebezac/status/826781796318707712
- ãã£ã ã»ãããŒãhttps://twitter.com/cirsca/status/826781142581927936
- Frans Bouma https://twitter.com/FransBouma/status/826766417332727809
- ãã·ã£ã³ã»ãã§ããªhttps://twitter.com/sai_roshan/status/826764344637616128
- ãµãã¥ãšã«ã»ããºãŠã§ã«https://twitter.com/sboswell/status/826760159758262273
- ãããã»ãã©ã³ãhttps://twitter.com/Brunty/status/826755797933756416
- Isham Mohamed https://twitter.com/Isham_M_Iqbal/status/826755614013485056
- ã¢ããªã¢ã»ã¬ãªã³https://twitter.com/adriagalin/status/826754540955377665
- ãžã§ããµã³ããŒã¯https://twitter.com/imprecision/status/82674955656613134784
- ã¯ãªã¹ãhttps://twitter.com/xho/status/826748578240544768
- Linux Australia https://twitter.com/linuxaustralia/status/826741475731976192
- ãšãã»ãžã§ãŒã³https://twitter.com/emmajanehw/status/826737286725455872
- ã©ãã¡ãšã«ã»ããŒã https://twitter.com/rdohms/status/826719718539194368
- ãã€ã¯ã»ãµã³ã»ããã³https://twitter.com/msanromanv/status/826710492169269248
- ãžã§ãã»ãŠã©ãŒã«ãŒhttps://twitter.com/WalkerJono/status/826705353265983488
- ãã ã»ãã³ããŒãºhttps://twitter.com/TomPenrose/status/826704616402333697
- ãžã§ã³ã»ãŠã£ã³ã¯ã¹https://twitter.com/jonwincus/status/826683164676521985
- ãã«ã»ã¯ã€ã¹https://twitter.com/BillWeiss/status/826673719460274176
- ã¢ã«ãã«ãã»ã°ã¬ã¹ãã³https://twitter.com/albertogg/status/826662465400340481
- Wicket https://twitter.com/matthewtrask/status/826650119042957312
- ãžã§ã·ãŒã»ãã£ã¢ãªã³ã°https://twitter.com/JesseDearing/status/826647439587188736
- ãã©ã³ã³ã»ã®ãªãªhttps://twitter.com/fgili0/status/826642668994326528
- Adam DeConinck https://twitter.com/ajdecon/status/826633522735505408
- Luciano Facchinelli https://twitter.com/sys0wned/status/826628970150035456
- ãã²ã«ã»ãã£ã»ã·ãŠã«ã·ãªF. https://twitter.com/mciurcio/status/826628765820321792
- ceej https://twitter.com/ceejbot/status/826617667884769280
ã¹ãã£ãŒãã³ã»ããã¹ã
- https://twitter.com/net_snow/status/826622954964393984 @gitlabstatusããã«ã¡ã¯ãç§ã¯PGéçºè ã§ãããããªãã®ä»äºã奜ãã§ãã äœããæäŒãã§ãããæããŠãã ããã圹ã«ç«ãŠãŠããããã§ãã
ãµã ã»ãã¯ããŒã
- ããã«ã¡ã¯Sidã/ LVMããŒã¿ããŒã¹ã«åé¡ãããã®ã¯æ®å¿µã§ãããããã¯éåžžã«äžå¿«ã§ãã ããã€ãã®PostgreSQLã¯ã©ã¹ã¿ãŒïŒãã¹ã¿ãŒ/ã¹ã¬ãŒãïŒããããã¬ããŒãã§ããã€ãã®ããšã«æ°ä»ããŸããã
- Slonyã䜿çšããŸãããããã¯ããªãèªèº«ãç¥ã£ãŠãããã®ã§ãããããã¯èªåŒµã§ã¯ãããŸãããhttpïŒ //howfuckedismydatabase.comã§ãç¬ã£ãŠããŸãããã¹ããªãŒãã³ã°ã¬ããªã±ãŒã·ã§ã³ãæ åœããçµã¿èŸŒã¿ã®PostgreSQLãã€ããªã¯éåžžã«ä¿¡é Œæ§ãé«ãé«éã§ããããã«åãæ¿ããŸãã
- æ¥ç¶ããŒã«ã®äœ¿çšã«ã€ããŠã¯èšåãããŠããŸããããpostgresql.confã§ã®æ°åã®æ¥ç¶ã«ã€ããŠè¿°ã¹ãŠããŸããããã©ãŒãã³ã¹ã®ç¹ã§éåžžã«æªããéå¹ççã§ãã å®éã«ã¯ã256ãè¶ ããã¢ã¯ãã£ããªæ¥ç¶ãããå ŽåãåçŽæ¹åã§ã¯ãªãæ°Žå¹³æ¹åã«ã¹ã±ãŒãªã³ã°ããå¿ èŠããããŸãã
- ã¬ããŒãã«ã¯ããã§ã€ã«ãªãŒããŒããã³ããã¯ã¢ããããã»ã¹ã®ä¿¡é Œæ§ãäœãããšãèšèŒãããŠãããããpostgresqlãã§ã€ã«ãªãŒããŒçšã®ç°¡åãªã¹ã¯ãªãããäœæããã³ææžåããŸãããå¿ èŠã«å¿ããŠã転éããŸãã ããã¯ã¢ããã«é¢ããŠã¯ãæ¥äžã®å¢åããã¯ã¢ããã§ã¯pgbarmanã䜿çšããbarmanãšpg_dumpã䜿çšããŠ1æ¥2åãã«ããã¯ã¢ãããè¡ããŸããããã©ãŒãã³ã¹ãšä¿¡é Œæ§ã®èŠ³ç¹ãããããã¯ã¢ãããšpostgresqlããŒã¿ã®ãããã£ã¬ã¯ããªãç°ãªããã£ã¹ã¯ã«ä¿åããããšãéèŠã§ãã
- ãŸã Azureã«ããŸããïŒïŒïŒïŒ å éšDNSãNTPãã«ãŒãã£ã³ã°ãããã³ã¹ãã¬ãŒãžã«ã¯å€ãã®å¥åŠãªåé¡ããããããã§ããã ãæ©ãããããåºãããšããå§ãããŸãããŸãããã¹ãŠãå éšã«ã©ã®ããã«é 眮ãããŠãããã«ã€ããŠã®ããã€ãã®æããã話ãèããŸããã
PostgreSQLã®ã»ããã¢ããã«éç¹ã眮ããSidãšSamã®é·ã察å¿- PostgreSQLã®èšå®ã«ãµããŒããå¿ èŠãªå Žåã¯ãç¥ãããã ããããã®ä»¶ã«ã€ããŠã¯ååãªçµéšããããŸãã
- 倧t ãã¯ããŒãïŒå¥ã®è³ªåïŒããŒã¿ããŒã¹ã¯ã©ã®ãããã®ãã£ã¹ã¯å®¹éãå¿ èŠãšããŸããïŒ ãã©ãã€ãã§ããããããšãã®ã¬ãã€ãã§ããïŒ
- 倧t ãã¯ããŒãïŒãã§ã€ã«ãªãŒããŒ/ã¬ããªã±ãŒã·ã§ã³ã¹ã¯ãªãããæçš¿ããŸããïŒ
- pgpoolãèŠãŠããããšãããããŸã-代ããã«pgbouncerããå§ãããŸã
- 倧t ãã¯ããŒãïŒpgpoolã«ã¯å€ãã®åé¡ããããŸããç§ãã¡ã¯ããããããã¹ãããæšãŠãŸããã
- 倧t McLeodïŒãŸããTwitterãGitLabããµããŒãããä»ã®äœãã䜿ã£ãŠäœãå ¬ã«çºèšã§ãããã©ããããããŠãã®åé¡ã«åãçµãéã®éææ§ã«ã€ããŠãæããŠãã ããã ç§ãå§ãããšããinfoxchangeã§SANã¹ããªãããã¬ã€ã³ããããæåéãç§ãåããŸãã-ç§ã¯ãšãŠãç·åŒµããŸããïŒ
- Sid SijbrandijïŒããã«ã¡ã¯ããµã ãå©ããŠãããŠããããšãã ãããå ¬éããã¥ã¡ã³ãã«ã³ããŒããŠãããŒã ã®ä»ã®ã¡ã³ããŒããããå®è¡ã§ããããã«ããŠãã ããã
- 倧t ãã¯ããŒãïŒãã§ãŒã«ãªãŒããŒã¹ã¯ãªããïŒ
- Sid SijbrandijïŒããªããæžãããã®ã¯ãã¹ãŠã
- ãã¡ããããããã«ãããããã¯å ¬éãªããžããªã§ãããçæ³çã§ã¯ãããŸãããããããã¯ã»ã©é ãã§ãããããŸãæ©èœããŸããçµæãåºããã«ãã¹ããåžžã«æ··ä¹±ãããŸããããã¹ãŠãç°ãªãå ŽåããããŸãã
- ã¯ãããã¡ãããããªããç§ã®æšå¥šäºé ã転éããããšãã§ããŸãã
PostgreSQLãå®è¡ããŠããVMãšPostgreSQL.confã«ã€ããŠã®æ å ±ãéä¿¡ã§ããå Žåã¯ãæ¹åæ¹æ³ã«é¢ããæšå¥šäºé ãæäŸããŸãã
Sid: Slony 9.2 9.6, .
: , , : PostgreSQL .
- Rails (25 ). 20 20 - 10 000 , 400 ( Unicorn â ).
: PostgreSQL- , ; pg_bouncer â . , , pgpool . , , . Pgpool ORM/db-.
: https://wiki.postgresql.org/wiki/Number_Of_Database_Connections
- , , . . pgpool + ( ). Pgbouncer, , ( , ). https://github.com/awslabs/pgbouncer-rr-patch .
: active/active PostgreSQL-, , ?
: ? ?
* ãããããSamããã®è³ªåãGitLab.comããŒã ã®åçãããã³æçµçãªæšå¥šäºé ãèšèŒãããã»ã¯ã·ã§ã³ã¯ããã°ããã®éè£å ãããã€ã³ã·ãã³ãèªäœã«çŽæ¥é¢ä¿ããªããªããŸãããªãªãžãã«ããŸã å®å®ããŠããªãããããŸã 翻蚳ã«å«ããŠããŸããã
ãããã«
, GitLab , , , . , Twitter Google Docs, , , , .
, : "Database (removal) specialist" ( [] ), - 1 http://checkyourbackups.work/ , :
ã©ã®ãããªçµè«ãå°ãåºãããšãã§ããŸããïŒ
- .
- ( , Azure).
- LVM â , , GitLab.com, .
- dev/stage/prod- .
- dev/stage/prod- /.
- â , .
- , .
é¢é£ãªã³ã¯ïŒ
- : GitLab.com Database Incident â 2017/01/31: https://docs.google.com/document/d/1GCK53YDcBWQveod9kfzW-VCxIABGiryG7_z_6jHdVik/pub
- GitLab.com: https://about.gitlab.com/2017/02/01/gitlab-dot-com-database-incident/
- : https://habrahabr.ru/post/320988/