Oracle/MySQL °ü·Ã °Ô½ÃÆÇ

2002/08/06(17:44) from 61.80.99.240
ÀÛ¼ºÀÚ : °­ÁÙ±â (jkkang65@hanmail.net) Á¶È¸¼ö : 4048 , ÁÙ¼ö : 165
Re: [MySQL] ÀϹÝÀûÀÎ ¹®Á¦ ÇØ°á ¹æ¹ý
¹ø¿ªÀÚ : ¹®ÅÂÁØ(taejun@hitel.net)


17. ÀϹÝÀûÀÎ ¹®Á¦ ÇØ°á ¹æ¹ý

17. 1. µ¥ÀÌÅͺ£À̽º º¹»ç(º¹Á¦?)

µ¥ÀÌÅͺ£À̽º¸¦ º¹»çÇÏ´Â °¡Àå ÀϹÝÀûÀÎ ¹æ¹ýÀº ¾÷µ¥ÀÌÆ® ·Î±×¸¦ ÀÌ¿ëÇÏ´Â
°ÍÀÌ´Ù. 9.2 [The update log] Âü°í. ÀÌ °æ¿ì ¸¶½ºÅÍ·Î ÀÛµ¿ÇÏ´Â µ¥ÀÌÅͺ£
À̽º Çϳª(µ¥ÀÌÅÍ°¡ º¯°æµÈ °÷)¿Í ½½·¹À̺ê·Î ÀÛµ¿ÇÏ´Â ´Ù¸¥ ÇϳªÀÇ µ¥ÀÌ
Åͺ£À̽º°¡ ÇÊ¿äÇÏ´Ù. ½½·¹À̺긦 ¾÷µ¥ÀÌÆ®ÇÏ·Á¸é ´ÜÁö mysql < update_lo
gÀ» ÇÏ¸é µÈ´Ù. ½½·¹ÀÌµå µ¥ÀÌÅͺ£À̽º¿¡ ¸Â´Â È£½ºÆ®, À¯Àú, Æнº¿öµå ¿É
¼ÇÀ» ÁöÁ¤ÇÑ´Ù. ±×¸®°í ÀԷ°ªÀ¸·Î ¸¶½ºÅÍ µ¥ÀÌÅͺ£À̽ºÀÇ ¾÷µ¥ÀÌÆ® ·Î±×
¸¦ »ç¿ëÇÑ´Ù.

Å×ÀÌºí¿¡¼­ »èÁ¦ÇÑ °ÍÀÌ ¾ø´Ù¸é, ¸¶Áö¸·À¸·Î º¹»ç¸¦ ÇÑ ÈÄ (¸¶Áö¸·À¸·Î º¹
»çÇÑ ½Ã°£À» ºñ±³) Å×ÀÌºí¿¡¼­ ÀԷµǰųª º¯°æµÈ ¿­À» ã¾Æ³»±â À§ÇØ TIM
ESTAMP Ä÷³À» »ç¿ëÇÒ ¼ö ÀÖ°í ¹Ì·¯¸µµÇ´Â µ¥ÀÌÅͺ£À̽º¿¡ º¯°æµÈ ÀڷḸ
º¹»ç¸¦ ÇÑ´Ù.

¾÷µ¥ÀÌÆ® ·Î±×(for deletes)¿Í timestamps(on both sides)¸¦ °°ÀÌ »ç¿ëÇÏ
¿© µÎ°¡Áö ¹æ¹ýÀ¸·Î ¾÷µ¥ÀÌÆ®ÇÏ´Â ½Ã½ºÅÛÀ» ¸¸µé ¼ö ÀÖ´Ù. ±×·¯³ª ÀÌ·± °æ
¿ì µÎ°¡Áö ends(?)¿¡¼­ º¯°æµÈ µ¿ÀÏÇÑ µ¥ÀÌÅÍ¿¡¼­ Ãæµ¹À» °ü¸®ÇÒ ¼ö ÀÖ¾î
¾ß ÇÑ´Ù. ¾Æ¸¶µµ ¾î¶² °ÍÀÌ ¾÷µ¥ÀÌÆ®µÇ¾ú´ÂÁö °áÁ¤Çϱâ À§ÇØ ¿¹Àü ¹öÀüÀ»
À¯ÁöÇÏ°í ½ÍÀ» °ÍÀÌ´Ù.

