Chapter 24. °í°¡¿ë¼º°ú ·Îµå ±ÕÇü Á¶Á¤(Load Balancing)

ÁÖ ¼­¹ö°¡ °íÀ峪°Å³ª(°í°¡¿ë¼º), ÀϺΠÄÄÇ»ÅͰ¡ °°Àº µ¥ÀÌÅÍ(·Îµå ±ÕÇü Á¶Á¤(Load Balancing))¸¦ ó¸®ÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§ÇØ µ¥ÀÌÅͺ£À̽º ¼­¹ö´Â µ¿½Ã¿¡ ÀÛµ¿µÉ ¼ö ÀÖ½À´Ï´Ù. µ¥ÀÌÅͺ£À̽º ¼­¹ö´Â °øµ¿À¸·Î °í¸£°Ô °¡µ¿µÇ´Â °ÍÀÌ ÀÌ»óÀûÀÔ´Ï´Ù. Á¤ÀûÀÎ À¥ÆäÀÌÁö¸¦ Á¦°øÇÏ´Â À¥¼­¹ö´Â ´Ü¼øÈ÷ À¥À¸·ÎºÎÅÍÀÇ ¿ä±¸·Î ¹ß»ýÇÏ´Â ºÎÇϸ¦ ´Ù¼öÀÇ ±â°è¿¡ ºÐ»êÇÏ´Â °Í¸¸À¸·Îµµ °£´ÜÇÏ°Ô °áÇÕµÉ ¼ö ÀÖ½À´Ï´Ù. »ç½Ç»ó Àбâ Àü¿ë(Read-only)ÀÇ µ¥ÀÌÅͺ£À̽º ¼­¹ö ¶ÇÇÑ ºñ±³Àû ½±°Ô °áÇյ˴ϴÙ. ±×·¯³ª ´ëºÎºÐÀÇ µ¥ÀÌÅͺ£À̽º ¼­¹ö´Â ÀÐ°í ¾²±â°¡ È¥ÀçµÈ ¿äûÀ» ¹Þ¾ÆµéÀ̸ç, ÀÐ°í ±â·ÏÇÏ´Â ¼­¹ö´Â °áÇÕÀÌ ¸Å¿ì ¾î·Æ½À´Ï´Ù. ÇâÈÄ ¼­¹ö¿¡¼­ Àб⠿äûÀÌ µé¾î¿ÔÀ» °æ¿ì Àϰü¼º ÀÖ´Â °á°ú¸¦ µ¹·ÁÁÖ¾î¾ß¸¸ Çϱ⠶§¹®¿¡ Àбâ Àü¿ë(Read-only) µ¥ÀÌÅͰ¡ °¢ ¼­¹ö¿¡ Çѹø »ý¼ºµÇ´õ¶óµµ, ¾î¶² ¼­¹öµçÁö »ó°ü ¾øÀÌ ±â·Ï(write)Àº ¸ðµç ¼­¹ö¿¡ ¹èÆ÷µÇ¾î¾ß¸¸ ÇÕ´Ï´Ù.

ÀÌ µ¿±âÈ­ ¹®Á¦´Â ¼­¹ö°¡ µ¿½Ã¿¡ ÀÛµ¿ÇÏ´Â °Í¿¡ ´ëÇÑ ±Ùº»ÀûÀÎ ¾î·Á¿òÀÌ ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. ÀÌÀ¯´Â µ¿±âÈ­ ¹®Á¦¿¡ ´ëÇÑ ¸ðµç °æ¿ì¸¦ ó¸®ÇÒ ¼ö ÀÖ´Â ÇϳªÀÇ ÇØ¹ýÀÌ Á¸ÀçÇÏÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù. ´Ù¼öÀÇ ÇØ¹ýÀÌ Á¸ÀçÇÕ´Ï´Ù. °¢°¢ÀÇ ÇØ¹ýÀº ´Ù¾çÇÑ ¹æ½ÄÀ¸·Î À̹®Á¦¸¦ ´Ù·ç°í ÀÖÀ¸¸ç, ÀÌ Æ¯Á¤ÇÑ ÀÛ¾÷ ºÎÇÏ¿Í °ü·ÃµÈ ¿µÇâÀ» ÃÖ¼ÒÈ­½Ã۰í ÀÖ½À´Ï´Ù.

