• ÇÁ¸®Ä«¿îÅÍ
  • Ç÷¡½ÃºÏ
  • ÇÁ¸®º¸µå
  • Àü±¤ÆÇ
  • À¥°øºÎ¹æ
  • Ä¿¹Â´ÏƼ
[linux] MySQL ¹é¾÷¿ë ½©½ºÅ©¸³Æ®ÀÔ´Ï´Ù. 2009.12.09 18:26
±Û¾´ÀÌ : ¿î¿µÀÚ Á¶È¸ : 185 Ãßõ : 0
/etc/cron.daily ¿¡ ÆÄÀÏÀ» ¸¸µé¾î µÎ°Å³ª

crond ¿¡ µî·ÏÇؼ­ »ç¿ëÇÏ½Ã¸é µË´Ï´Ù.

[±â´É¿ä¾à]

1.root °èÁ¤À¸·Î Àüü µðºñ¸¦ µðºñº°·Î ¹é¾÷ °¡´ÉÇÔ
2.¿É¼ÇÀ¸·Î Å×ÀÌºí º° ¹é¾÷ °¡´ÉÇÔ.
3.º¸Á¸ ¼³Á¤ ±â°£ ÀÌÈÄ ÀÚµ¿ »èÁ¦

--------------------------------------------source----------------------------------------------------------

#!/bin/sh

############################################################################
#
# By ÁúÁÖº»´É 2009/06/03
#
#    V 2.0
#
# µ¥ÀÌÅÍ º£À̽ºº° ȤÀº Å×ÀÌºí º°·Î ¹é¾÷ ¹ÞÀ» ¼ö ÀÖµµ·Ï º¯°æÇßÀ¸¸ç
# 30 LINE ¿¡ ¸í±âµÈ ¹è¿­¿¡ ¼ÓÇÏ´Â µðºñµé¸¸ Å×ÀÌºí º°·Î ¹é¾÷ ¹Þ´Â´Ù.
#
# µ¥ÀÌÅͺ£À̽º ´ÜÀ§·Î ¹ÞÀº ÆÄÀÏÀº DB. À¸·Î ½ÃÀÛÇÏ°í
# Å×ÀÌºí ´ÜÀ§´Â TB. À¸·Î ½ÃÀÛÇÏ´Â ÆÄÀϸíÀ» °®´Â´Ù.
#
# ¹é¾÷ ÆÄÀÏÀº dump.gz ·Î Çü¼º µÇ¸ç ¼³Á¤µÈ º¸Á¸ ±â°£ÀÌ Áö³ª¸é ÀÚµ¿ »èÁ¦ µÈ´Ù.
#
#############################################################################

##### SET VARIABLES ############ Àüü¸¦ ¹é¾÷ ¹ÞÀ¸·Á¸é ¿©±â¿¡ root °èÁ¤À» ÀÔ·ÂÇÑ´Ù.
DBHOST="yourhost"
DBUSER="yourid"
DBPWD="yourpassword"

#¹é¾÷ °æ·Î
BACKUPDIR="/home/your_backup_dir/"
#·Î±× ÀÛ¼º °æ·Î
LOGDIR="/home/your_backup_log_dir/"
#·Î±× ÆÄÀÏ ¾Õ¿¡ ºÙÀ» ƯÁ¤ ÅؽºÆ®
LOGNAME="log_"

###### SET DB NAMES which BACKUP by TABLES ###### ¿©±â Ç¥½ÃµÈ DB µéÀº Å×ÀÌºí º°·Î ¹é¾÷µÈ´Ù.
DB_TBARR=(dbname1 dbname2 dbname3)

#¹é¾÷ ¿É¼ÇÀ» ¿øÇÏ´Â ´ë·Î ¼³Á¤
#routine ¿É¼ÇÀº 5¹öÀü À̻󿡼­¸¸ »ç¿ë(function µîÀ» ¹é¾÷ÇÔ)
OPTIONS="--skip-comments --default-character-set=euckr --routines"

##### SET CHARGE LIMIT ########## ¹é¾÷ ÆÄÀÏ ÀúÀå ±â°£(ÀÏ´ÜÀ§)
CHARGE_LMT=3

##### DELETE OLD_BACKUP FILES #######
find ${BACKUPDIR} -name "*.gz" -mtime +${CHARGE_LMT} -exec rm -rf {} \;

##### START LOG CREATE ##########
YMD_S=`date +%Y%m%d%H%M%S`
touch ${LOGDIR}${LOGNAME}${YMD_S}.start

##### DB LIST GET ###############
#IF YOU WANT TO EXCEPT SOME DATABASE ADD THIS
#grep -v Database | grep -v somename | grep -v somename`
#

#grep -v dbname ÇÏ¸é ¹é¾÷ ½Ã Á¦¿Ü µÈ´Ù.

RESULT=`mysql -u$DBUSER -p$DBPWD -h$DBHOST -e "show databases" | grep -v Database`

for DB in $RESULT; do

    sw=0
    ##### compare DB to TBARR #####
    for i in ${DB_TBARR[@]}; do
        if [ $i = $DB ]; then
            let "sw=sw+1"
        fi
        done

    if [ $sw = 0 ]; then
        # BACKUP by DB
        FNAME=${BACKUPDIR}DB.${DB}_${YMD_S}.dump
        #echo $FNAME
        touch $FNAME
        echo "set foreign_key_checks=0;" >> $FNAME
        mysqldump -u$DBUSER -p$DBPWD -h$DBHOST $OPTIONS $DB >> $FNAME
        echo "set foreign_key_checks=1;" >> $FNAME
        gzip --rsyncable $FNAME

    else
        # BACKUP by TABLES
                RESULT_TB=`mysql -u$DBUSER -p$DBPWD -h$DBHOST $DB -e"show tables" | grep -v heap | grep -v Tables_in `
                for TB in $RESULT_TB; do

                        FNAME=${BACKUPDIR}TB.${DB}.${TB}_${YMD_S}.dump
            #echo $FNAME
            touch $FNAME
            echo "set foreign_key_checks=0;" >> $FNAME
            mysqldump -u$DBUSER -p$DBPWD -h$DBHOST $OPTIONS $DB $TB >> $FNAME
            echo "set foreign_key_checks=1;" >> $FNAME
            gzip --rsyncable $FNAME

                done        
    fi

done

##### END LOG CREATE ###########
YMD_E=`date +%Y%m%d%H%M%S`

touch ${LOGDIR}${LOGNAME}${YMD_E}.end
ÀλýÀº ª½À´Ï´Ù.
±×·¯¹Ç·Î ´Ù¸¥ »ç¶÷ÀÌ ¿ä±¸ÇÏ´Â »îÀ» »ì¸é¼­ ½Ã°£À» ³¶ºñÇؼ­´Â ¾È µË´Ï´Ù.
µ·°ú ¸í¿¹¸¦ ¾òÁö ¸øÇÏ´õ¶óµµ ³¡±îÁö ÀÚ½ÅÀÇ ±æÀ» °íÁýÇϽʽÿÀ
¸ñ·Ï À­±Û ¾Æ·§±Û
³»¾Ë FREECOUNT.NET ÇÁÄ«³Ý »ý±ä³¯ 2003.12.20 Ȩ | Ä«¿îÅÍ | Ç÷¡½ÃºÏ | ÇÁ¸®º¸µå | Àü±¤ÆÇ | À¥°øºÎ¹æ | Ä¿¹Â´ÏƼ | ÂÊÁöÇÔ