It is possible to make a two-way updating system using both the updat
e log (for deletes) and timestamps (on both sides). But in that case
you must be able to handle conflicts when the same data have been cha
nged in both ends. You probably want to keep the old version to help
with deciding what has been updated.

ÀÌ °æ¿ì º¹»ç(º¹Á¦)´Â SQL¹®À¸·Î ÀÌ·ç¾îÁö±â ¶§¹®¿¡, µ¥ÀÌÅͺ£À̽º¸¦ ¾÷µ¥
ÀÌÆ®ÇÏ´Â ¹®Àå¿¡¼­ ´ÙÀ½ÀÇ ÇÔ¼ö¸¦ »ç¿ëÇؼ­´Â ¾ÈµÈ´Ù; ¿©±â¿¡¼­´Â ¿øº» µ¥
ÀÌÅͺ£À̽º¿Í µ¿ÀÏÇÑ °ªÀ» ¹ÝȯÇÏÁö ¾ÊÀ» ¼ö ÀÖ´Ù:

    DATABASE()
    GET_LOCK() and RELEASE_LOCK()
    RAND()
    USER(), SYSTEM_USER() or SESSION_USER()
    VERSION()

timestamp´Â ÇÊ¿äÇÑ °æ¿ì¿¡ ¹Ì·¯µÇ´Â °÷À¸·Î º¸³»±âÁö ¶§¹®¿¡ ¸ðµç time
ÇÔ¼ö´Â ¾ÈÀüÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ´Ù. LAST_INSERT_ID() ¶ÇÇÑ ¾ÈÀüÇÏ°Ô »ç¿ëÇÒ
¼ö ÀÖ´Ù.

All time functions are safe to use, as the timestamp is sent to the m
irror if needed. LAST_INSERT_ID()is also safe to use.


17.2 µ¥ÀÌÅͺ£À̽º ¹é¾÷

mysql Å×À̺íÀº ÆÄÀÏ·Î ÀúÀåµÇ±â ¶§¹®¿¡ ¹é¾÷ÇϱⰡ ½±´Ù.  ÀÏ°üµÈ ¹é
¾÷ ÀÛ¾÷À» À§ÇØ °ü·ÃµÈ Å×ÀÌºí¿¡ LOCK TABLES¸¦ ½ÇÇàÇÏÀÚ. 7.23 [LOC
K TABLES/UNLOCK TABLES syntax]¸¦ Âü°í. ´ÜÁö Àб⠶ô¸¸ÀÌ ÇÊ¿äÇÏ
´Ù; µ¥ÀÌÅͺ£À̽º µð·ºÅ丮ÀÇ ÆÄÀÏ º¹»çº»À» ¸¸µå´Â µ¿¾È¿¡µµ ´Ù¸¥ ½º
·¹µå¿¡¼­´Â Å×ÀÌºí¿¡ ÁúÀǸ¦ °è¼Ó ÇÒ ¼ö ÀÖ´Ù. SQL ·¹º§ÀÇ ¹é¾÷À» ÇÏ
°íÀÚ ÇÑ´Ù¸é SELECT INTO OUTFILEÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.

µ¥ÀÌÅͺ£À̽º¸¦ ¹é¾÷ÇÏ´Â ´Ù¸¥ ¹æ¹ýÀº mysqldump ÇÁ·Î±×·¥À» »ç¿ëÇÏ´Â °Í
ÀÌ´Ù:

µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇÑ Ç® ¹é¾÷ ½ÇÇà:
    