ÀÏºÎ ÇØ¹ý¿¡¼­´Â ÇÑ °³ ¼­¹öÀÇ µ¥ÀÌÅÍ °»½ÅÀ» Çã°¡ÇÔÀ¸·Î½á µ¿±âÈ­¸¦ ó¸®Çϰí ÀÖ½À´Ï´Ù. µ¥ÀÌÅ͸¦ °»½ÅÇÒ ¼ö ÀÖ´Â ¼­¹ö´Â ÀÐ°í ¾²´Â ¼­¹ö ¶Ç´Â, ¸¶½ºÅÍ ¼­¹ö·Î ºÒ·ÁÁý´Ï´Ù. Àбâ Àü¿ë(Read-only)ÀÇ Äõ¸®¿¡ ÀÀÇÒ ¼ö ÀÖ´Â ¼­¹ö´Â ½½·¹ÀÌºê ¼­¹ö¶ó°í ÇÕ´Ï´Ù. ¸¶½ºÅÍ ¼­¹ö°¡ º¯°æµÉ ¶§±îÁö »ç¿ëÀÚ°¡ Á¢±ÙÇÒ ¼ö ¾ø´Â ¼­¹ö´Â ½ºÅĹÙÀÌ ¼­¹ö¶ó°í ÇÕ´Ï´Ù.

ÀϺΠÀå¾Ö Á¶Ä¡(failover)¿Í ·Îµå ±ÕÇü Á¶Á¤(Load Balancing) ÇØ¹ýÀº µ¿½Ã¿¡ ÁøÇàµË´Ï´Ù. Áï µ¥ÀÌÅ͸¦ °»½ÅÇÏ´Â Æ®·£Àè¼Ç(transaction)ÀÇ °æ¿ì, ¸ðµç ¼­¹ö°¡ Æ®·£Á§¼ÇÀ» ó¸®ÇÒ ¶§±îÁö ó¸® ´ë»óÀÌ µÇÁö ¸øÇÕ´Ï´Ù. ÀÌ »ç½ÇÀº Àå¾Ö Á¶Ä¡(failover)·Î ÀÎÇØ ¾î¶² µ¥ÀÌÅÍÀÇ ¼Õ½Çµµ ÀϾÁö ¾ÊÀ¸¸ç, ¾î¶² ¼­¹ö°¡ Äõ¸® ´ë»óÀÎÁö »ó°ü¾øÀÌ µ¿ÀÏÇÑ °á°ú°¡ ¸ðµç load sharing ¼­¹ö¿¡°Ô µ¹¾Æ°¥ °ÍÀ» º¸ÁõÇÕ´Ï´Ù. ºñµ¿±â ÇØ¹ýÀÇ °æ¿ì, ´Ù¸¥ ¼­¹ö·ÎÀÇ ¹èÆ÷ ½Ã°£°ú ó¸® ½Ã°£¿¡ ÀÖ¾î Áö¿¬ÀÌ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. ¸î¸î Æ®·£Á§¼ÇÀº ¹é¾÷ ¼­¹ö¸¦ ±³È¯ÇÒ ¶§ ¼Õ½ÇµÉ °¡´É¼ºÀÌ ÀÖÀ¸¸ç, load sharing ¼­¹ö´Â ¿À·¡µÈ °á°ú¸¦ ¹ÞÀ» ¼öµµ ÀÖ½À´Ï´Ù. ¼­¹ö°£ÀÇ ºñµ¿±â Åë½ÅÀº µ¿±âÈ­°¡ ³Ê¹« ´Ê°Ô ÀÌ·ç¾îÁ³À» ¶§ »ç¿ëÇÕ´Ï´Ù.

