MySQL Cluster
Introduction ¶MySQL Ŭ·¯½ºÅÍ´Â ºÐ»ê ÄÄÇ»Æà ȯ°æ¿¡¼ high-availability¿Í high-redundancy¸¦ äÅÃÇÏ¿´´Ù. MySQL Ŭ·¯½ºÅÍ´Â NDB Ŭ·¯½ºÅÍ ½ºÅ丮Áö ¿£ÁøÀ» »ç¿ëÇÏ¿©, Ŭ·¯½ºÅÍ¿¡¼ ¿©·¯ °³ÀÇ ¼¹ö°¡ ÇÔ²² µ¹¾Æ°¡µµ·Ï ÇÑ´Ù. MySQL Ŭ·¯½ºÅÍ°¡ Áö¿øÇÏ´Â ¿î¿µ üÁ¦´Â Linux, Mac OS X, Solaris µî ÀÌ´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ´ÙÀ½ »çÀÌÆ®¸¦ Âü°í ÇÏ±æ ¹Ù¶õ´Ù.
http://www.mysql.com/products/cluster
MySQL Cluster Overview ¶MySQL Ŭ·¯½ºÅÍ´Â share-nothing ½Ã½ºÅÛ¿¡¼ in-memory µ¥ÀÌÅÍ º£À̽ºÀÇ Å¬·¯½ºÅ͸µÀ» °¡´ÉÇÏ°Ô ÇÑ´Ù. ÀÌ·¯ÇÑ ¾ÆÅ°ÅØÃĴ ƯÁ¤ÇÑ Çϵå¿þ¾î ¹× ¼ÒÇÁÆ®¿þ¾î¸¦ ¿ä±¸ÇÏÁö ¾ÊÀ¸¹Ç·Î ºñ¿ëÀ» Àý°¨ÇÒ ¼ö ÀÖµµ·Ï Çϸç, °¢ ÄÞÆ÷³ÍÆ®°¡ °íÀ¯ ¸Þ¸ð¸®¿Í µð½ºÅ©¸¦ º¸À¯ÇÔÀ¸·Î ´ÜÀÏ Ãë¾àÁ¡(single point of failure)À» °¡ÁöÁö ¾Ê´Â´Ù.
MySQL Ŭ·¯½ºÅÍ´Â ÀÏ¹Ý MySQL ¼¹ö¿¡ NDB¶ó´Â ½ºÅ丮Áö ¿£ÁøÀ» ÅëÇÕÇÏ¿©, ´ÙÀ½ ±×¸²°ú °°ÀÌ MySQL¼¹ö, NDB Ŭ·¯½ºÅÍÀÇ µ¥ÀÌÅÍ ³ëµå, MGM ¼¹ö°¡ Æ÷ÇÔµÈ ÄÄÇ»ÅÍ¿Í µ¥ÀÌÅÍ¿¡ Á¢±ÙÇϱâ À§ÇÑ ¾îÇø®ÄÉÀÌ¼Ç ÇÁ·Î±×·¥À¸·Î ±¸¼ºµÈ´Ù.
µ¥ÀÌÅÍ°¡ NDB Ŭ·¯½ºÅÍ ½ºÅ丮Áö ¿£Áø¿¡ ÀúÀåµÉ ¶§, Å×À̺íÀº µ¥ÀÌÅÍ ³ëµå¿¡ ÀúÀåµÈ´Ù. °¢ Å×À̺íÀº Ŭ·¯½ºÅÍÀÇ MySQL ¼¹ö¿¡¼ Á÷Á¢ Á¢±ÙÀÌ °¡´ÉÇÏ´Ù. ±×·¡¼ Ŭ·¯½ºÅÍÀÇ ¾î¶² Á¤º¸¸¦ ¾÷µ¥ÀÌÆ® Çϸé, ´Ù¸¥ ¸ðµç MySQL¼¹ö¿¡¼ °ð¹Ù·Î È®ÀÎÇÒ ¼ö ÀÖ´Ù.
MySQL Ŭ·¯½ºÅÍÀÇ µ¥ÀÌÅÍ ³ëµå¿¡ ÀúÀåµÈ µ¥ÀÌÅÍ´Â ¹Ì·¯¸µÀÌ °¡´ÉÇϸç, Ŭ·¯½ºÅÍ´Â Æ®·£Àè¼Ç Áß´Ü µî °¢ ³ëµåµéÀÇ »óÅ¿¡ ´ëÇÑ Çڵ鸵ÀÌ °¡´ÉÇÏ´Ù.
Basic MySQL Cluster Concepts ¶NDB´Â ³ôÀº °¡¿ë¼º°ú µ¥ÀÌÅÍ Áö¼Ó¼ºÀ» °®´Â ÀÎ ¸Þ¸ð¸® ½ºÅ丮Áö ¿£ÁøÀÌ´Ù. DB ½ºÅ丮Áö ´Â failover¿Í ·Îµå ¹ë·±½Ì ¿É¼ÇÀ» ¼³Á¤ÇÒ ¼ö ÀÖ´Ù.
MySQL Ŭ·¯½ºÅÍ´Â NDB ½ºÅ丮Áö ¿£Áø°ú MySQL ¼¹ö·Î ±¸¼ºµÇ¾î ÀÖÀ¸¸ç, MySQL Ŭ·¯½ºÅÍÀÇ Å¬·¯½ºÅÍ ºÎºÐÀº MySQL ¼¹ö¿¡ µ¶¸³ÀûÀÌ´Ù. MySQL Ŭ·¯½ºÅÍÀÇ °¢ ºÎºÐÀº ³ëµå·Î °£ÁÖÇÑ´Ù.
"³ëµå"´Â ÀϹÝÀûÀ¸·Î ÄÄÇ»Å͸¦ ÁöĪÇÏÁö¸¸ MySQL Ŭ·¯½ºÅÍ¿¡¼´Â "ÇÁ·Î¼¼½º"¸¦ ¸»ÇÑ´Ù.
Ŭ·¯½ºÅÍ ³ëµå¿¡´Â ¼¼ °¡Áö ŸÀÔÀÌ ÀÖÀ¸¸ç, MySQL Cluster¸¦ ±¸¼ºÇϱâ À§ÇØ ÃÖ¼ÒÇÑ ³ëµå ¼¼ °³°¡ ÀÖ¾î¾ß ÇÑ´Ù.
Simple Multi-Computer How-To ¶´ÙÀ½°ú °°ÀÌ 4´ëÀÇ ÄÄÇ»ÅͷΠŬ·¯½ºÅ͸¦ ±¸¼ºÇÏ´Â °ÍÀ» °¡Á¤ÇÏ°í ÀÖ´Ù.
(4°³ÀÇ ³ëµå·Î ±¸¼ºµÇ°í, °¢°¢ÀÇ ³ëµå´Â ÆíÀ̼ºÀ» À§ÇØ IP·Î ÁöĪÇÑ´Ù.)
¾Æ·¡¿¡¼ ÇÊ¿äÇÑ ÄÄÇ»ÅÍ´Â ¸®´ª½º°¡ ¼³Ä¡µÈ ÀÎÅÚ ±â¹Ý µ¥½ºÅ©Å¾ PCÀ̸ç, 4´ë ¸ðµÎ µ¿ÀÏÇÑ ÀÌ´õ³Ý Ä«µå(100Mbps³ª 1±â°¡ ºñÆ®)°¡ ÇÊ¿äÇÏ´Ù.
Node IP Address
Management (MGM) node 192.168.0.10
MySQL server (SQL) node 192.168.0.20
Data (NDBD) node "A" 192.168.0.30
Data (NDBD) node "B" 192.168.0.40
MySQL Cluster¸¦ »ç¿ëÇϱâ À§Çؼ´Â -max ¹öÀüÀ» ¼³Ä¡ÇØ¾ß ÇÑ´Ù.
¸ðµç ¼³Ä¡´Â root±ÇÇÑÀ¸·Î ÁøÇàÇϸç ÀÛ¾÷¿¡ ÇÊ¿äÇÑ ÆÄÀÏÀº /usr/local/ ¿¡ ÀúÀåÇÑ´Ù.
1. /etc/passwd ¿Í /etc/group ÆÄÀÏ¿¡¼ mysql ±×·ì°ú À¯Àú°¡ ÀÖ´ÂÁö È®ÀÎÇÑ ÈÄ ¾øÀ¸¸é ´Ù
À½°ú °°ÀÌ »ý¼ºÇÑ´Ù.
# cd /usr/local # groupadd mysql # useradd -g mysql mysql 2. À¯Àú¿Í ±×·ì »ý¼º ÈÄ ¾ÐÃàÀ» Ç®°í, ½Éº¼¸¯ ¸µÅ©¸¦ °É¾îÁØ´Ù.
# tar -xzvf mysql-max-4.1.13-pc-linux-gnu-i686.tar.gz # ln -s /usr/local/ mysql-max-4.1.13-pc-linux-gnu-i686 mysql 3. mysql µð·ºÅ丮·Î À̵¿ÇÏ¿© ½Ã½ºÅÛ µ¥ÀÌÅͺ£À̽º »ý¼ºÀ» À§ÇÑ ½ºÅ©¸³Æ®¸¦ ½ÇÇà½ÃŲ´Ù.
# cd mysql # scripts/mysql_install_db --user=mysql 4. MySQL ¼¹ö¿Í µ¥ÀÌÅÍ µð·ºÅ丮ÀÇ Æ۹̼ÇÀ» ¼³Á¤ÇÑ´Ù.
# chown -R root . # chown -R mysql data # chgrp -R mysql . 5. ½Ã½ºÅÛ ºÎÆà ½Ã ÀÚµ¿ÀûÀ¸·Î MysqlÀ» ½ÇÇàÇÒ ¼ö ÀÖµµ·Ï ¼³Á¤ÇÑ´Ù.
# cp support-files/mysql.server /etc/rc.d/init.d/ # chmod +x /etc/rc.d/init.d/mysql.server # chkconfig --add mysql.server 6. MGM (management) ³ëµå¸¦ º°µµÀÇ PC¿¡ ¼³Ä¡ÇÒ °æ¿ì mysql µ¥¸óÀº ¼³Ä¡ÇÏÁö ¾Ê¾Æµµ ¹«¹æÇÏ´Ù. À§¿Í °°ÀÌ ¼³Ä¡ÇÑ ÈÄ MGM ¼¹ö´Â ´ÙÀ½°ú °°ÀÌ ¼³Ä¡¸¦ °è¼ÓÇÑ´Ù.
# cd /usr/local/mysql/bin/ # cp ndb_mgm* /usr/local/bin/ # chmod +x ndb_mgm* 7. °¢ µ¥ÀÌÅÍ ³ëµå¿Í SQL ³ëµå´Â MySQL¼¹ö ¿É¼Ç°ú connectstring¿¡ ´ëÇÑ Á¤º¸°¡ Æ÷ÇÔµÈ my.cnfÆÄÀÏÀÌ ÇÊ¿äÇÏ°í, MGM³ëµå´Â config.ini ÆÄÀÏÀÌ ÇÊ¿äÇÏ´Ù. ¿¡µðÅ͸¦ ¿¾î ´ÙÀ½°ú °°ÀÌ ÆíÁýÇÑ ÈÄ ÆÄÀÏÀ» ÀúÀåÇÑ´Ù.
# vi /etc/my.cnf [MYSQLD] # Options for mysqld process: Ndbcluster # run NDB engine ndb-connectstring=192.168.0.10 # location of MGM node [MYSQL_CLUSTER] # Options for ndbd process: ndb-connectstring=192.168.0.10 # location of MGM node 8. MGM ³ëµåÀÇ ¼³Á¤ ÆÄÀÏÀ» ¸¸µé±â À§ÇØ Àû´çÇÑ µð·ºÅ丮¸¦ ¸¸µç ÈÄ ¿¡µðÅ͸¦ ¿¾î ´ÙÀ½°ú °°ÀÌ ÆíÁýÇÑ´Ù.
# mkdir /var/lib/mysql-cluster # cd /var/lib/mysql-cluster # vi config.ini [NDBD DEFAULT] # Options affecting ndbd processes on all data nodes: NoOfReplicas=2 # Number of replicas DataMemory=80M # How much memory to allocate for data storage IndexMemory=18M # How much memory to allocate for index storage # For DataMemory and IndexMemory, we have used the # default values. Since the "world" database takes up # only about 500KB, this should be more than enough # for this example Cluster setup. [TCP DEFAULT] # TCP/IP options: portnumber=2202 # This the default; however, you can use any # port that is free for all the hosts in cluster # Note: In MySQL 5.0, this parameter is deprecated; # it is recommended that you do not specify the # portnumber at all and simply allow the port to be # allocated automatically [NDB_MGMD] # Management process options: hostname=192.168.0.10 # Hostname or IP address of MGM node datadir=/var/lib/mysql-cluster # Directory for MGM node logfiles [NDBD] # Options for data node "A": # (one [NDBD] section per data node) hostname=192.168.0.30 # Hostname or IP address datadir=/usr/local/mysql/data # Directory for this data node's # datafiles [NDBD] # Options for data node "B": hostname=192.168.0.40 # Hostname or IP address datadir=/usr/local/mysql/data # Directory for this data node's # datafiles [MYSQLD] # SQL node options: hostname=192.168.0.20 # Hostname or IP address datadir=/usr/local/mysql/data # Directory for SQL node's datafiles # (additional mysqld connections can be # specified for this node for various # purposes such as running ndb_restore) ¼³Ä¡¿Í ¼³Á¤ °úÁ¤ÀÌ ³¡³µ´Ù. ÀÌÁ¦ ½ÇÇàÀ» ÇØ º¸ÀÚ.
Ŭ·¯½ºÅÍ ³ëµåµéÀº °¢°¢ ½ÇÇàµÇ¾î¾ß ÇÑ´Ù. ½ÇÇà ¼ø¼´Â ¸Å´ÏÁö¸ÕÆ® ³ëµå¸¦ °¡Àå ¸ÕÀú ½ÇÇàÇÒ °ÍÀ» ±ÇÇÑ´Ù. ±× ´ÙÀ½Àº ½ºÅ丮Áö ³ëµå¿Í SQL³ëµå ¼øÀÌ´Ù.
# ndb_mgmd -f /var/lib/mysql-cluster/config.iniMGM ³ëµå¸¦ ´Ù¿î½Ãų ¶§¿¡´Â ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù. # ndb_mgm -e shutdown 2. ´ÙÀ½À¸·Î µ¥ÀÌÅÍ ³ëµå È£½ºÆ®¿¡¼ NDBDÇÁ·Î¼¼½º¸¦ ½ÇÇà½ÃŲ´Ù.
--initial À̶õ Àμö´Â ndbd¸¦ óÀ½ ½ÇÇàÇÒ ¶§¿Í ÄÁÇDZ׷¹À̼ÇÀÌ ¹Ù²ï ÈÄ Àç½ÃÀÛ ÇÒ ¶§¸¸ »ç¿ëÇÑ´Ù.
# ndbd --initial 3. SQL ³ëµå´Â ´ÙÀ½°ú °°ÀÌ mysql.server¸¦ ½ÇÇà½ÃŲ´Ù.
# /etc/rc.d/init.d/mysql.server start 4. ÀÌÁ¦ ¸ðµç ³ëµå°¡ ½ÇÇàµÇ¾úÀ¸´Ï MGM ³ëµå Ŭ¶óÀ̾ðÆ®¸¦ ¶ç¿ö °£´ÜÈ÷ Å×½ºÆ®¸¦ Çغ¸ÀÚ.
Ndb_mgm¸í·É¾î¸¦ ÀÔ·ÂÇÏ¿´À» ¶§ Á¤»óÀûÀ¸·Î µ¿ÀÛÇÏ´Â ¸ð½ÀÀº ´ÙÀ½°ú °°ÀÌ ÇÁ·ÒÇÁÆ®°¡ ¶³¾îÁö´Â ¸ð½ÀÀÌ´Ù.
# ndb_mgm -- NDB Cluster -- Management Client -- ndb_mgm> 5. ÀÌÁ¦ show¸í·É¾î¸¦ »ç¿ëÇÏ¿© Ŭ·¯½ºÅÍÀÇ ¸ðµç ³ëµåµéÀÌ Á¤»óÀûÀ¸·Î ¿¬µ¿µÇ´ÂÁö È®ÀÎÀ» ÇØ º¸ÀÚ. HELP ¸¦ ÀÔ·ÂÇÏ¸é ´Ù¸¥ ¸í·É¾îµéµµ È®ÀÎÇØ º¼ ¼ö ÀÖ´Ù.
´ÙÀ½°ú °°ÀÌ 4°³ÀÇ ³ëµå¸¦ ±¸¼ºÇÏ´Â °Í¿¡ ¼º°øÇÏ¿´´Ù.
ndb_mgm> show Connected to Management Server at: 192.168.0.10:1186 Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 @192.168.0.30 (Version: 4.1.13, Nodegroup: 0, Master) id=3 @192.168.0.40 (Version: 4.1.13, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.0.10 (Version: 4.1.13) [mysqld(API)] 1 node(s) id=4 (Version: 4.1.13) ndb_mgm> MySQL Ŭ·¯½ºÅÍÀÇ Á¦ÇÑ ¶MySQL Cluster 4.1.x ¹öÀüÀº ´ÙÀ½°ú °°Àº »ç¿ë»óÀÇ Á¦ÇÑÁ¡À» Áö´Ñ´Ù.
MySQL Cluster FAQ ¶Cluster ¿Í ReplicationÀÇ Â÷ÀÌ
¸®Çø®ÄÉÀ̼ÇÀº ºñµ¿±âÈ ¹æ½ÄÀÌ°í, Ŭ·¯½ºÅÍ´Â µ¿±âÈ ¹æ½ÄÀÌ´Ù.
µû¶ó¼ ¸®Çø®ÄÉÀ̼ÇÀº ÀϹæÀûÀ¸·Î µ¥ÀÌŸ¸¦ Àü´ÞÇÏ¿© º¹Á¦¸¦ ÇÏÁö¸¸ Ŭ·¯½ºÅÍ´Â µ¿±â¹æ½ÄÀ̹ǷΠµ¥ÀÌŸ¸¦ º¹Á¦ÇÑ ÈÄ °á°ú¸¦ È®ÀÎÇϱ⠶§¹®¿¡ µ¥ÀÌŸ ´©¶ôÀÌ ¹ß»ýÇÏÁö ¾Ê´Â´Ù.
´Ù¸¸ º¹Á¦ÇÑ °á°ú¸¦ È®ÀÎÇØ¾ß Çϱ⠶§¹®¿¡ Cluster°¡ Replicationº¸´Ù´Â ¼Óµµ°¡ ´À¸®´Ù.
¶ÇÇÑ ReplicationÀÇ °æ¿ì º¹Á¦µÈ µ¥ÀÌÅÍ¿¡ ´ëÇÑ ½Å·Ú¸¦ ÇÒ ¼ö ¾ø´Ù.
Cluster°¡ »ç¿ëÇÏ´Â ³×Æ®¿öÅ© (How do computers in a cluster communicate?)
MySQL Ŭ·¯½ºÅÍ´Â TCP/IP¸¦ ÅëÇØ ¼·Î Åë½ÅÇÑ´Ù. ÃÖ¼ÒÇÑ 100MbpsÀÇ ÀÌ´õ³ÝÀ» »ç¿ëÇØ¾ß ÇÏ¸ç ¿øÈ°ÇÑ Åë½ÅÀ» À§ÇØ gigabit ÀÌ´õ³ÝÀ» ±Ç°íÇÑ´Ù.
½ÇÁ¦ µ¥ÀÌÅÍ°¡ ¸Þ¸ð¸®¿¡ Á¸ÀçÇÏ¿© »ç¿ëµÇ¸ç ¹°¸®ÀûÀÎ Ãø¸é¿¡¼ ºÃÀ» ¶§ CPU, ¸Þ¸ð¸®, °¢ ³ëµå°£ÀÇ Åë½ÅÀ» À§ÇÑ ³×Æ®¿öÅ·ÀÌ ÁÖ¸¦ ÀÌ·é´Ù. ÀÌÁß °¡Àå ¼Óµµ°¡ ´À¸° ³×Æ®¿öÅ©ÀÇ ¼Óµµ¸¦ ³ôÀÓÀ¸·Î½á ÀüüÀûÀÎ ºü¸¥ µ¿ÀÛÀÌ °¡´ÉÇϵµ·Ï ÇØ¾ß ÇÑ´Ù.
¶ÇÇÑ, ´õ¿í ºü¸¥ SCI ÇÁ·ÎÅäÄݵµ Áö¿øÇϸç, À̴ ƯÁ¤ Çϵå¿þ¾î¸¦ ÇÊ¿ä·Î ÇÑ´Ù.
Ŭ·¯½ºÅ͸¦ ±¸¼ºÇϱâ À§ÇØ ÄÄÇ»ÅÍ°¡ ¾ó¸¶³ª ÇÊ¿äÇÑ°¡?
ÃÖ¼ÒÇÑ 3´ë°¡ ÀÖ¾î¾ß Ŭ·¯½ºÅÍ ±¸¼ºÀÌ °¡´ÉÇϳª, MGM ³ëµå¿Í SQL ³ëµå, ½ºÅ丮Áö ³ëµå µÑ, ÀÌ·¸°Ô 4 ´ë·Î ±¸¼ºÇÏ±æ ±ÇÇÑ´Ù. ÇϳªÀÇ ³ëµå°¡ ½ÇÆÐÇßÀ» ¶§ Áö¼ÓÀûÀÎ ¼ºñ½º¸¦ Çϱâ À§Çؼ MGM³ëµå´Â ºÐ¸®µÈ ÄÄÇ»ÅÍ¿¡¼ ½ÇÇàµÇ¾î¾ß ÇÑ´Ù.
Ŭ·¯½ºÅÍ¿¡¼ °¢ ÄÄÇ»Å͵éÀÌ ÇÏ´Â ÀÏÀº?
MySQL Ŭ·¯½ºÅÍ´Â ¹°¸®Àû, ³í¸®ÀûÀ¸·Î ±¸¼ºµÈ´Ù. ÄÄÇ»ÅÍ´Â ¹°¸®Àû ¿ä¼ÒÀ̸ç È£½ºÆ®¶ó°í ºÒ¸®±âµµ ÇÑ´Ù. ³í¸®Àû, ±â´ÉÀû ¿ä¼Ò´Â ³ëµåÀÌ´Ù. ³ëµå´Â ¿ªÇÒ¿¡ µû¶ó MGM ³ëµå, data ³ëµå(ndbd), SQL ³ëµå·Î ³ª´¶´Ù.
¾î¶² OS¿¡¼ »ç¿ëÇÒ ¼ö Àִ°¡?
MySQL Ŭ·¯½ºÅÍ°¡ ¿ä±¸ÇÏ´Â Çϵå¿þ¾î »ç¾çÀº?
NDB°¡ ¼³Ä¡µÇ°í ½ÇÇàµÇ´Â ¸ðµç Ç÷§ÆûÀÌ¸é °¡´ÉÇϳª, ´ç¿¬È÷ ºü¸¥ CPU, ³ôÀº ¸Þ¸ð¸®¿¡¼ ´õ ¼º´ÉÀÌ ÁÁ´Ù(64-bit CPU¿¡¼ ´õ ºü¸£´Ù). ³×Æ®¿öÅ©Àº ÀÏ¹Ý TCP/IP¸¦ Áö¿øÇÏ¸é µÇ°í, SCI ¸¦ Áö¿øÇÏ·Á¸é ƯÁ¤ Çϵå¿þ¾î°¡ ¿ä±¸µÈ´Ù.
MySQL Ŭ·¯½ºÅÍ°¡ TCP/IP¸¦ ÀÌ¿ëÇÑ´Ù¸é Çϳª ÀÌ»óÀÇ ³ëµå¸¦ ÀÎÅͳÝÀ» ÅëÇØ ´Ù¸¥ °÷¿¡¼ ½ÇÇà½Ãų ¼ö Àִ°¡?
°¡´ÉÇÏ´Ù. ÇÏÁö¸¸ MySQL Ŭ·¯½ºÅÍ´Â ¾î¶°ÇÑ º¸¾Èµµ Á¦°øµÇÁö ¾ÊÀ¸¹Ç·Î, ¿ÜºÎ¿¡¼ Ŭ·¯½ºÅÍ µ¥ÀÌÅÍ ³ëµå³ª ¸Å´ÏÀú ³ëµå¿¡ Á÷Á¢ Á¢±ÙÇÏÁö ¸øÇϵµ·Ï ÇØ¾ß ÇÑ´Ù.
Ŭ·¯½ºÅÍ »ç¿ëÀ» À§ÇØ »õ·Î¿î ÇÁ·Î±×·¡¹Ö ¾ð¾î³ª Äõ¸®¸¦ ¹è¿ö¾ß Çϳª?
Ç¥ÁØ (My)SQL Äõ¸®³ª ¸í·ÉÀ» »ç¿ëÇϹǷΠ±×·¯Áö ¾Ê¾Æµµ µÈ´Ù.
Ŭ·¯½ºÅÍ »ç¿ë ½Ã ¿¡·¯³ª °æ°í ¸Þ½ÃÁö´Â ¾îµð¼ 㳪 ?
MySQL Cluster transaction-safe? ¾î¶² Å×À̺í ŸÀÔÀÌ Å¬·¯½ºÅ͸¦ Áö¿øÇϳª?
"NDB" ÀÇ Àǹ̴Â?
Ŭ·¯½ºÅ͸¦ Áö¿øÇÏ´Â MySQL ¹öÀüÀº? ¼Ò½º¸¦ ÄÄÆÄÀÏ ÇØ¾ß Çϳª?
MySQL-max 4.1.3ºÎÅÍ Áö¿øÇÑ´Ù. ¹ÙÀ̳ʸ® ÆÄÀÏÀº ÄÄÆÄÀÏÀ» ÇÒ ÇÊ¿ä°¡ ¾ø´Ù.
RAMÀº ¾ó¸¶³ª ÇÊ¿äÇÑ°¡? µð½ºÅ©´Â »ç¿ëÇÏÁö ¸øÇϳª?
Ŭ·¯½ºÅÍ´Â ¿ÀÁ÷ in-memoryÀ̸ç, ¸ðµç Å×ÀÌºí µ¥ÀÌÅÍ(À妽º Æ÷ÇÔ)°¡ RAM¿¡ ÀúÀåµÈ´Ù. Ŭ·¯½ºÅÍ¿¡¼ ÇÊ¿äÇÑ RAM¿ë·®Àº ´ÙÀ½ °ø½ÄÀ¸·Î °è»êÇÑ´Ù.
(SizeofDatabase * NumberOfReplicas * 1.1 ) / NumberOfDataNodes
ERROR 1114: The table 'my_cluster_table' is full
À§¿Í °°Àº ¿¡·¯°¡ ¹ß»ýÇßÀ» ¶§´Â ÇÒ´çµÈ ¸Þ¸ð¸®°¡ ºÎÁ·ÇÑ °æ¿ìÀÌ´Ù.
FULL TEXT À妽º¸¦ Áö¿øÇϴ°¡?
ÇöÀç Áö¿øÇÏÁö ¾Ê´Â´Ù.
ÇϳªÀÇ ÄÄÇ»ÅÍ¿¡¼ ¿©·¯ °³ÀÇ ³ëµå°¡ µ¹¾Æ°¡´Â°¡?
°¡´ÉÇϱä ÇÏÁö¸¸ ±ÇÇÏÁø ¾Ê´Â´Ù. °¢ ³ëµåµéÀÌ ´Ù¸¥ ÄÄÇ»ÅÍ¿¡¼ ½ÇÇàµÇ´Â °ÍÀÌ ´õ ¾ÈÁ¤ÀûÀÌ´Ù.
Ŭ·¯½ºÅ͸¦ Àç½ÃÀÛÇÏÁö ¾Ê°í ³ëµå¸¦ Ãß°¡ÇÒ ¼ö Àִ°¡?
ÇÒ ¼ö ¾ø´Ù. MGM À̳ª SQL ³ëµå¸¦ Ãß°¡ÇÏ·Á¸é »õ·Î ½ÃÀÛÇØ¾ß ÇÑ´Ù.
¾î¶»°Ô ±âÁ¸ÀÇ MySQL µ¥ÀÌÅͺ£À̽º¸¦ Ŭ·¯½ºÅÍ·Î ÀÓÆ÷Æ® Çϴ°¡?
ENGINE=NDB ³ª ENGINE=NDBCLUSTER ¿É¼ÇÀ» °¡Áø Å×À̺íÀº ÀÓÆ÷Æ®ÇÒ ¼ö ÀÖ´Ù.
¶Ç´Â ALTER ±â´ÉÀ¸·Î ±âÁ¸ÀÇ Å×À̺íÀ» Ŭ·¯½ºÅÍ·Î º¯È¯ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
- ALTER TABLE OLD_TABLE ENGINE=NDBCLUSTER;
Arbitrator¶õ ?
Ŭ·¯½ºÅÍ¿¡¼ ÇÑ °³ ȤÀº ±× ÀÌ»óÀÇ ³ëµå°¡ ½ÇÆÐÇÒ °æ¿ì, MGM ¼¹ö³ª ´Ù¸¥ ³ëµå°¡ ±× ³ëµåÀÇ ¿ªÇÒÀ» ´ë½ÅÇÏ¿© ´Ù¸¥ ³ëµåµé·Î ÇÏ¿©±Ý ½ÇÆÐÇÑ ³ëµå¿Í °°Àº ³ëµå·Î ÀνÄÇÏ°Ô ÇÏ´Â ±â´ÉÀ» ÇÑ´Ù. ÀÌ·±ÇÑ ¿ªÇÒÀ» ÇÏ´Â ³ëµå¸¦ ÁßÀçÀÎÀ̶ó°í ÇÑ´Ù.
Ŭ·¯½ºÅÍ shut down½Ã¿¡ ¾î¶² ÀÏÀÌ ÀϾ´Â°¡?
Ŭ·¯½ºÅÍ µ¥ÀÌÅÍ ³ëµåÀÇ ¸Þ¸ð¸®¿¡ ÀÖ´ø µ¥ÀÌÅÍ°¡ µð½ºÅ©¿¡ ¾²¿©Áö°í, ±× ´ÙÀ½¿¡ Ŭ·¯½ºÅÍ°¡ ½ÃÀÛµÉ ¶§ ´Ù½Ã ¸Þ¸ð¸®¿¡ ·ÎµåµÈ´Ù.
Ŭ·¯½ºÅÍ¿¡¼ ´Ù¸¥ ¸Å´ÏÀú ³ëµå¸¦ ±¸¼ºÇÏ´Â °ÍÀº?
fail-safe¿¡ ÀÖ¾î¼ µµ¿òÀÌ µÈ´Ù. ´ÜÁö ÇϳªÀÇ MGM ³ëµå ¸¸ÀÌ Å¬·¯½ºÅ͸¦ ÄÁÆ®·Ñ ÇÒ ¼ö ÀÖÁö¸¸ MGM ³ëµå Çϳª¸¦ primary·Î, Ãß°¡ÀÇ ¸Å´ÏÀú ³ëµå¸¦ primary MGM ³ëµå°¡ ½ÇÆÐÇßÀ» ¶§ Àΰè¹Þµµ·Ï ÇÏ¸é µÈ´Ù.
5. MySQL Cluster Glossary ¶Cluster
ÀϹÝÀûÀ¸·Î Cluster´Â ÇϳªÀÇ ¾÷¹«¸¦ ¼öÇàÇϱâ À§ÇØ ÇÔ²² µ¿ÀÛÇÏ´Â ÄÄÇ»ÅÍ ¼¼Æ®ÀÌ´Ù.
NDB Cluster´Â ÀÚ·áÀúÀå, º¹±¸, ÄÄÇ»ÅÍ °£ÀÇ ºÐ¹è °ü¸® µîÀ» ½ÃÇàÇϱâ À§ÇØ MySQLÀ» »ç¿ëÇÏ´Â Storge Engine ÀÌ´Ù. MySQL Cluster´Â in-memory storage¸¦ »ç¿ëÇÑ shared-noting ¾ÆÅ°ÅØÃÄ¿¡¼ ºÐ»êµÈ MySQL DB¸¦ Áö¿øÇϱâ À§ÇØ NDB¿£ÁøÀ» »ç¿ëÇÏ¿© ÇÔ²² µ¹¾Æ°¡´Â ÄÄÇ»ÅÍ ±×·ìÀÌ´Ù.
Configuration Files
Ŭ·¯½ºÅÍ, È£½ºÆ®, ³ëµå¿¡ °ü°èµÈ Á÷Á¢ÀûÀÎ Á¤º¸¸¦ Æ÷ÇÔÇÏ´Â ÆÄÀÏÀÌ´Ù.
Ŭ·¯½ºÅÍ ½ÃÀÛ ½Ã ClusterÀÇ MGM ³ëµå°¡ ÀоîµéÀδÙ.
Backup
µð½ºÅ©³ª ´Ù¸¥ Long-term Storage¿¡ ÀúÀåµÇ´Â ¸ðµç Ŭ·¯½ºÅÍ µ¥ÀÌŸ, Æ®·£Á§¼Ç, ·Î±×ÀÇ ¿ÏÀüÇÑ Ä«ÇǸ¦ ¸»ÇÑ´Ù.
Restore
¹é¾÷¿¡ ÀúÀåµÇ´Â °Í°ú °°ÀÌ Å¬·¯½ºÅÍ¿¡ ±× Àü »óÅ·ΠµÇµ¹¸®´Â °ÍÀ» ¸»ÇÑ´Ù.
CheckPoint
ÀϹÝÀûÀ¸·Î µ¥ÀÌŸ°¡ µð½ºÅ©¿¡ ÀúÀåµÉ ¶§ üũÆ÷ÀÎÆ®¿¡ µµ´ÞÇÑ´Ù°í ¸»ÇÑ´Ù.
Ŭ·¯½ºÅÍ¿¡¼´Â CommittedµÈ Æ®·£Àè¼ÇÀ» µð½ºÅ©¿¡ ÀúÀåÇÏ´Â ½Ã°£À» ¸»ÇÑ´Ù.
NDB Storage Engine¿¡´Â ÀÏ°üµÇ°Ô Ŭ·¯½ºÅÍÀÇ µ¥ÀÌŸ¸¦ º¸Á¸Çϱâ À§ÇØ µÎ Á¾·ùÀÇ CheckPoint°¡ ÀÖ´Ù.
LocalCheckPoint(LCP) : ½Ì±Û ³ëµåÀÇ Ã¼Å©Æ÷ÀÎÆ®. ±×·¯³ª Ŭ·¯½ºÅÍÀÇ ¸ðµç ³ëµå¿¡¼ LCP¸¦ »ç¿ëÇÑ´Ù. LCP´Â µð½ºÅ©¿¡ ³ëµåÀÇ ¸ðµç µ¥ÀÌŸ¸¦ ÀúÀåÇϵµ·Ï ÇÑ´Ù(º¸Åë ¸Å ¸î ºÐ¸¶´Ù). Ŭ·¯½ºÅÍ ActivityÀÇ ³ëµå¿Í ·¹º§, ´Ù¸¥ ¿äÀο¡ ÀÇÇØ ÀúÀåµÇ´Â µ¥ÀÌŸÀÇ ¾çÀº ÀÇÁ¸ÀûÀÌ´Ù.
GlobalCheckPoint(GCP) : GCP´Â ¸ðµç ³ëµåÀÇ Æ®·£Àè¼ÇÀÌ µ¿±âȵǰí, redo-log°¡ Disk¿¡ ÀúÀåµÉ ¶§ ¸î ºÐ¸¶´Ù ¹ß»ýÇÑ´Ù.
Cluster Host
MySQL ClusterÀÇ ±¸¼º ÄÄÇ»ÅÍ. Ŭ·¯½ºÅÍ´Â ¹°¸®Àû ±¸Á¶¿Í ³í¸®Àû ±¸Á¶¸¦ °¡Áø´Ù.
¹°¸®ÀûÀ¸·Î Ŭ·¯½ºÅÍ´Â Cluster Host¶ó´Â ÄÄÇ»ÅÍÀÇ ¼ö·Î ±¸¼ºµÈ´Ù.
Node
MySQL ClusterÀÇ ³í¸®Àû, ±â´ÉÀû ¿ä¼Ò¸¦ ¸»Çϸç Cluster Node¶ó°íµµ ÇÑ´Ù.
MySQL Cluster¿¡¼´Â node¶õ ¿ë¾î¸¦ ClusterÀÇ ¹°¸®Àû ComponentÀÎ Process¸¦ ÁöĪÇÑ´Ù. MySQL Cluster°¡ µ¿ÀÛÇϱâ À§ÇØ 3°¡Áö ŸÀÔÀÇ ³ëµå°¡ ÀÖ´Ù.
MGM node
- MySQL Cluster¿¡¼ ´Ù¸¥ ³ëµåµéÀÇ ¼³Á¤ Á¤º¸, ³ëµåÀÇ ½ÃÀÛ°ú Á¤Áö, ³×Æ®¿öÅ© ÆÄƼ¼Å´×, ¹é¾÷°ú ÀúÀå µîÀ» Æ÷ÇÔÇÏ¿© ´Ù¸¥ ³ëµåµéÀ» °ü¸®ÇÑ´Ù.
SQL node (MySQL Server)
- Ŭ·¯½ºÅÍÀÇ µ¥ÀÌÅÍ ³ëµå¾È¿¡ ÀúÀåµÈ µ¥ÀÌÅ͸¦ Serve ÇÏ´Â MySQL Server ÀνºÅϽº.
µ¥ÀÌŸ¸¦ ÀúÀå, ºÐ¹è, ¾÷µ¥ÀÌÆ®Çϴ Ŭ¶óÀ̾ðÆ®´Â MySQL Server¸¦ ÅëÇØ Á¢±Ù °¡´ÉÇÏ´Ù.
Data node
- ÀÌ ³ëµå´Â ½ÇÁ¦ µ¥ÀÌŸ¸¦ ÀúÀåÇÑ´Ù.
ÇöÀç ½Ì±Û Å¬·¯½ºÅÍ´Â ÃÑ 48°³ÀÇ µ¥ÀÌŸ ³ëµå¸¦ Áö¿øÇÑ´Ù.
½Ì±Û ¸Ó½Å¿¡ ÇÑ °³ ÀÌ»óÀÇ ³ëµå°¡ °øÁ¸ÇÒ ¼öµµ ÀÖ°í, ÇÑ ¸Ó½Å¿¡ ¿ÏÀüÇÑ Å¬·¯½ºÅ͸¦ ±¸¼ºÇÏ´Â °Íµµ °¡´ÉÇÏ´Ù. MySQL Ŭ·¯½ºÅÍ¿¡¼ È£½ºÆ®´Â Ŭ·¯½ºÅÍÀÇ ¹°¸®Àû ÄÄÆÛ³ÍÆ®À̸ç, ³ëµå´Â ³í¸®Àû ȤÀº ±â´ÉÀûÀÎ ÄÄÆÛ³ÍÆ®, Áï ÇÁ·Î¼¼½º¶ó´Â °ÍÀ» ÀØÁö ¸»ÀÚ.
Node group
µ¥ÀÌÅÍ ³ëµåÀÇ ÁýÇÕ. ³ëµå ±×·ì ¾ÈÀÇ ¸ðµç µ¥ÀÌÅÍ ³ëµå´Â °°Àº µ¥ÀÌÅÍ(fragment)¸¦ Æ÷ÇÔÇÑ´Ù. ±×¸®°í ½Ì±Û ±×·ìÀÇ ¸ðµç ³ëµå´Â ´Ù¸¥ È£½ºÆ®¿¡ Á¸ÀçÇØ¾ß ÇÑ´Ù.
Node failure
MySQL Ŭ·¯½ºÅʹ Ŭ·¯½ºÅ͸¦ ±¸¼ºÇÏ´Â ¾î´À ÇÑ ³ëµåÀÇ ±â´É¿¡¸¸ ÀÇÁ¸ÀûÀÌÁö ¾Ê´Ù. Ŭ·¯½ºÅÍ´Â Çϳª ȤÀº ¸î °³ÀÇ ³ëµå°¡ ½ÇÆÐÇصµ °è¼ÓµÉ ¼ö ÀÖ´Ù.
Node restart
½ÇÆÐÇÑ Å¬·¯½ºÅÍ ³ëµåÀÇ ¸®½ºÅ¸Æà °úÁ¤.
Initial node restart
³ëµåÀÇ ÀÌÀüÀÇ ÆÄÀÏ ½Ã½ºÅÛÀ» Áö¿ì°í ½ÃÀÛÇϴ Ŭ·¯½ºÅÍ ³ëµåÀÇ °úÁ¤. ¼ÒÇÁÆ®¿þ¾î Çâ»ó°ú ±× ¹ÛÀÇ Æ¯º°ÇÑ »óȲ µî¿¡ »ç¿ëµÈ´Ù.
System crash(or System fail)
Ŭ·¯½ºÅÍÀÇ »óÅ°¡ È®ÀεÇÁö ¾Ê´Â µî ¸¹Àº Ŭ·¯½ºÅÍ ³ëµå°¡ ½ÇÆÐÇßÀ» ¶§ ÀϾ ¼ö ÀÖ´Ù.
System restart
Ŭ·¯½ºÅÍÀÇ ¸®½ºÅ¸Æðú µð½ºÅ© ·Î±× ¹× üũ Æ÷ÀÎÆ®·ÎºÎÅÍ reinstallÇÏ´Â ÇÁ·Î¼¼½º¸¦ ¸»ÇÑ´Ù. Ŭ·¯½ºÅ͸¦ shutdown ÇÑ ÀÌÈÄ¿¡ ÀϾ´Â °úÁ¤ÀÌ´Ù.
fragment
µ¥ÀÌÅͺ£À̽º Å×À̺íÀÇ ÇÑ ºÎºÐ. NDB½ºÅ丮Áö ¿£Áø¿¡¼ Å×À̺íÀ» ³ª´©¾î fragmentsÀÇ ¼ö¿¡ µû¶ó ÀúÀåÇÑ´Ù. Fragment´Â ÆÄƼ¼ÇÀ̶ó ºÒ¸®±âµµ ÇÑ´Ù. MySQL Ŭ·¯½ºÅÍ¿¡¼ Å×À̺íÀº, ¸Ó½Å°ú ³ëµå °£ÀÇ ·Îµå ¹ë·±½ÌÀ» ¿ëÀÌÇÏ°Ô ÇÒ ¼ö ÀÖµµ·Ï fragmentµÈ´Ù.
Replica
NBD ½ºÅ丮Áö ¿£Áø¿¡¼ °¢ Å×À̺í ÇÁ·¹±×¸ÕÆ®´Â ¿©ºÐÀ» Æ÷ÇÔÇÏ¿© ´Ù¸¥ µ¥ÀÌÅÍ ³ëµå¿¡ ÀúÀåµÈ ¸¹Àº replica¸¦ °®´Â´Ù. ÇöÀç´Â fragment ´ç 4°³ ÀÌ»óÀÇ replica°¡ °¡´ÉÇÏ´Ù.
Transpoter
³ëµåµé °£ÀÇ µ¥ÀÌÅÍ À̵¿À» Á¦°øÇÏ´Â ÇÁ·ÎÅäÄÝ
TCP/IP(local), TCP/IP(remote), SCI, SHM(MySQL 4.1 ¹öÀü¿¡¼ ½ÇÇèÀûÀÓ)
NDB(Network DataBase)
NDB´Â MySQLŬ·¯½ºÅÍ¿¡¼ »ç¿ëÇÏ´Â ½ºÅ丮Áö ¿£ÁøÀ» ¸» ÇÔ.
NDB ½ºÅ丮Áö ¿£ÁøÀº ¸ðµç ÀϹÝÀûÀÎ MySQL Ä÷³ ŸÀÔ°ú SQL¹®À» Áö¿øÇϸç, ACID(DB¹«°á¼º º¸ÀåÀ» À§ÇÑ Æ®·£Àè¼Ç)¼ºÁúÀ» °¡Áø´Ù.
Shared-nothing architecture
MySQL Ŭ·¯½ºÅÍÀÇ ÀÌ»óÀûÀÎ ¾ÆÅ°ÅØÃÄ.
ÁøÁ¤ÇÑ Shared-nothing setup ¿¡¼ °¢ ³ëµå´Â ºÐ¸®µÈ È£½ºÆ®¿¡¼ ½ÇÇàµÈ´Ù. ÀÌ·¯ÇÑ ¹è¿Àº ½Ì±Û È£½ºÆ®³ª ½Ì±Û ³ëµå°¡ ¾Æ´Ï¸é SOF³ª ½Ã½ºÅÛ º´¸ñÇö»óÀÌ ÀüüÀûÀ¸·Î ¹ß»ýÇÒ ¼ö ÀÖ´Ù´Â µ¥ ÀÖ´Ù.
In-memory storage
°¢ µ¥ÀÌÅÍ ³ëµå¿¡ ÀúÀåµÈ ¸ðµç µ¥ÀÌÅÍ´Â ±× ³ëµåÀÇ È£½ºÆ® ÄÄÇ»ÅÍÀÇ ¸Þ¸ð¸®¿¡ À¯ÁöµÈ´Ù. Ŭ·¯½ºÅÍÀÇ °¢ µ¥ÀÌÅÍ ³ëµå¸¦ À§ÇØ, (µ¥ÀÌÅÍ ³ëµåÀÇ ¼ö·Î ³ª´¶ replicaÀÇ ¼ö * µ¥ÀÌÅͺ£À̽º »çÀÌÁî)¸¸ÅÀÇ °¡¿ë RAMÀÇ ¾çÀ» È®º¸ÇØ µÎ¾î¾ß ÇÑ´Ù. ±×·¯´Ï±î, µ¥ÀÌÅͺ£À̽º°¡ 1±â°¡ÀÇ ¸Þ¸ð¸®¸¦ Â÷ÁöÇÏ°í, 4°³ÀÇ replica¿Í 8°³ÀÇ ³ëµå·Î Ŭ·¯½ºÅ͸¦ ±¸¼ºÇÏ°íÀÚ Çϸé, °¢ ³ëµå´ç ÃÖ¼Ò 500MBÀÇ ¸Þ¸ð¸®°¡ ÇÊ¿äÇÏ´Ù. ±×¸®°í OS¿Í ´Ù¸¥ ¾îÇø®ÄÉÀÌ¼Ç ÇÁ·Î±×·¥ÀÌ ¾²´Â ¸Þ¸ð¸®°¡ Ãß°¡·Î ÇÊ¿äÇÏ´Ù.
Table
°ü°èÇü µ¥ÀÌÅͺ£À̽º¿¡¼´Â tableÀº ÀϹÝÀûÀ¸·Î µ¿ÀÏÇÏ°Ô ±¸Á¶ÈµÈ ·¹ÄÚµåÀÇ setÀ» °¡¸®Å²´Ù. MySQL Ŭ·¯½ºÅÍ¿¡¼ µ¥ÀÌÅͺ£À̽º Å×À̺íÀº fragmentÀÇ setÀ¸·Î½á µ¥ÀÌÅÍ ³ëµå¿¡ ÀúÀåµÇ°í, °¢ fragment´Â Ãß°¡·Î µ¥ÀÌÅÍ ³ëµå¿¡ º¹Á¦µÈ´Ù. °°Àº fragment¸¦ replicateÇÑ µ¥ÀÌÅÍ ³ëµåÀÇ setÀ̳ª fragmentÀÇ setÀ» ³ëµå ±×·ìÀ̶ó ÇÑ´Ù.
Cluster Programs : ¸í·É¾îµé
¼¹ö µ¥¸ó
Contributors ¶Ã³À½ ÀÛ¼ºÀÚ : ¼ÛÀº¿µ,f405(ccotti22) f405@naver.com (2006.2.1 15:37)
ÀÛ¼ºÀÏ : 2005³â 8¿ù 10ÀÏ ¼ö¿äÀÏ
ÀÌ ¹®¼´Â MySQL Cluster 4.0´ëÀÇ ¸Å´º¾óÀ» ¹ø¿ª, Á¤¸®ÇÑ °ÍÀ¸·Î Ʋ¸° ºÎºÐÀ» ´Ù¼Ò Æ÷ÇÔÇÒ ¼ö ÀÖÀ¸¸ç, Àú´Â ±×¿¡ ´ëÇÑ Ã¥ÀÓÀ» ÁöÁö ¾Ê°Ú½À´Ï´Ù.
ºÎÁ·ÇÏÁö¸¸ ´Ù¸¥ ºÐµéµµ °øºÎÇϴµ¥ µµ¿òÀÌ µÇ±æ ¹Ù¶ø´Ï´Ù.
±×¸®°í ÀÌ ¹®¼¸¦ ÀÛ¼ºÇϱâ Àü Âü°íÇÑ ¸®´ª½º ¹× MySQL ¹®¼µéÀ» ÀÛ¼ºÇϽŠ¸¹Àº ¼±¹è´Ôµé¿¡°Ô °¨»çÀÇ ¸»¾¸À» µå¸³´Ï´Ù.
±×¸®°í ÀÌ °æ¾î´Â »ý·«ÇÏ¿´½À´Ï´Ù. ¾çÇØÀÇ ¸»¾¸À»...
|
Your mode of life will be changed for the better because of new developments. |