shell> mysqldump --tab=/path/to/some/dir --lock-tables --opt
    
    ¼­¹ö¿¡¼­ ¾÷µ¥ÀÌÆ®¸¦ ÇÏÁö ¾Ê´ÂÇÑ °£´ÜÇÏ°Ô ¸ðµç Å×À̺í ÆÄÀÏ(`*.frm
    ', `*.ISD' , `*.ISM' ÆÄÀÏ)À» º¹»çÇÒ ¼ö ÀÖ´Ù. mysqld°¡ ½ÇÇàµÇ°í
    ÀÖÀ¸¸é ¸ØÃß¾î¾ß ÇÑ´Ù. ±×·¯°í³ª¼­ --log-update ¿É¼ÇÀ¸·Î ´Ù½Ã ½ÃÀÛ
    ÇÏÀÚ. ''hostname.n'ÀÇ Çü½ÄÀ» °¡Áø ·Î±× ÆÄÀÏÀÌ »ý¼ºµÉ °ÍÀÌ´Ù. nÀº
    mysqladmin refresh, mysqladmin flush-logs, the FLUSH LOGS ¹®, ¶Ç
    ´Â ¼­¹ö¸¦ Àç½ÃÀÛÇÒ¶§¸¶´Ù Áõ°¡ÇÏ´Â ¼ýÀÚÀÌ´Ù. ÀÌ·¸°Ô »ý±ä ·Î±× ÆÄ
    ÀÏÀ» ÀÌ¿ëÇØ mysqldump¸¦ ¼öÇàÇÏ°í ³ª¼­ µ¥ÀÌÅͺ£À̽º¿¡ º¯È­µÈ ³»¿ë
    À» º¹»ç(º¹Á¦)Çϴµ¥ ÇÊ¿äÇÑ Á¤º¸¸¦ ¾òÀ» ¼ö ÀÖ´Ù.
    
º¹¿øÇÏ°íÀÚ ÇÑ´Ù¸é, ¸ÕÀú isamchk -rÀ» »ç¿ëÇØ Å×À̺íÀ» º¹±¸ÇÏÀÚ. ¸ðµç
°æ¿ì 99.9%°¡ Á¦´ë·Î ¼öÇàµÈ´Ù. isamchk°¡ ½ÇÆÐÇÏ¸é ´ÙÀ½ÀÇ °úÁ¤´ë·Î µû¸£
ÀÚ:

       
    ±âÁ¸ÀÇ mysqldump ¹é¾÷À» º¹¿øÇÑ´Ù.
    ¾÷µ¥ÀÌÆ® ·Î±×¿¡¼­ ¾÷µ¥ÀÌÆ®¸¦ ´Ù½Ã ¼öÇàÇϱâ À§ÇØ ´ÙÀ½ÀÇ ¸í·ÉÀ» ½Ç
    ÇàÇÑ´Ù:
    
shell> ls -1 -t -r hostname.[0-9]* | xargs cat | mysql

ls´Â Á¤È®ÇÑ ¼ø¼­´ë·Î ·Î±× ÆÄÀÏÀ» °¡Á®¿À´Âµ¥ »ç¿ëµÈ´Ù.

¶ÇÇÑ SELECT * INTO OUTFILE 'file_name' FROM tbl_nameÀ» ÀÌ¿ëÇØ ¼±ÅÃÀû
ÀÎ ¹é¾÷À» ÇÒ ¼ö ÀÖÀ¸¸ç ·¹Äڵ尡 Áߺ¹µÇ´Â °ÍÀ» ¹æÁöÇϱâ À§ÇØ  LOAD DAT
A INFILE 'file_name' REPLACE ...  À» ÀÌ¿ëÇØ º¹¿øÇÒ ¼ö ÀÖ´Ù. ÀÌ°æ¿ì¿¡
´Â Å×ÀÌºí¿¡¼­ PRIMARY Å°³ª UNIQUE Å°°¡ ÇÊ¿äÇÏ´Ù. REPLACE Å°¿öµå´Â »õ
·Î¿î ·¹Äڵ忡¼­ unique Å° °ªÀÌ °°Àº ÀÌÀüÀÇ ·¹Äڵ尡 Áߺ¹µÇ´Â °æ¿ì ÀÌ
ÀüÀÇ ·¹Äڵ带 »õ·Î¿î ·¹ÄÚµå·Î ±³Ã¼ÇÑ´Ù.


17.3 °°Àº ¸Ó½Å¿¡¼­ ¿©·¯°³ÀÇ mysqld ¼­¹ö ½ÇÇàÇϱâ
°°Àº ¸Ó½Å¿¡¼­ ´ÙÁßÀÇ ¼­¹ö¸¦ »ç¿ëÇÏ±æ ¿øÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î, ÀÌ
ÀüÀÇ ¼­¹ö¸¦ ±×´ë·Î µÎ°í »õ·Î¿î mysql ¸±¸®Á Å×½ºÆÃÇÏ´Â °æ¿ì°¡
ÀÖÀ» ¼ö ÀÖ´Ù. ¶Ç´Â ´Ù¸¥ °í°´µé¿¡°Ô µ¶¸³ÀûÀÎ mysql ¼³Ä¡¸¦ Á¦°øÇϱæ
¿øÇÏ´Â ÀÎÅÍ³Ý ¼­ºñ½º Á¦°øÀÚÀÏ ¼ö ÀÖ´Ù.