ÇØ¹ýÀº ó¸®ÇÏ´Â ¹üÀ§¿¡ ÀÇÇØ ºÐ·ùÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¾î´À ÇØ¹ý¿¡¼­´Â Àüü µ¥ÀÌÅͺ£À̽º ¼­¹ö¸¸À» ó¸®ÇÏÁö¸¸, ´Ù¸¥ ÇØ¹ý¿¡¼­´Â °¢ Å×ÀÌºí ¶Ç´Â °¢ µ¥ÀÌÅͺ£À̽º ¼öÁØÀ» °ü¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù.

¾î¶² Àå¾Ö Á¶Ä¡(failover) ¶Ç´Â, ·Îµå ±ÕÇü Á¶Á¤(load balancing)ÀÇ ¼±Åÿ¡¼­µçÁö, ÀÛ¾÷ÀÇ È¿À²¼ºÀº ÃæºÐÈ÷ °í·ÁµÇ¾î¾ß ÇÕ´Ï´Ù. ÀϹÝÀûÀ¸·Î ±â´É¼º°ú ÀÛ¾÷ È¿À²¼ºÀº »ó¹Ý °ü°èÀÔ´Ï´Ù. ¿¹¸¦ µé¸é, ´À¸° ³×Æ®¿öÅ©ÀÇ °æ¿ì, ¿ÏÀüÈ÷ µ¿±âÈ­ ÇØ¹ýÀ» Àû¿ëÇϸé ÀÛ¾÷ È¿À²Àº ¹ÝÀÌÇϰ¡ µÇÁö¸¸, ºñµ¿±âÀÇ ÇØ¹ýÀ» »ç¿ëÇϸé ÀÛ¾÷ È¿À²¼º¿¡ ÃÖ¼ÒÀÇ ¿µÇâÀ» ¹ÌĨ´Ï´Ù.

º» ÀýÀ» ÅëÇØ Àå¾Ö Á¶Ä¡(failover), º¹Á¦(replication)¿Í ·Îµå ±ÕÇü Á¶Á¤(load balancing) ÇØ¹ýÀ» »ìÆì º¸½Ç ¼ö ÀÖ½À´Ï´Ù.

°øÀ¯ µð½ºÅ©¸¦ ÀÌ¿ëÇÑ Àå¾ÖÁ¶Ä¡(failover)

°øÀ¯ µð½ºÅ© Àå¾Ö Á¶Ä¡´Â µ¥ÀÌÅͺ£À̽ºÀÇ »çº»À» Çϳª¸¸ º¸À¯ÇÔÀ¸·Î¼­ µ¿±âÈ­ ¿À¹öÇìµå¸¦ ÇÇÇÒ ¼ö ÀÖ½À´Ï´Ù. °øÀ¯ µð½ºÅ© Àå¾Ö Á¶Ä¡¿¡¼­´Â ´Ù¼öÀÇ ¼­¹ö¿¡ ÀÇÇØ °øÀ¯µÇ´Â ÇϳªÀÇ µð½ºÅ© ¾î·¹À̸¦ »ç¿ëÇÕ´Ï´Ù. ¸¸¾à ÁÖ µ¥ÀÌÅͺ£À̽º ¼­¹ö°¡ ÀÛµ¿µÇÁö ¾Ê´Â´Ù¸é, ¸¶Ä¡ µ¥ÀÌÅͺ£À̽º ÆÄ¼ÕÀÌ ÇØ°áµÈ °Íó·³ ½ºÅÙ¹ÙÀÌ ¼­¹ö¿¡ ÀÇÇØ µ¥ÀÌÅͺ£À̽º°¡ ¼³Ä¡µÇ°í ½ÇÇàµÇ¾î Áý´Ï´Ù. ÀÌ´Â µ¥ÀÌÅÍ ¼Õ½ÇÀÌ ÀüÇô ¹ß»ýÇÏÁö ¾Ê´Â ºü¸¥ Àå¾Ö Á¶Ä¡¸¦ ½ÇÇöÇÕ´Ï´Ù.

