| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 23. ¹é¾÷°ú º¹¿ø | Fast Forward | Next |
°è¼ÓÀû ¾îÄ«À̺긦 »ç¿ëÇØ, ÁÖ ¼¹ö°¡ Á¤ÁöÇßÀ» ¶§ ¿¬»êÀ» ÀÌ¾î ¹ÞÀ» Áغñ°¡ µÈ 1°³ ÀÌ»óÀǽºÅĹÙÀÌ ¼¹ö·Î°í°¡¿ë¼º (HA) Ŭ·¯½ºÅÍ ¼³Á¤À» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ±â´ÉÀº ºó¹øÈ÷ warm standby³ª ·Î±× shippingÀ¸·Î ¾ð±ÞµË´Ï´Ù.
ÀÌ ±â´ÉÀ» À§Çؼ ÁÖ ¼¹ö¿Í ½ºÅĹÙÀÌ ¼¹ö´Â ÇÔ²² µ¿ÀÛÇÏÁö¸¸, ¼¹ö °£ÀÇ °ü°è´Â ¹ÐÁ¢ÇÏÁö ¾Ê½À´Ï´Ù. ÁÖ ¼¹ö´Â °è¼ÓÀû ¾îÄ«ÀÌºê ¸ðµå·Î µ¿ÀÛÇϰí, °¢ ½ºÅĹÙÀÌ ¼¹ö´Â °è¼ÓÀû º¹±¸ ¸ðµå·Î µ¿ÀÛÇØ, ÇÁ¶óÀ̸Ӹ®·ÎºÎÅÍÀÇ WAL ÆÄÀÏÀ» Àоî³À´Ï´Ù. ÀÌ ±â´ÉÀ» À¯È¿ÇÏ°Ô Çϱâ À§Çؼ, µ¥ÀÌÅͺ£À̽º Å×À̺íÀ» º¯°æÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ±×·¯¹Ç·Î, ´Ù¸¥ º¹Á¦(replication) ¼ö¹ý°ú ºñ±³ÇØ, °ü¸®¿Í °ü·ÃµÇ´Â ¿À¹öÇìµå°¡ ³·¾ÆÁý´Ï´Ù. ¶ÇÇÑ, ÀÌ ¼³Á¤ÀÌ ÁÖ ¼¹ö¿¡°Ô ÁÖ´Â ¼º´É ¿µÇâµµ »ó´ëÀûÀ¸·Î ³·½À´Ï´Ù.
ÇϳªÀÇ µ¥ÀÌÅͺ£À̽º ¼¹ö¿¡¼ ´Ù¸¥ °÷À¸·Î WAL ÀÌ À̵¿ÇÏ´Â °ÍÀº º¸Åë, log shippingÀ̶ó°í Ç¥ÇöµË´Ï´Ù. PostgreSQL´Â ÆÄÀÏ º£À̽º log shippingÀ» ½ÇÇàÇÕ´Ï´Ù. ÀÌ´Â WAL ±â·ÏÀÌ ¹Ù·Î ÇϳªÀÇ ÆÄÀÏ(WAL ¼¼±×¸ÕÆ®)·Î Àü¼ÛµÇ´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. WALÆÄÀÏÀº °£ÆíÇϰí Àú·ÅÇÑ ¹æ¹ýÀ¸·Î ±ÙÁ¢ÇÑ ½Ã½ºÅÛÀ̳ª ´Ù¸¥ ½Ã½ºÅÛÀÇ °°Àº »çÀÌÆ®, Áö±¸ ¹Ý´ëÆíÀÇ ´Ù¸¥ ½Ã½ºÅÛµçÁö »ó°üÇÏÁö ¾Ê°í, ¾î´À °÷À¸·Îµµ Àü¼ÛµÉ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ±â¼úÀ» À§Çؼ ÇÊ¿äÇÑ ´ë¿ªÀº ÁÖ ¼¹öÀÇ Æ®·£Àè¼Ç ºñÀ²¿¡ µû¶ó ¹Ù²ò´Ï´Ù. ¶ÇÇÑ, ±â·Ï º£À̽ºÀÇ log shippingµµ ÀýÂ÷¸¦ µ¶ÀÚÀûÀ¸·Î °³¹ßÇÒ ¼ö ÀÖ½À´Ï´Ù. Section 23.4.4¿¡¼ ¼³¸íÇϰí ÀÖ½À´Ï´Ù.
log shippingÀÌ ºñµ¿±â¶ó´Â °ÍÀ» ÁÖÀÇÇØ¾ß ÇÕ´Ï´Ù. Áï, Æ®·£Àè¼ÇÀÌ Ã³¸®µÈ ÈÄ¿¡ WAL ±â·ÏÀÌ Àü¼Û µË´Ï´Ù. ÀÌ °á°ú, ÁÖ ¼¹ö¿¡ ÆÄ¸êÀûÀÎ ½ÇÆÐ°¡ ÀϾ, Àü¼Û ÀüÀÇ Æ®·£Àè¼ÇÀÌ ¾ø¾îÁ³À» °æ¿ì, µ¥ÀÌÅÍ ¼Õ½Ç ±â°£ÀÌ Á¸ÀçÇÏ°Ô µË´Ï´Ù. archive_timeoutÆÄ¶ó¹ÌÅ͸¦ »ç¿ëÇÏ´Â °ÍÀ¸·Î, µ¥ÀÌÅÍ ¼Õ½Ç ±â°£À» Á¦ÇÑÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ÆÄ¶ó¹ÌÅÍ´Â ÇÊ¿äÇÏ¸é ¸î ÃÊ Á¤µµ±îÁö ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ÀÌ·¯ÇÑ ÀÛÀº °ªÀº ÆÄÀÏ Àü¼Û¿¡ ÇÊ¿äÇÑ ´ë¿ªÀ» Å©°Ô Áõ´ë½Ãŵ´Ï´Ù. 1ºÐ ¹Ì¸¸ Á¤µµÀÇ µ¥ÀÌÅÍ ¼Õ½Ç ±â°£ÀÌ ÇÊ¿äÇϸé, ±â·Ï º£À̽ºÀÇ log shippingÀ» °ËÅäÇÏ´Â ÆíÀÌ ÁÁÀ» °ÍÀÔ´Ï´Ù.
½ºÅĹÙÀÌ ¼¹ö´Â °è¼ÓÀûÀ¸·Î º¹±¸ 󸮸¦ ½Ç½ÃÇϰí Àֱ⠶§¹®¿¡, ¾×¼¼½º¿¡´Â ÀÌ¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. º¹±¸ ÀÛ¾÷È¿À²Àº ½ºÅĹÙÀÌ ¼¹ö°¡ ¿ÏÀüÈ÷ ÀÌ¿ëµÇ´Â °ÍÀ¸·ÎºÎÅÍ ¸Ö¾îÁö´Â °ÍÀº ÀϽÃÀûÀ̱⠶§¹®¿¡ ÃæºÐÈ÷ ÁÁ½À´Ï´Ù. °á°úÀûÀ¸·Î ÀÌ ´É·ÂÀ», °í°¡¿ë¼ºÀ» Á¦°øÇϱâ À§ÇÑ warm standby ¼³Á¤À¸·Î¼ ÂüÁ¶ÇÕ´Ï´Ù. º¸°üµÈ ±âº» ¹é¾÷À¸·ÎºÎÅÍ ¼¹öÀÇ º¹±¸¿Í ·Ñ Æ÷¿öµå´Â ¿À·£ ½Ã°£ÀÌ °É¸± °ÍÀÔ´Ï´Ù. ÀÌ ¶§¹®¿¡, ÀÌ ±â¹ýÀº °í°¡¿ë¼ºÀÌ ¾Æ´Ñ ÀçÇØ º¹±¸½Ã ´ëÃ¥À» Á¦°øÇÒ »ÓÀÔ´Ï´Ù.
Àû¾îµµ µ¥ÀÌÅͺ£À̽º ¼¹öÀÇ °ßÁö·ÎºÎÅÍ, ÇÒ ¼ö ÀÖ´Â ÇÑ ¸ðÁ¶ ÇüÅ·ΠÁÖ ¼¹ö¿Í ½ºÅĹÙÀÌ ¼¹ö¸¦ ÀÛ¼ºÇÏ´Â °ÍÀÌ ÀϹÝÀûÀÎ ÃßõÀÔ´Ï´Ù. ±¸Ã¼ÀûÀ¸·Î Å×ÀÌºí °ø°£¿¡ °ü·ÃÇÑ °æ·Î¸íÀº ±×´ë·Î °Ç³×¹Þ±â ¶§¹®¿¡, Å×ÀÌºí °ø°£ ±â´ÉÀ» »ç¿ëÇÏ´Â °æ¿ì´Â ÁÖ ¼¹ö¿Í ½ºÅĹÙÀÌ ¼¹öÀÇ Å×ÀÌºí °ø°£¿ëÀÇ ¸¶¿îÆ® Æ÷ÀÎÆ®¸¦ µ¿ÀÏÇÏ°Ô ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ÁÖ ¼¹ö·Î CREATE TABLESPACE ¸¦ ½ÇÇàÇÏ´Â °æ¿ì, Ä¿¸Çµå¸¦ ½ÇÇàÇϱâ Àü¿¡, ÇÊ¿äÇÑ »õ·Î¿î ¸¶¿îÆ® Æ÷ÀÎÆ®¸¦ ÁÖ ¼¹ö, ½ºÅĹÙÀÌ ¼¹öÀÇ ¾çÂÊ ¸ðµÎ·Î ÀÛ¼ºÇØ¾ß ÇÏ´Â °ÍÀº ±â¾ïÇØ Áֽʽÿä. Çϵå¿þ¾î´Â Á¤È®ÇÏ°Ô °°Àº ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ±×·¯³ª °æÇè»ó, ¾îÇø®ÄÉÀ̼ǰú ½Ã½ºÅÛÀÇ À¯È¿±â°£À» ÅëÇØ, 2°³ÀÌ ´Ù¸¥ ½Ã½ºÅÛÀ» °ü¸®ÇÏ´Â °Íº¸´Ù 2°³ÀÇ µ¿ÀÏÇÑ ½Ã½ºÅÛÀ» °ü¸®ÇÏ´Â ÆíÀÌ °£´ÜÇÕ´Ï´Ù. ¾î·µç Çϵå¿þ¾î ¾ÆÅ°ÅØÃ³´Â °°Áö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ¿¹¸¦ µé¾î, 32 ºñÆ® ½Ã½ºÅÛÀ¸·ÎºÎÅÍ 64 ºñÆ® ½Ã½ºÅÛ¿¡ÀÇ ¼±¹ÚÀº Àß µ¿ÀÛÇÏÁö ¾Ê½À´Ï´Ù.
º¸Åë, ´Ù¸¥ ¸ÞÀÌÀú ¸±¸®½º ´Ü°èÀÇ ¼¹ö »çÀÌ¿¡¼´Â log shippingÀÌ ºÒ°¡´ÉÇÕ´Ï´Ù. ¸ÞÀÌÀú ¸±¸®½ºÀÇ ¾÷µ¥ÀÌÆ® ±â°£Àº µð½ºÅ© ¼½ÄÀ» º¯°æÇÏÁö ¾Ê´Â´Ù´Â °ÍÀÌ PostgreSQL ±Û·Î¹ú °³¹ß ±×·ìÀÇ ¹æÄ§À̹ǷÎ, ÁÖ ¼¹ö¿Í ½ºÅĹÙÀÌ ¼¹ö¿ÍÀÇ »çÀÌ¿¡ ¸ÞÀÌÀú ¸±¸®½º ´Ü°è¿¡ Â÷À̰¡ À־ Àß µ¿ÀÛÇÒ °ÍÀÔ´Ï´Ù. ±×·¯³ª ÀÌ °æ¿ì, °ø½ÄÀûÀÎ Áö¿øÀº Á¦°øµÇÁö ¾Ê½À´Ï´Ù. ÇÒ ¼ö ÀÖ´Â ÇÑ ÁÖ ¼¹ö¿Í ½ºÅĹÙÀÌ ¼¹ö·Î °°Àº ¸±¸®½º ·¹º§À» »ç¿ëÇϽʽÿä. »õ·Î¿î ¸ÞÀÌÀú ¸±¸®½º¿¡ ¾÷µ¥ÀÌÆ®ÇÏ´Â °æ¿ì, °¡Àå ¾ÈÀüÇÑ ¹æÄ§Àº ½ºÅĹÙÀÌ ¼¹ö¸¦ ¸ÕÀú ¾÷µ¥ÀÌÆ®ÇÏ´Â °ÍÀÔ´Ï´Ù. »õ·Î¿î ¸ÞÀÌÀú ¸±¸®½º´Â ÀÌÀüÀÇ ¸ÞÀÌÀú ¸±¸®½ºÀÇ WAL ÆÄÀÏÀ» ÀоîµéÀÏ ¼ö ÀÖÁö¸¸, ¹Ý´ë´Â ÇÒ ¼ö ¾øÀ»Áöµµ ¸ð¸¨´Ï´Ù.
½ºÅĹÙÀÌ ¼¹ö¸¦ »ç¿ëÇϱâ À§ÇØ ÇÊ¿äÇÑ Æ¯¼öÇÑ ¸ðµå´Â Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù. ÁÖ ¼¹ö¿Í ½ºÅĹÙÀÌ ¼¹ö¿¡¼ ¹ß»ýÇÏ´Â ¿¬»êÀº ÀüüÀûÀ¸·Î ÀϹÝÀûÀÎ °è¼ÓÀû ¾îÄ«À̺ê¿Í º¹±¸ ÀÛ¾÷ÀÔ´Ï´Ù. 2°³ÀÇ µ¥ÀÌÅͺ£À̽º ¼¹ö°¡ °ü°èÇÏ´Â À¯ÀÏÇÑ ÁöÁ¡Àº °øÀ¯µÇ´Â WAL ÆÄÀÏÀÇ ¾îÄ«À̺êÀÔ´Ï´Ù. ÁÖ ¼¹ö´Â ÀÌ ¾îÄ«À̺긦 ÀÔ·ÂÇϰí, ½ºÅĹÙÀÌ ¼¹ö´Â À̰ÍÀ» ÀоîµéÀÔ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é È¥¶õ½º·¯¿öÁý´Ï´Ù. ºÐ¸®µÈ ÁÖ ¼¹öÀÇ WAL ¾îÄ«À̺갡 ¼¯ÀÌÁö ¾Êµµ·Ï ÁÖÀÇÇØ¾ß ÇÕ´Ï´Ù.
¹ÐÁ¢ÇÏÁö ¾ÊÀº µÎ ¼¹ö¸¦ ÇÔ²² ÀÛµ¿½Ã۱â À§Çؼ´Â °£´ÜÈ÷ ½ºÅĹÙÀÌ ¼¹ö¿¡¼ »ç¿ëÇÏ´Â restore_command¸¦ ÀÌ¿ëÇÏ¸é µË´Ï´Ù. À̰ÍÀº ÁÖ ¼¹ö·ÎºÎÅÍ »ç¿ë°¡´ÉÇÑ ´ÙÀ½ WAL ÆÄÀÏÀ» ½ºÅĹÙÀÌ ¼¹ö°¡ ±â´Ù¸®µµ·Ï ÇÕ´Ï´Ù. ÀÌrestore_command´Â ½ºÅĹÙÀÌ ¼¹öÀÇrecovery.confÆÄÀÏ·Î ÁöÁ¤µË´Ï´Ù. º¸ÅëÀÇ º¹±¸ 󸮴 WAL·ÎºÎÅÍ ÆÄÀÏÀ» ¿ä±¸ÇØ, ÆÄÀÏÀ» ÀÌ¿ëÇÒ ¼ö ¾øÀ¸¸é ½ÇÆÐÇÕ´Ï´Ù. ½ºÅĹÙÀÌ Ã³¸®¿¡¼´Â ÀϹÝÀûÀ¸·Î ´ÙÀ½ ÆÄÀÏÀ» ÀÌ¿ëÇÒ ¼ö ¾ø±â ¶§¹®¿¡, ÀÌ¿ë °¡´ÉÇÏ°Ô µÉ ¶§±îÁö ´ë±âÇØ¾ß ÇÕ´Ï´Ù. restore_command¸¦ ´ë±â½ÃŰ·Á¸é, ´ÙÀ½ WAL ÆÄÀÏÀÇ Á¸À縦 È®ÀÎÇÑ ÈÄ, ·çÇÁÇÏ´Â Ä¿½ºÅÒ ½ºÅ©¸³Æ®¸¦ ÀÛ¼ºÇÏ¿© ½ÇÇöµÉ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ Æ®¸®°Å°¡ ½ÇÆÐÇÏ´Â ¸î °¡Áö ¹æ¹ýÀÌ ÀÖ¾î¾ß ÇÕ´Ï´Ù. ÀÌ´Â restore_command¸¦ ¹æÇØÇØ, ·çÇÁ¸¦ Á¾·á½Ã۰í, ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù´Â ¿¡·¯¸¦ ½ºÅĹÙÀÌ ¼¹ö¿¡ µ¹·ÁÁÖ´Â °ÍÀÔ´Ï´Ù. À̰ÍÀº º¹±¸ 󸮸¦ Á¤Áö½Ã۱⠶§¹®¿¡, ½ºÅĹÙÀÌ ¼¹ö´Â º¸ÅëÀÇ ¼¹ö°¡ µË´Ï´Ù.
restore_command¿¡ ÀûÀýÇÑ ÀÇ»ç Äڵ带 ÀÌÇÏ¿¡ ³ªÅ¸³À´Ï´Ù.
triggered = false;
while (!NextWALFileReady() && !triggered)
{
sleep(100000L); /* wait for ~0.1 sec */
if (CheckForExternalTrigger())
triggered = true;
}
if (!triggered)
CopyWALFileForRecovery();
PostgreSQL´Â ÁÖ ¼¹öÀÇ ½ÇÆÐ¸¦ ½Äº°ÇØ, ½ºÅĹÙÀÌ ½Ã½ºÅÛ, ½ºÅĹÙÀÌ µ¥ÀÌÅͺ£À̽º ¼¹ö¿¡ ÅëÁöÇϴµ¥ ÇÊ¿äÇÑ ½Ã½ºÅÛ ¼ÒÇÁÆ®¿þ¾î¸¦ Á¦°øÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ·¯ÇÑ ÅøÀº ¸¹ÀÌ Á¸ÀçÇϰí ÀÖÀ¸¸ç, À̰͵鿡´Â IPÁÖ¼Ò¸¦ À̵¿½ÃŰ´Â °Í°ú °°Àº, ´Ù¸¥ failover¸¦ ¼º°ø½Ã۱â À§ÇÑ ±â´ÉÀ» °¡Áö°í ÀÖ½À´Ï´Ù.
failover Æ®¸®°Å¸¦ À§ÇÑ ¹æ¹ýÀº °èȹÇÏ°í ¼³°èÇÏ´Â µ¥ Áß¿äÇÑ ºÎºÐÀÔ´Ï´Ù. restore_command´Â °¢ WAL ÆÄÀÏ¿¡¼ ÇÑ ¹ø ¹Û¿¡ ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù. restore_command¸¦ ½ÇÇàÇÏ´Â ÇÁ·Î¼¼½º´Â °¢ ÆÄÀÏÀ» »ý¼ºÇϰųª »èÁ¦ÇÕ´Ï´Ù. ¶ÇÇÑ, demon³ª ¼¹ö ÇÁ·Î¼¼½º°¡ ¾ø±â ¶§¹®¿¡, ½Ã±×³ÎÀ̳ª ½Ã±×³Î Çڵ鷯¸¦ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. failoverÀÇ ÅëÁö¿¡´Â º¸´Ù ¿À·¡ °¡´Â ÅëÁö ±â´ÉÀÌ ÇÊ¿äÇÕ´Ï´Ù. ¼ø¼öÇÑ Å¸ÀÓ ¾Æ¿ô ±â´ÉÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÁÖ·Î ÁÖ ¼¹ö»óÀÇ ±âÁ¸ÀÇarchive_timeout¼³Á¤°ú ¿¬°èÇØ »ç¿ëµË´Ï´Ù. ³×Æ®¿öÅ© Àå¾Ö³ª °íºÎÇÏÀÎ ÁÖ ¼¹ö¿¡ ÀÇÇØ failover°¡ ½ÃÀ۵DZ⠶§¹®¿¡, ¿¡·¯°¡ ¹ß»ýÇϱ⠽±½À´Ï´Ù. ÁöÁ¤ ÇÒ ¼ö ÀÖ´Ù¸é, ¸í½ÃÀûÀÎ Æ®¸®°Å ÆÄÀÏ »ý¼º°ú °°Àº ÅëÁö ¸ÅÄ¿´ÏÁòÀº ¿¡·¯°¡ µÇ±â ¾î·Æ½À´Ï´Ù.
½ºÅĹÙÀÌ ¼¹ö¸¦ ¼³Á¤Çϱâ À§ÇÑ °£·«ÇÑ ÀýÂ÷¸¦ ÀÌÇÏ¿¡ ³ªÅ¸³À´Ï´Ù. °¢ ´Ü°èÀÇ »ó¼¼ÇÑ Á¡Àº ÀÌÀü ÀýÀ» ÂüÁ¶ÇØ Áֽʽÿä.
ÇÒ ¼ö ÀÖ´Â ÇÑ ¶È°°ÀÌ ÁÖ ½Ã½ºÅÛ°ú ½ºÅĹÙÀÌ ½Ã½ºÅÛÀ» ¼³Á¤ÇØ Áֽʽÿä. °°Àº ¸±¸®½º ·¹º§ÀÇPostgreSQLÀÇ º¹Á¦µµ Æ÷ÇÔÇÕ´Ï´Ù.
°è¼ÓÀû ¾ÆÄÉÀ̺긦 ÁÖ ¼¹ö¿¡¼ ½ºÅĹÙÀÌ ¼¹öÀÇ µð·ºÅ丮»ó¿¡ WAL¸¦ º¸°üÇϵµ·Ï ¼³Á¤ÇØ Áֽʽÿä. ÁÖ ¼¹ö·Î archive_command ¹× archive_timeoutÀÌ ÀûÀýÈ÷ ¼³Á¤µÇ¾îÀÖ´ÂÁö È®ÀÎÇØ Áֽʽÿä(Section 23.3.1¸¦ ÂüÁ¶ÇØ Áֽʽÿä).
ÁÖ ¼¹ö·Î ±âº» ¹é¾÷À» ÀÛ¼º(Section 23.3.2¸¦ ÂüÁ¶ÇØ Áֽʽÿä)Çϰí, ½ºÅĹÙÀÌ ¼¹ö·Î ÀÌ µ¥ÀÌÅ͸¦ ·ÎµåÇØ Áֽʽÿä.
·ÎÄà WAL ¾îÄ«À̺ê·ÎºÎÅÍ ½ºÅÙ¹ÙÀÌ ¼¹öÀÇ º¹±¸¸¦ ½ÃÀÛÇϰí, »çÀü¿¡ ¼³¸íÇÑ ´ë±â¸¦ ½ÇÇàÇÏ´Â restore_command¸¦ ÁöÁ¤ÇÑrecovery.conf¸¦ »ç¿ëÇϽʽÿä. (Section 23.3.3¸¦ ÂüÁ¶ÇØ Áֽʽÿä. )
º¹±¸´Â WAL ¾îÄ«À̺긦 read¸¸À» ´Ù·ì´Ï´Ù. ÀÌ ¶§¹®¿¡, WAL ÆÄÀÏÀÌ ½ºÅĹÙÀÌ ½Ã½ºÅÛ¿¡ Ä«ÇÇµÈ ÈÄ, ½ºÅĹÙÀÌ µ¥ÀÌÅͺ£À̽º ¼¹ö¿¡ ÀÇÇÑ read¿Í µ¿½Ã¿¡ WAL ÆÄÀÏÀ» Å×ÀÌÇÁ¿¡ º¹Á¦ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ¿Í °°ÀÌ, °í°¡¿ë¼º ½ºÅĹÙÀÌ ¼¹öÀÇ ½ÇÇàÀº Àå±â ÀçÇØ º¹±¸ ¸ñÀûÀ» À§Çؼ º¸°ü°ú µ¿½Ã¿¡ ½ÇÇàµÉ ¼ö ÀÖ½À´Ï´Ù.
Å×½ºÆ®¸¦ À§ÇØ, ÁÖ ¼¹ö¿Í ½ºÅĹÙÀÌ ¼¹ö¸¦ °°Àº ½Ã½ºÅÛÀ¸·Î °¡µ¿½Ãų ¼ö ÀÖ½À´Ï´Ù. À̰Ϳ¡ ÀÇÇØ ¼¹ö °ÇÀü¼ºÀÌ Çâ»óÇϰųª, ¼³¸íÇÑ HA·Î ÀÛµ¿ÇÏÁöµµ ¾Ê½À´Ï´Ù.
ÁÖ ¼¹ö¿¡ Àå¾Ö°¡ ÀϾ¸é, ½ºÅĹÙÀÌ ¼¹ö´Â failover 󸮸¦ ½ÃÀÛÇØ¾ß ÇÕ´Ï´Ù.
½ºÅĹÙÀÌ ¼¹ö¿¡ Àå¾Ö°¡ ÀϾ¸é, failover´Â ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù. ¾à°£ÀÇ ½Ã°£ÀÌ È帣°í, ½ºÅĹÙÀÌ ¼¹ö¸¦ Àç½ÃÀÛÇÒ ¼ö ÀÖÀ¸¸é, Àç½ÃÀÛ °¡´ÉÇÑ º¹±¸¸¦ À§ÇØ, º¹±¸ ÇÁ·Î¼¼½ºµµ Áï¼®¿¡¼ Àç½ÃÀÛÇÕ´Ï´Ù. ½ºÅĹÙÀÌ ¼¹ö¸¦ Àç½ÃÀÛÇÒ ¼ö ¾øÀ¸¸é, ¿ÏÀüÈ÷ »õ·Î¿î ½ºÅĹÙÀÌ ¼¹ö ÀνºÅϽº°¡ ÀÛ¼ºµÇ¾î¾ß¸¸ ÇÕ´Ï´Ù.
ÁÖ ¼¹ö¿¡ Àå¾Ö°¡ ÀϾ°í, ±× ÈÄ °ð¹Ù·Î Àç½ÃÀÛÇßÀ» °æ¿ì, ´õÀÌ»ó ÁÖ ¼¹ö°¡ ¾Æ´ÔÀ» ¾Ë¸®´Â ¸ÅÄ¿´ÏÁòÀÌ ÇÊ¿äÇÕ´Ï´Ù. À̰ÍÀº STONITH (Shoot the Other Node In The Head)·Î ¾Ë·ÁÁ® ÀÖ½À´Ï´Ù. À̴ ȥ¶õ°ú ÃÖ¾ÇÀÇ °æ¿ì µ¥ÀÌÅÍ ¼Õ½ÇÀ» °¡Á®¿À´Â, µÎ ½Ã½ºÅÛÀÌ ÀÚ½ÅÀ» ÁÖ ¼¹ö·Î ÀνÄÇÏ´Â »óȲÀ» ¸·±â À§Çؼ ÇÊ¿äÇÕ´Ï´Ù.
¸¹Àº failover½Ã½ºÅÛ¿¡¼´Â 2°³ÀÇ ½Ã½ºÅÛÀ» »ç¿ëÇÕ´Ï´Ù. heartbeat ¸ÅÄ¿´ÏÁò¿Í °°Àº ¹æ¹ýÀ¸·Î ÁÖ ¼¹ö¿Í ½ºÅĹÙÀÌ ¼¹ö¸¦ Á¢¼ÓÇØ, ¾çÀÚÀÇ Á¢¼Ó¼º°ú ÇÁ¶óÀ̸Ӹ®ÀÇ ½ÇÇà ´É·ÂÀ» °è¼ÓÀûÀ¸·Î È®ÀÎÇÕ´Ï´Ù. ¶ÇÇÑ, Á¦3ÀÇ ½Ã½ºÅÛ(Áõ¾ð ¼¹ö·Î ºÒ¸³´Ï´Ù)À» »ç¿ëÇØ, ºÎÀûÀýÇÑ failoverµîÀÇ »óȲÀ» ¸·À» ¼öµµ ÀÖ½À´Ï´Ù. ±×·¯³ª ÇÑÃþ ´õ º¹ÀâÇØ Áö±â ¶§¹®¿¡, ÃæºÐÇÑ ÁÖÀÇ¿Í ¾ö¹ÐÇÑ °ËÁõÀ» ÇÏÁö ¾Ê´Â ÇÑ ½Ç½ÃÇÏ´Â Àǹ̰¡ ¾ø½À´Ï´Ù.
½ºÅĹÙÀÌ ¼¹ö¿¡¼ failover°¡ ¹ß»ýÇÑ °æ¿ì, ¿î¿ë °¡´ÉÇÑ ¼¹ö´Â 1°³ ¹Û¿¡ ¾ø½À´Ï´Ù. À̰ÍÀº ÅðÈ »óÅ·μ ¾Ë·ÁÁý´Ï´Ù. ÀÌÀüÀÇ ½ºÅĹÙÀÌ ¼¹ö´Â ÁÖ ¼¹ö°¡ µÇ°í, ÀÌÀüÀÇ ÁÖ ¼¹ö´Â Á¤ÁöµÇ¾ú°í, Á¤Áö »óÅ·Π¸Ó¹° °ÍÀÔ´Ï´Ù. ÀϹÝÀûÀÎ ¿î¿ë»óÅ·ΠµÇµ¹¸®·Á¸é, ½ºÅĹÙÀÌ ¼¹ö¸¦ ÀçÀÛ¼ºÇØ¾ß ÇÕ´Ï´Ù. ÀÛµ¿ °¡´ÉÇÑ ÀÌÀüÀÇ ÁÖ ¼¹ö³ª Á¦£³, ¶Ç´Â ½Å±Ô ½Ã½ºÅÛÀ» »ç¿ëÇØµµ »ó°ü¾ø½À´Ï´Ù. ¿Ï·áµÇ¸é, ÁÖ ¼¹ö¿Í ½ºÅĹÙÀÌ ¼¹öÀÇ ¿ªÇÒÀÌ ¹Ù²î¾ú´Ù°í °£ÁÖÇÒ ¼ö ÀÖ½À´Ï´Ù. »õ·Î¿î ½ºÅĹÙÀÌ ¼¹ö¸¦ ÀçÀÛ¼ºÇÒ ¶§±îÁö Á¦3ÀÇ ¼¹ö¸¦ »ç¿ëÇØ »õ·Î¿î ÁÖ ¼¹öÀÇ ¹é¾÷À» Á¦°øÇÏ´Â °ÍÀ» ¼±ÅÃÇÏ´Â »ç¶÷µµ ÀÖÁö¸¸, À̰ÍÀÌ ½Ã½ºÅÛ ¼³Á¤°ú ¿î¿ë ¼ø¼¸¦ º¹ÀâÇÏ°Ô ¸¸µì´Ï´Ù.
ÁÖ ¼¹ö¿¡¼ ½ºÅĹÙÀÌ ¼¹ö·ÎÀÇ º¯È¯Àº ºü¸¦ ¼ö ÀÖ¾î, failover Ŭ·¯½ºÅ͸¦ ÀçÁغñÇϴµ¥ ´Ù¼Ò ½Ã°£ÀÌ °É¸³´Ï´Ù. °¢°¢ÀÇ ½Ã½ºÅÛÀº º¸¼ö¸¦ À§Çؼ Á¤±âÀûÀ¸·Î Á¤ÁöÇÒ ¼ö ÀÖÀ¸¹Ç·Î, ÁÖ ¼¹ö¿¡¼ ½ºÅĹÙÀÌ ¼¹ö·ÎÀÇ Á¤±âÀû º¯È¯Àº À¯¿ëÇÕ´Ï´Ù. À̰ÍÀº µ¿½Ã¿¡ ÇÊ¿äÇÒ ¶§, failover ¸ÅÄ¿´ÏÁòÀÌ ½ÇÁ¦·Î °¡´ÉÇÑ Áö¸¦ È®ÀÎÇÏ´Â ½ÃÇèÀ̶ó°í ÇØµµ µµ¿òÀÌ µË´Ï´Ù. °ü¸® ¼ø¼ÀÇ ¹®¼È¸¦ ±ÇÇÕ´Ï´Ù.
Áö±Ý±îÁö ¼³¸íÇÑ °Íó·³PostgreSQL´Â ÆÄÀÏ º£À̽ºÀÇ log shippingÀ» Á÷Á¢ Áö¿øÇÕ´Ï´Ù. ±â·Ï º£À̽ºÀÇ log shippingÀ» ½ÇÇàÇÏ´Â Àϵµ °¡´ÉÇÏÁö¸¸, À̰ÍÀº µ¶ÀÚÀûÀÎ °³¹ßÀÌ ÇÊ¿äÇÕ´Ï´Ù.
¿ÜºÎ ÇÁ·Î±×·¥À¸·ÎºÎÅÍ, WALÀÇ ÇöÀçÀÇ Á¾·áÁ¡ÀÇ ÆÄÀϸí°ú Á¤È®ÇÑ ¹ÙÀÌÆ® ¿ÀÇÁ¼Â(offset)¸¦ ã¾Æ³»´Â pg_xlogfile_name_offset()ÇÔ¼ö(Section 9.20¸¦ ÂüÁ¶)¸¦ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù.
±×¸®°í WAL ÆÄÀÏ¿¡ Á÷Á¢ ¾×¼¼½º ÇØ, Á÷ÀüÀÇ WAL Á¾·áÁ¡À¸·ÎºÎÅÍ ÇöÀçÀÇ Á¾·áÁ¡±îÁöÀÇ µ¥ÀÌÅ͸¦ ½ºÅĹÙÀÌ ¼¹ö¿¡ Ä«ÇÇÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÀÌ ¹æ¹ý¿¡¼ µ¥ÀÌÅÍ ¼Õ½Ç ±â°£Àº Ä«ÇÇ Ã³¸® ÇÁ·Î±×·¥ÀÇ ½ÇÇà ÁֱⰡ µË´Ï´Ù.
¾ÆÁÖ ÀÛÁö¸¸, °Á¦ÀûÀ¸·Î ºÎºÐ »ç¿ëµÈ ¼¼±×¸ÕÆ® ÆÄÀÏÀ» º¸°üÇϱâ À§ÇÑ ¾µµ¥¾ø´Â ´ë¿ªÆøÀº ¾ø½À´Ï´Ù.
½ºÅĹÙÀÌ ¼¹öÀÇrestore_command½ºÅ©¸³Æ®°¡ WAL ÆÄÀÏ Àüü¸¦ °è¼Ó ´Ù·é ´Ù´Â °ÍÀ» ÁÖÀÇÇØ Áֽʽÿä.
ÀÌ ¶§¹®¿¡, ¼ø¼´ë·Î Ä«ÇÇÇÑ µ¥ÀÌÅÍ´Â º¸ÅëÀº ½ºÅĹÙÀÌ ¼¹ö·Î ÀÌ¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
ÁÖ ¼¹ö°¡ Á¤ÁöÇØ Àç½ÃÀÛÇϱâ Àü±îÁö ¸¶Áö¸· ºÎºÐÀûÀÎ WAL ÆÄÀÏÀÌ ½ºÅĹÙÀÌ ¼¹ö¿¡°Ô °Ç³×Áú °æ¿ì¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÀÌ ¶§¹®¿¡, ÀÌ Ã³¸®¸¦ Á¦´ë·Î ½ÇÇàÇϱâ À§Çؼ´Â µ¥ÀÌÅÍ Ä«ÇÇ ÇÁ·Î±×·¥°ú restore_command½ºÅ©¸³Æ®¿ÍÀÇ ¿¬°è°¡ ÇÊ¿äÇÕ´Ï´Ù.
warm standby ±¸¼º¿¡¼ ÁÖ ¼¹ö·ÎºÎÅÍ Á¤±âÀûÀÎ ±âº» ¹é¾÷À» ½Ç½ÃÇÏ´Â ¼ö°í¸¦ »ý·«ÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ë½Å¿¡, ½ºÅĹÙÀÌ ¼¹öÀÇ ÆÄÀÏÀ» ¹é¾÷ ÇÏ´Â °ÍÀ¸·Î ±âº» ¹é¾÷À» ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ °³³äÀº Áõ°¡µÇ´Â ¾÷µ¥ÀÌÆ®µÈ ¹é¾÷, ·Î±× º¯°æ ´©Àû, ¶Ç´Â °£´ÜÈ÷ º¯°æÀÇ ´©ÀûÀ̶ó°í ¸»ÇØÁý´Ï´Ù.
ÁÖ ¼¹ö·ÎºÎÅÍÀÇ log shippingÀ» ó¸®Çϰí ÀÖ´Â µ¿¾È¿¡, ½ºÅĹÙÀÌ ¼¹öÀÇ µ¥ÀÌÅÍ µð·ºÅ丮¸¦ ¹é¾÷ ÇßÀ» °æ¿ì, ±× µ¥ÀÌÅ͸¦ ¸®·Îµå ÇØ, ½ºÅĹÙÀÌ ¼¹öÀÇ º¹±¸ 󸮸¦ Á÷ÀüÀÇ Àç½ÃÀÛÁ¡À¸·ÎºÎÅÍ ½ÃÀÛ ÇÒ ¼ö ÀÖ½À´Ï´Ù. Àç½ÃÀÛÁ¡ ÀÌÀüÀÇ WAL ÆÄÀÏÀ» º¸°ü À¯ÁöÇÒ ÇÊ¿ä´Â ¾ø¾îÁý´Ï´Ù. º¹±¸°¡ ÇÊ¿äÇÏ°Ô µÇ¸é, ¿ø·¡ ±âº» ¹é¾÷À¸·ÎºÎÅÍÀÇ º¹±¸º¸´Ù Á¡Â÷ Áõ°¡µÈ ¾÷µ¥ÀÌÆ®µÈ ¹é¾÷À¸·ÎºÎÅÍÀÇ º¹±¸°¡ ºü¸£°Ô ÀÌ·ç¾î Áú °ÍÀÔ´Ï´Ù.
½ºÅĹÙÀÌ ¼¹ö´Â "Ȱµ¿ »óÅÂ"°¡ ¾Æ´Ï±â ¶§¹®¿¡, ¹é¾÷ 󸮸¦ °ü¸®Çϱâ À§ÇØpg_start_backup()¿Í pg_stop_backup()¸¦ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
¾î¶»°Ô WAL ¼¼±×¸ÕÆ® ÆÄÀÏÀ» º¸°üÇØ º¹±¸ °¡´ÉÇÑ ¹é¾÷À» °¡Áö´Â °¡´Â °ü¸®ÀÚ¿¡°Ô ´Þ·ÁÀÖ½À´Ï´Ù.
½ºÅĹÙÀÌ ¼¹ö·Îpg_controldata¸¦ ½ÇÇàÇØ, Á¦¾î ÆÄÀÏÀ» °Ë»çÇϰí,
ÇöÀçÀÇ Ã¼Å© Æ÷ÀÎÆ® WAL À§Ä¡¸¦ °áÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.