´ÙÁß ¼­¹ö¸¦ »ç¿ëÇÏ±æ ¿øÇϸé, °¡Àå ½¬¿î ¹æ¹ýÀº ´Ù¸¥ TCP/IP Æ÷Æ®¿Í ¼ÒÄÏ
ÆÄÀÏ·Î ¼­¹ö¸¦ ÄÄÆÄÀÏÇؼ­ ¼­¹ö¿¡¼­ µ¿ÀÏÇÑ TCP/IP Æ÷Æ®³ª ¼ÒÄÏ ÆÄÀÏÀ» û
ÃëÇÏÁö ¾Êµµ·Ï ÇÒ ¼ö ÀÖ´Ù.

ÀÌ¹Ì »ç¿ëÇÏ°í ÀÖ´Â ¼­¹ö°¡ ±âº» Æ÷Æ®¿Í ¼ÒÄÏ ÆÄÀÏ·Î ±¸¼ºµÇ¾î ÀÖ´Ù°í °¡
Á¤Çغ¸ÀÚ. ±×·¯¸é ´ÙÀ½°ú °°Àº ¸í·ÉÀ¸·Î »õ·Î¿î ¼­¹ö¸¦ ¼³Á¤ÇÏÀÚ:

shell> ./configure  --with-tcp-port=port_number \
            --with-unix-socket=file_name \
            --prefix=/usr/local/mysql-3.22.9

¿©±â¼­ port_number¿Í file_nameÀº ±âº» Æ÷Æ® ¼ýÀÚ ¹× ¼ÒÄÏ ÆÄÀÏÀÇ °æ·Î¿Í
´Â ´Þ¶ó¾ßÇϸç, --prefix °ªÀº ÇöÀç ¼³Ä¡µÇ¾î ÀÖ´Â mysql°ú´Â ´Ù¸¥ µð·ºÅä
¸®¸¦ ÁöÁ¤ÇØ¾ß ÇÑ´Ù.

Here port_number and file_name should be different than the default p
ort number and socket file pathname, and the --prefix value should sp
ecify an installation directory different than the one under which th
e existing MySQL installation is located.

´ÙÀ½ÀÇ ¸í·ÉÀ¸·Î ÇöÀç ½ÇÇàµÇ°í ÀÖ´Â mysql ¼­¹öÀÇ ¼ÒÄÏ°ú ÆÄÀÏÀ» È®ÀÎÇÒ
¼ö ÀÖ´Ù:

shell>; mysqladmin -h hostname --port port_number variables