°øÀ¯µÈ Çϵå¿þ¾î ±â´ÉÀº ³×Æ®¿öÅ©»óÀÇ ±â¾ïÀåÄ¡¿¡¼­ ºó¹øÇÏ°Ô ÀÌ·ç¾îÁý´Ï´Ù. ³×Æ®¿öÅ© ÆÄÀÏ ½Ã½ºÅÛÀ» »ç¿ëÇÏ´Â °ÍÀº °¡´ÉÇÏÁö¸¸, ¸ðµç ÆÄÀÏ ½Ã½ºÅÛÀÌ ÃæºÐÇÑ POSIX»ç¾çÀ» °¡Áö´ÂÁö ÁÖÀÇÇØ¾ß¸¸ ÇÕ´Ï´Ù. ÀÌ ¹æ¹ýÀÇ °æ¿ì Áß¿äÇÑ Á¦ÇÑÀ» °¡Áö°í Àִµ¥, °øÀ¯µÈ µð½ºÅ© ¾î·¹ÀÌÀÇ °íÀå, ¶Ç´Â ÆÄ¼ÕµÇ¾úÀ» °æ¿ì, ÁÖ ¼­¹ö¿Í ½ºÅĹÙÀÌ ¼­¹ö´Â µÑ´Ù ÀÛµ¿µÇÁö ¾Ê´Â´Ù´Â °ÍÀÔ´Ï´Ù. ¶ÇÇÑ ½ºÅÙ¹ÙÀÌ ¼­¹ö´Â ÁÖ ¼­¹ö°¡ ÀÛµ¿µÇ°í ÀÖÀ» ¶§´Â °øÀ¯ ±â¾ïÀåÄ¡¿¡ Á¢±ÙÇÏÁö ¸»¾Æ¾ßÇÕ´Ï´Ù.

°øÀ¯µÈ Çϵå¿þ¾î ±â´ÉÀÇ °³Á¤ ¹öÀüÀº ÆÄÀÏ ½Ã½ºÅÛÀÇ »çº»(replication)À̸ç, ÆÄÀÏ ½Ã½ºÅÛÀÇ ¸ðµç º¯°æÀº ´Ù¸¥ ÄÄÇ»ÅÍ¿¡ ¼³Ä¡µÈ ÆÄÀÏ ½Ã½ºÅÛ¿¡ ¹Ý¿µµÇ¾îÁý´Ï´Ù. ÇѰ¡Áö Á¦¾àÀº ¹Ì·¯¸µ(mirroring)ÀÌ ½ºÅÙ¹ÙÀÌ ¼­¹ö°¡ ÆÄÀÏ ½Ã½ºÅÛÀÇ ÀϰüµÈ »çº»À» °¡Áöµµ·Ï ÇØ¾ßÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. ƯÈ÷, ½ºÅÙ¹ÙÀÌ ¼­¹ö¿¡ ±âÀÔÇÏ´Â °ÍÀº ¸¶½ºÅÍ ¼­¹ö¿Í °°Àº ÀϰüµÈ ¼ø¼­·Î ÀÌ·ç¾îÁ®¾ß ÇÕ´Ï´Ù. DRBD´Â Linux¸¦ À§ÇÑ ÀθÁÀÖ´Â ÆÄÀÏ ½Ã½ºÅÛ º¹Á¦(replication) ÇØ¹ýÀÔ´Ï´Ù.

ÁöÁ¤½ÃÁ¡(Point-In-Time) º¹±¸¸¦ »ç¿ëÇÑ ¿ú ½ºÅĹÙÀÌ(Warm Stanby)

