Oracle/MySQL °ü·Ã °Ô½ÃÆÇ |
---|
2002/08/06(17:44) from 61.80.99.240 | |
ÀÛ¼ºÀÚ : °ÁÙ±â (jkkang65@hanmail.net) | Á¶È¸¼ö : 4344 , ÁÙ¼ö : 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] Âü°í. |
![]() ![]() ![]() ![]() |
![]() ![]() ![]() |