#!/bin/sh ## ## This file name is "dailydump.cron". ## for /etc/cron.daily/dailydump.cron ## ## [crond µ¥¸óÀ» ÀÌ¿ëÇÑ ÀÚ·á ¹é¾÷-¸ÅÀÏ] ## ## ÀÛ¼ºÀÚ ±èÄ¥ºÀ ## ÀÛ¼ºÀÏ : 2001.03.10 ## ¼öÁ¤ÀÏ : 2001.03.14 ## : 2003.01.08 add mysqldump options ## ###################################################### ## ## [»ç¿ë¹ý] ## ## cp dailydump.cron /etc/cron.daily/ ## chmod 700 /etc/cron.daily/dailydump.cron ## ## ¼³Á¤ÈÄ, ¼³Á¤ÆÄÀÏÀÇ ¹®¹ýÀÌ ¸Â³ª È®ÀÎÇÏ´Â ¹æ¹ý(µð¹ö±ë) ## ## # sh -xv dailydump.cron ## ###################################################### ## ## [¹é¾÷ÇÏ´Â ÀÚ·á] ## ## 0. ³¯Â¥º°·Î ¹é¾÷(¿¹: filename-20010310-04.xxx) ## 1. ½Ã½ºÅÛ ³¯Â¥ ¼öÁ¤(rdate) ## 2. mysql ¸ðµç DB¸¦ .sql À̳ª .sql.gz ÇüÅ·Π¹é¾÷ ## 3. ±âŸ(¾ÆÁ÷ ¾øÀ½) ## ## * ³ª¸ÓÁö ¼³Á¤ ÆÄÀÏÀº ÀÏÁÖÀÏ¿¡ ÇѹøÀ̳ª µÎ¹ø Á¤µµ·Î ## ¹é¾÷ÇÏ´Â °ÍÀÌ Àû´ç. ## ###################################################### ## ## [°ü¸®ÀÚ°¡ ²À ¼³Á¤ÇؾßÇÒ ³»¿ë - 11°¡Áö] ## ## [0] MySQL DB¸¦ ¹é¾÷ÇÒ±î¿ä? ## 1 = yes(DB¸¦ ¹é¾÷ÇÕ´Ï´Ù.) ## 0 = no (DB¸¦ ¹é¾÷ÇÏÁö ¾Ê½À´Ï´Ù.) *** ÀÌÇÏ ¼³Á¤ÇÒ ÇÊ¿ä¾øÀ½ *** mysql_dbdump='1' ## [1] MySQLÀÌ ¾î¶°ÇÑ ÀÌÀ¯ µîÀ¸·Î °¡µ¿ÁßÀÌÁö ¾ÊÀ» °æ¿ì¿¡ ¸ÞÀÏÀ» ## ¹ÞÀ» º¼ user³ª ¸ÞÀÏ ÁÖ¼Ò ¼³Á¤. ## ## localhost userÀÎ °æ¿ì : san2 ¶Ç´Â san2(at)localhost ## localhost user°¡ ¾Æ´Ñ °æ¿ì : san2(at)linuxchannel.net ## ## ¸¸¾à ¸ÞÀÏÀ» ¹Þ¾Æ º¸±â¸¦ ¿øÄ¡ ¾Ê´Â´Ù¸é ´ÙÀ½ ¼³Á¤À» ÁÖ¼®(#) ## À¸·Î ó¸®Çϰųª °ø¹éÀ¸·Î ¼³Á¤ ## reportmailto='san2' ## [2] ±âº» ¹é¾÷ µð·ºÅ丮 ¼³Á¤(¼öµ¿À¸·Î µð·ºÅ丮 ¸¸µé ÇÊ¿ä¾øÀ½) ## backupdir='/var/backup' ## [3] MySQL DB ¼­¹ö(Ŭ¶óÀ̾ðÆ®°¡ ¾Æ´Ô) ## localhostÀÎ °æ¿ì localhost·Î ¼³Á¤Çϼ¼¿ä. ## mysql_host='localhost' ## [4] MySQL DB root ¾ÏÈ£(½Ã½ºÅÛ root ¾ÏÈ£ ¾Æ´Ô) ## ## ** º¸¾È ** ## ** ÀÌ ÆÄÀÏÀÇ Æ۹̼ǿ¡ ÁÖÀÇ ** ## ** ¸¸¾à /root/.my.cnf ÆÄÀÏÀÇ root ¾ÏÈ£¸¦ ±âº»ÀûÀ¸·Î »ç¿ëÇÏ°íÀÚ ## ** ÇÑ´Ù¸é, ## ** ## ** mysql_rootpasswd='/root/.my.cnf' ## ** ## ** À¸·Î ¼³Á¤Çϱ⠹ٶø´Ï´Ù. ## ** ex) /root/.my.cnf ## ** [client] ## ** password = xxxxxx ## mysql_rootpasswd='/root/.my.cnf' #mysql_rootpasswd='xxxxxx' ## [5] MySQL DB dump µð·ºÅ丮(µÚ ºÎºÐ, ¼öµ¿À¸·Î µð·ºÅ丮 ¸¸µé ÇÊ¿ä¾øÀ½) ## mysql_backupdir="${backupdir}/mysqldump" ## [6] MySQL DB dump ÇÁ·Î±×·¥ ## RPMÀ¸·Î ¼³Ä¡Çß´Ù¸é `which mysqldump`ÀÇ °á°ú ¸í½Ã ## mysql_dump='/usr/local/mysql/bin/mysqldump' ## [7] MySQL mysqldump arguments ## mysql_dump_args='--add-drop-table --quick --extended-insert' #mysql_dump_args='--opt' ## [8] MySQL DB show ÇÁ·Î±×·¥ ## RPMÀ¸·Î ¼³Ä¡Çß´Ù¸é 'which mysqlshow'ÀÇ °á°ú ¸í½Ã ## mysql_show='/usr/local/mysql/bin/mysqlshow' ## [9] dumpÇÑ DB¸¦ ¾ÐÃàÇϽðڽÀ´Ï±î? ## 1 = yes(¿¹: dbname-20010310-04.sql.gz) ## 0 = no (¿¹: dbname-20010310-04.sql) ## db_compress='1' ## [10] Àüü DB Áß Æ÷ÇÔ½ÃÅ°Áö ¾ÊÀ» DB ¼³Á¤ ## °¢ DBÀÇ ±¸ºÐÀº "¶Ç´Â ¿¬»êÀÚ(|)"·Î ´ÙÀ½°ú °°ÀÌ ±¸ºÐ ## ±âº» °ªÀ¸·Î´Â test¿Í test2·Î ¼³Á¤µÇ¾î ÀÖÀ½. ## not_dump_db='test|test2' ## ## ¼³Á¤ ³»¿ë ³¡(ÀÌÇÏ ¼öÁ¤ÇÒ ÇÊ¿ä ¾øÀ½) ## ###################################################### ###################################################### ## ## ½Ã½ºÅÛ ½Ã°£ ¼³Á¤ Á¶Á¤ ## #/usr/bin/rdate -s time.kriss.re.kr | clock -w >/dev/null 2>&1 #/usr/bin/rdate -s time.kriss.re.kr >/dev/null 2>&1 ## ½ÇÁ¦·Î DB¸¦ dump ÇÏ´Â ÇÔ¼ö ## mysql_dump_work() { mysql_each_DB="$1" mysql_dump_file="${mysql_backupdir}/${mysql_each_DB}-${sysdtime}.sql" $mysql_dump $mysql_connect $mysql_dump_args $mysql_each_DB > $mysql_dump_file if [ "$db_compress" = "1" ] ; then gzip -f9 $mysql_dump_file fi } ## MySQL DB¸¦ ¹é¾÷ÇÏÁö ¾Ê´Â´Ù¸é Á¾·áÇÔ. ## [ "$mysql_dbdump" != "1" ] && exit 0 ## ÆÄÀÏÀ» ±¸ºÐÇϱâ À§Çؼ­ ³¯Â¥-½Ã°£À¸·Î ¼³Á¤ ## sysdtime=`date +%Y%m%d-%H` ## MySQL DB dump ## ## MySQL Á¢¼Ó ÆĶó¹ÌÅÍ ## if [ -s "$mysql_rootpasswd" ] ; then passwd_opt="--defaults-file=$mysql_rootpasswd" else passwd_opt="--password=$mysql_rootpasswd" fi mysql_connect="$passwd_opt -h $mysql_host -u root" ## MySQL ¸ðµç DB ÃàÃâ ## ¾Õ¿¡¼­ ¼³Á¤ÇÑ $not_dump_db´Â Á¦¿ÜµÊ ## mysql_DBs=`$mysql_show $mysql_connect 2>/dev/null | egrep -v "(${not_dump_db}|Databases|\+)" | awk '{print $2}'` if [ X"$mysql_DBs" != "X" ] ; then if [ ! -d "$mysql_backupdir" ] ; then mkdir -p "$mysql_backupdir" chmod 700 "$mysql_backupdir" fi ## All DB dump to one file(.sql) !!!! ## Verbal advice --> LSN tip board : 'lubzzon' ## --all-databases > all_db.sql ## for mysql_DB in $mysql_DBs ; do mysql_dump_work $mysql_DB done #chmod 600 ${mysql_backupdir}/* #chown root mysql_backupdir else ## MySQLÀÌ °¡µ¿ÁßÀÌÁö ¾ÊÀ» °æ¿ì ## ÁÖ) ¾Æ·¡¿¡¼­ ${IFS}=$IFS HTML¿¡¼­
°ú °°À½. ## if [ X"$reportmailto" != "X" ] ; then mailsubject="dailydump.cron report [${HOSTNAME}]" mailmessages="MySQLÀÌ °¡µ¿ÇÏÁö ¾Ê°Å³ª DB°¡ ¾ø½À´Ï´Ù.${IFS}MySQL ¼­¹ö(${mysql_host}) È®ÀÎÇϼ¼¿ä!!!" echo "$mailmessages" | mail -s "$mailsubject" "$reportmailto" >/dev/null 2>&1 fi fi exit 0