¿ú ½ºÅĹÙÀÌ ¼­¹ö(Section 23.4¸¦ ÂüÁ¶)´Â ·Î±× ¿ì¼± Ãâ·Â ±â¹ý(WAL)À» ÇØ¼®ÇÏ¿© ÇöÀç »óŸ¦ À¯ÁöÇÒ ¼ö ÀÖ½À´Ï´Ù. ÁÖ ¼­¹ö°¡ °íÀ峪°Ô µÇ¸é, ¿ú ½ºÅÙ¹ÙÀÌ ¼­¹ö´Â °ÅÀÇ ´ëºÎºÐÀÇ µ¥ÀÌÅ͸¦ º¸Á¸Çϰí, ½Å¼ÓÇÏ°Ô »õ·Î¿î ¸¶½ºÅÍ µ¥ÀÌÅͺ£À̽º¸¦ °¡µ¿½Ãŵ´Ï´Ù. ÀÌ´Â ºñµ¿±âÀ̸ç, Àüü µ¥ÀÌÅͺ£À̽º ¼­¹ö¿¡ ÀÇÇØ¼­¸¸ ÇàÇØÁú ¼ö ÀÖ½À´Ï´Ù.

¸¶½ºÅÍ-½½·¹ÀÌºê º¹Á¦(replication)

master-slave º¹Á¦ ±¸Á¶¿¡¼­´Â ¸ðµç µ¥ÀÌÅÍ °»½Å Äõ¸®¸¦ ¸¶½ºÅÍ ¼­¹ö·Î Àü¼ÛÇÕ´Ï´Ù. ¸¶½ºÅÍ ¼­¹ö´Â º¯°æµÈ µ¥ÀÌÅ͸¦ ½½·¹ÀÌºê ºñµ¿±â·Î Àü¼ÛÇÕ´Ï´Ù. ¸¶½ºÅÍ ¼­¹ö°¡ ÀÛµ¿Çϰí ÀÖÀ» °æ¿ì¿¡ ÇÑÇØ¼­, ½½·¹ÀÌºê ¼­¹ö´Â Àбâ Àü¿ë(Read-only) Äõ¸®¿¡ ÀÀ´äÇÒ ¼ö ÀÖ½À´Ï´Ù. ½½·¹ÀÌºê ¼­¹ö´Â µ¥ÀÌÅÍ¿þ¾îÇϿ콺 Äõ¸®¿¡ ÀûÇÕÇÕ´Ï´Ù.

Slony-I´Â º¹Á¦(replication) ŸÀÔÀÇ ÇÑ ¿¹À̸ç, °¢°¢ÀÇ Å×À̺íÀÌ Ã³¸®ÇÏ´Â ¹üÀ§°¡ µÇ¾î, ´Ù¼öÀÇ ½½·¹ÀÌºê ¼­¹ö¸¦ Áö¿øÇÕ´Ï´Ù. ¿Ö³ÄÇÏ¸é ½½·¹ÀÌºê ¼­¹ö°¡ ºñµ¿±â·Î(Àϰý(batch)󸮿¡ ÀÇÇØ) °»½ÅµÇ¾îÁ®, Àå¾Ö Á¶Ä¡(fail over)½Ã µ¥ÀÌÅÍ ºÐ½ÇÀÇ À§ÇèÀÌ Á¸ÀçÇϱ⠶§¹®ÀÔ´Ï´Ù.

¹®Àå¿¡ ±Ù°ÅÇÑ º¹Á¦(replication) ¹Ìµé¿þ¾î

¹®Àå¿¡ ±Ù°ÅÇÑ º¹Á¦(replication) ¹Ìµé¿þ¾î¿¡¼­´Â ÇÁ·Î±×·¥ÀÌ ¸ðµç SQL Äõ¸®¸¦ ¹Þ¾Æ Çϳª ¶Ç´Â ¸ðµç ¼­¹ö·Î Àü¼ÛÇÕ´Ï´Ù. °¢ ¼­¹ö´Â µ¶¸³ÀûÀ¸·Î ½ÇÇàÇÕ´Ï´Ù. ÀоîµéÀÌ´Â ÀÛ¾÷ÀÇ ºÎÇϸ¦ ºÐ»ê½Ã۱â À§ÇØ Àбâ Àü¿ë(Read-only) Äõ¸®°¡ ÇϳªÀÇ ¼­¹ö·Î º¸³»Áú ¼ö ÀÖ´Â ¹Ý¸é¿¡ Read-write Äõ¸®´Â ¸ðµç ¼­¹ö¿¡°Ô Àü¼ÛµË´Ï´Ù.