»ç¿ëÇÏ°í ÀÖ´Â Æ÷Æ®¿¡¼­ ½ÇÇàµÇ°í ÀÖ´Â mysql ¼­¹ö°¡ ÀÖ´Ù¸é, ¼ÒÄÏ À̸§À»
Æ÷ÇÔÇØ mysqlÀÇ °¡Àå Áß¿äÇÑ ¼³Á¤ º¯¼öÀÇ ¸ñ·ÏÀ» ¾Ë ¼ö ÀÖ´Ù. ´ÙÁß mysqld
¼­¹ö¸¦ ½ÃÀÛÇÏ°í ÁßÁö½ÃÅ°±â À§ÇØ ½Ã½ºÅÛÀÇ ÃʱâÈ­ ½ºÅ©¸³Æ®(ÀϹÝÀûÀ¸·Î
''mysql.server')¸¦ ¼öÁ¤ÇØ¾ß ÇÑ´Ù.

´Ù¸¥ Æ÷Æ®¿Í ¼ÒÄÏÀ¸·Î ¼­¹ö¸¦ ½ÃÀÛÇϱâ À§ÇØ »õ·Î¿î mysql ¼­¹ö¸¦ ÀçÄÄÆÄ
ÀÏÇÒ ÇÊ¿ä´Â ¾ø´Ù. safe_mysqld¸¦ ½ÃÀÛÇÒ ¶§ ¿É¼ÇÀ¸·Î Æ÷Æ®¿Í ¼ÒÄÏÀ» ÁöÁ¤
ÇÒ ¼ö ÀÖ´Ù:

shell>; /path/to/safe_mysqld --socket=file-name --port=file-name

µ¿ÀÏÇÑ µ¥ÀÌÅͺ£À̽º µð·ºÅ丮¿¡¼­ ·Î±×¸¦ ±â·ÏÇϵµ·Ï Çϸ鼭 ¶Ç ´Ù¸¥ ¼­
¹ö¸¦ ½ÇÇàÇÏ°íÀÚ ÇÑ´Ù¸é, safe_mysqld ¿¡ --log ¿Í --log-update ¸¦ ÀÌ¿ë
ÇØ ·Î±× ÆÄÀÏÀÇ À̸§À» ÁöÁ¤ÇØ ÁÖ¾î¾ß ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é µÎ ¼­¹ö°¡ °°
Àº ·Î±× ÆÄÀÏ¿¡ ±â·ÏÀ» ÇÏ·Á°í ÇÒ °ÍÀÌ´Ù.

ÁÖÀÇ : ÀϹÝÀûÀ¸·Î µ¿ÀÏÇÑ µ¥ÀÌÅͺ£À̽ºÀÇ ÀڷḦ ¾÷µ¥ÀÌÆ®ÇÏ´Â µÎ°³ÀÇ ¼­
¹ö¸¦ »ç¿ëÇؼ­´Â ¾ÈµÈ´Ù! ¿î¿µÃ¼Á¦¿¡¼­ fault-free ½Ã½ºÅÛ ·ÎÅ·(locking)
À» Áö¿øÇÏÁö ¾Ê´Â´Ù¸é,  ÁÁÁö ¾ÊÀº °á°ú¸¦ º¸°Ô µÉ °ÍÀÌ´Ù. (** fault-fre
e¶õ Á¤È®È÷ ¹«¾ùÀÎÁö ¸ð¸£°Ú±º¿ä. ¾Æ¸¶µµ ¶ôÀ» °Å´Âµ¥ ¹®Á¦°¡ ÀÖ´Ù¸é ±×
¶ôÀ» ÇØÁ¦ÇÏ´Â °ÍÀ¸·Î º¸ÀÔ´Ï´Ù. **)

µÎ¹øÀç ¼­¹ö¿¡¼­ ´Ù¸¥ µ¥ÀÌÅͺ£À̽º µð·ºÅ丮¸¦ »ç¿ëÇϱ⠿øÇϸé safe_mys
qld ¿¡ --datadir=path ¿É¼ÇÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.

´Ù¸¥ Æ÷Æ®¿¡¼­ ½ÇÇàÁßÀÎ mysql ¼­¹ö¿¡ Á¢±ÙÇÏ±æ ¿øÇÑ´Ù¸é ´ÙÀ½ÀÇ ¹æ¹ýÀ»
»ç¿ëÇÒ ¼ö ÀÖ´Ù:

       ¤· Ŭ¶óÀ̾ðÆ®¿¡¼­ ´ÙÀ½ÀÇ ¿É¼ÇÀ» °¡Áö°í ½ÃÀÛ. --host 'hostname
'  --port=port-numer or [--host localhost] --socket=file-name.
       ¤· C³ª ÆÞ ÇÁ·Î±×·¥¿¡¼­ mysql ¼­¹ö¿¡ Á¢¼ÓÇÒ ¶§ Æ÷Æ®¿Í ¼ÒÄÏ ÀÎ
ÀÚ¸¦ ÁØ´Ù.
       ¤· Ŭ¶óÀ̾ðÆ®¸¦ ½ÃÀÛÇϱâ Àü¿¡ MYSQL_UNIX_PORT ¿Í MYSQL_TCP_PO
RT ȯ°æ º¯¼ö¸¦ ¼³Á¤. ÀϹÝÀûÀ¸·Î ƯÁ¤ÇÑ ¼ÒÄÏÀ̳ª Æ÷Æ®¸¦ »ç¿ëÇϸé,  'lo
gin' ÆÄÀÏ¿¡ ȯ°æ º¯¼ö¸¦ ¼³Á¤ÇÏÀÚ. 12.1 [Programs] Âü°í.
      ¤· Ȩ µð·ºÅ丮¿¡¼­ '.my.cnf' ÆÄÀÏ¿¡ ±âº» ¼ÒÄÏ°ú TCP/IP ¼ÒÄÏÀ»
ÁöÁ¤.  4.15.4 [Option files] Âü°í.

Modify Delete Post Reply Backward Forward List
Powered by Kang Jul Ki