Äõ¸®°¡ º¯°æµÇÁö ¾Ê°í Àü¼ÛµÇ¾ú°Å³ª, random(), CURRENT_TIMESTAMP¿Í °°Àº ÇÔ¼ö¿Í °á°ú´Â ´Ù¸¥ ¼­¹ö¿¡¼­ »óÀÌÇÑ °ªÀ» °¡Áö°Ô µË´Ï´Ù. ÀÌ´Â °¢ ¼­¹ö°¡ µ¶¸³ÀûÀ¸·Î ÀÛµ¿Çϱ⠶§¹®À̸ç, SQL Äõ¸®°¡ ½ÇÁ¦·Î º¯°æµÈ Çà(row)¸¦ Àü¼ÛÇÏÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù. ÀÌ¿Í °°Àº »ç½ÇÀÌ Çã¿ëµÉ ¼ö ¾ø´Â °æ¿ì´Â, ¹Ìµé¿þ¾î³ª ¾îÇø®ÄÉÀ̼ǿ¡ ´ëÇØ ÇϳªÀÇ ¼­¹ö·ÎºÎÅÍÀÇ °ªÀÌ ¹®ÀǵǾî, ±× °á°ú¸¦ ±âÀÔÇØ Äõ¸®·Î »ç¿ëÇÏÁö ¾ÊÀ¸¸é ¾ÈµÇ´Â °æ¿ìÀÔ´Ï´Ù. ¶ÇÇÑ, ¸ðµç Æ®·£Á§¼ÇÀÌ ¸ðµç ¼­¹ö¿¡¼­ 󸮵ǰųª ÁߴܵǴÂÁö ¶Ç´Â µÎ°³ÀÇ ½ÇÇà ±¸¹®( PREPARE TRANSACTION and COMMIT PREPARED )À» »ç¿ëÇÏ´Â Áö¿¡ ´ëÇØ ÁÖÀǸ¦ ±â¿ï¿©¾ß ÇÕ´Ï´Ù. º¹Á¦(replication)ÀÇ Å¸ÀÔ¿¡ °üÇØ Pgpool¿Í Sequoia ¿¹°¡ ÀÖ½À´Ï´Ù.

µ¿±â ¸ÖƼ-¸¶½ºÅÍ º¹Á¦(replication)

µ¿±â ¸ÖƼ ¸¶½ºÅÍ º¹Á¦(replication)¿¡¼­´Â °¢°¢ÀÇ ¼­¹öµéÀÌ ¿ä±¸¸¦ ¾µ ¼ö ÀÖ°í, º¯°æµÈ µ¥ÀÌÅÍ´Â °¢°¢ÀÇ Æ®·£Á§¼ÇÀÌ Ã³¸®µÇ±â Àü¿¡ º»·¡ÀÇ ¼­¹ö¿¡¼­ ¸ðµç ¼­¹ö·Î Àü¼ÛµÉ ¼ö ÀÖ½À´Ï´Ù. ¹«°Å¿î ÀԷ Ȱµ¿Àº ÃʰúÀûÀÎ Àá±Ý(locking)À» ¹ß»ýų ¼ö ÀÖÀ¸¸ç, ÀÛ¾÷ È¿À²¼ºÀÌ ÀúÇϵǵµ·Ï ¸¸µì´Ï´Ù. ½ÇÁ¦ ÀÔ·ÂÀÇ ÀÛ¾÷ È¿À²¼ºÀº ´ÜÀÏ ¼­¹öº¸´Ù ÁÁÁö ¾ÊÀº °æ¿ì°¡ ´ëºÎºÐÀÔ´Ï´Ù. Read ¿äûÀº ¾î¶² ¼­¹ö·Îµµ º¸³»Áú ¼ö ÀÖ½À´Ï´Ù. ÀϺΠ½ÇÇàÀº °øÀ¯µÈ µð½ºÅ©¸¦ »ç¿ëÇÏ¿© Åë½Å¿¡ ÀÇÇÑ ¿À¹öÇìµå¸¦ ÁÙÀ̰í ÀÖ½À´Ï´Ù. µ¿±â ¸ÖƼ ¸¶½ºÅÍ º¹Á¦((replication)´Â ÁÖ·Î ÀÛ¾÷ÀÇ ºÎÇϸ¦ Àдµ¥ ÃÖÀûÀÌÁö¸¸, °¡Àå Å« ÀåÁ¡Àº ¾î¶² ¼­¹ö¶óµµ ÀÔ·Â ¿äûÀ» ¹Þ¾ÆµéÀÏ ¼ö ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. ¿©±â¿¡´Â ¸¶½ºÅÍ¿Í ½½·¹ÀÌºê ¼­¹ö °£ÀÇ ¾î¶°ÇÑ ÀÛ¾÷ ºÎÇÏÀÇ ºÐÇÒÀ» ÇÊ¿ä·Î ÇÏÁö ¾Ê½À´Ï´Ù. ¶ÇÇÑ µ¥ÀÌÅÍ º¯°æÀº ÇϳªÀÇ ¼­¹ö¿¡¼­ ´Ù¸¥ ¼­¹ö·Î º¸³»Áö°Ô µË´Ï´Ù. ±×¸®°í random()¿Í °°Àº °áÁ¤µÇÁö ¾ÊÀº ÇÔ¼öÀÇ °æ¿ìµµ ¹®Á¦°¡ ÀϾÁö ¾Ê½À´Ï´Ù.

PostgreSQL´Â ÀÌ¿Í °°Àº Á¾·ùÀÇ º¹Á¦(replication)¸¦ Á¦°øÇÏÁö ¾Ê½À´Ï´Ù. ±×·¯³ª PostgreSQL µÎ ó¸® ±¸¹®( PREPARE TRANSACTION °ú COMMIT PREPARED )Àº ¾îÇø®ÄÉÀÌ¼Ç Äڵ峪 ¹Ìµé¿þ¾î¿Í °ü·ÃÇØ ½ÇÇàµÇ¾îÁú ¼ö ÀÖ½À´Ï´Ù.

ºñµ¿±â ¸ÖƼ-¸¶½ºÅÍ º¹Á¦(replication)

·¦Å¾À̳ª ¿ø°Ý ¼­¹ö¿Í °°ÀÌ ±ÔÄ¢ÀûÀ¸·Î ¿¬°áµÇ¾î ÀÖÁö ¾Ê´Â ¼­¹ö°£¿¡ ÀÖ¾î, µ¥ÀÌÅÍÀÇ Àϰü¼ºÀ» À¯ÁöÇÏ´Â °ÍÀº µµÀüÀûÀÎ °úÁ¦ÀÔ´Ï´Ù. ºñµ¿±â ¸ÖƼ ¸¶½ºÅÍ º¹Á¦(replication)À» »ç¿ëÇÏ¿© °¢ ¼­¹ö´Â µ¶¸³ÀûÀ¸·Î ½ÇÇàµÉ ¼ö ÀÖÀ¸¸ç, ÁÖ±âÀûÀ¸·Î ´Ù¸¥ ¼­¹öµé°ú Ãæµ¹µÇ´Â Æ®·»Àè¼ÇÀ» ½Äº°Çϱâ À§ÇÑ Åë½ÅÀÌ ÀÌ·ç¾îÁú ¼ö ÀÖ½À´Ï´Ù. Æ®·£Á§¼ÇÀÇ Ãæµ¹Àº »ç¿ëÀÚ ¶Ç´Â Ãæµ¹ ȸÇǹý¿¡ ÀÇÇØ ÇØ°áµÉ ¼ö ÀÖ½À´Ï´Ù.

µ¥ÀÌÅÍÀÇ ºÐÇÒ

µ¥ÀÌÅÍ ºÐÇÒÀº Å×À̺íÀ» µ¥ÀÌÅÍÀÇ ¼¼Æ®·Î ³ª´©´Â °ÍÀÔ´Ï´Ù. °¢ ¼¼Æ®´Â ¿ÀÁ÷ ÇϳªÀÇ ¼­¹ö¿¡ ÀÇÇØ º¯°æµÉ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é, µ¥ÀÌÅÍ´Â °¢°¢ ÇϳªÀÇ ¼­¹ö¸¦ °¡Áø ·±´ø°ú ÆÄ¸®ÀÇ ¿µ¾÷¼Ò¿¡ ÀÇÇØ ºÐÇҵǾîÁú ¼ö ÀÖ½À´Ï´Ù. ¸¸¾à ·±´ø°ú ÆÄ¸®ÀÇ µ¥ÀÌÅͰ¡ °áÇյǴ Äõ¸®°¡ ¿ä±¸µÇ¾î Áú °æ¿ì, ¾îÇø®ÄÉÀ̼ÇÀº µÎ ¼­¹ö¿¡¼­ Äõ¸®¸¦ ÁøÇàÇϰųª, ¸¶½ºÅÍ/½½·¹ÀÌºê º¹Á¦(replication)À» »ç¿ëÇØ ´Ù¸¥ ¿µ¾÷¼ÒÀÇ µ¥ÀÌÅ͸¦ Àбâ Àü¿ëÀ¸·Î º¸°üÇÏ¿© »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

º¹¼ö ¼­¹ö¿¡ ÀÇÇÑ Äõ¸® º´·Ä ½ÇÇà

À§ÀÇ ÇØ¹ý Áß ¸¹Àº ºÎºÐÀº ´Ù¼öÀÇ ¼­¹ö°¡ ´Ù¼öÀÇ Äõ¸®¸¦ ó¸®Çϵµ·Ï ÇÕ´Ï´Ù. ±×·¯³ª ¾î¶°ÇÑ ÇØ¹ýµµ ó¸® ¼Óµµ¸¦ Çâ»ó½Ã۱â À§ÇØ, ÇϳªÀÇ Äõ¸®¸¦ ´Ù¼öÀÇ ¼­¹ö°¡ ó¸®Çϵµ·Ï ÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ ÇØ¹ýÀº ´Ù¼öÀÇ ¼­¹ö°¡ ÇϳªÀÇ Äõ¸®¸¦ µ¿½Ã¿¡ ½ÇÇàÇϵµ·Ï ÇÕ´Ï´Ù. ÀÌ´Â º¸Åë ¼­¹ö °£¿¡ µ¥ÀÌÅ͸¦ ºÐÇÒÇÔÀ¸·Î½á ¼öÇàµÇ¾îÁö¸ç, °¢ ¼­¹ö´Â ¸ÃÀº Äõ¸®ÀÇ ºÎºÐÀ» ¼öÇàÇϸç, ÁÖ¼­¹ö¿¡¼­ ´Ù½Ã °áÇյDZâ À§ÇØ °á°ú°¡ ¸®ÅϵǸç, ÀÌ´Â ´Ù½Ã »ç¿ëÀÚ¿¡°Ô µ¹¾Æ°©´Ï´Ù. Pgpool-II´Â ÀÌ¿Í °°Àº ¼º´ÉÀ» °¡Áö°í ÀÖ½À´Ï´Ù.

»ó¾÷ÀûÀÎ ÇØ¹ý

PostgreSQL´Â ¿ÀÇ ¼Ò½ºÀ̸ç, ¿ëÀÌÇÏ°Ô È®ÀåÀÌ °¡´ÉÇÕ´Ï´Ù. ´ë´Ù¼öÀÇ ±â¾÷µéÀº PostgreSQL¸¦ °¡Áö°í, »õ·Î¿î Àå¾Ö Á¶Ä¡(failover), º¹Á¦(replication) ±×¸®°í ·Îµå ±ÕÇü Á¶Á¤(load balancing) ±â´ÉÀ» °¡Áø Æó¼âµÈ ¼Ò½º¸¦ °³¹ßÇÏ¿´½À´Ï´Ù.