mysql 은 데이타베이스를 디렉토리와 화일형식으로 저장합니다.
그것을 이용하여 좀 무식하지만 빠른 백업방법을 소개합니다.
<pre>
[root@mexplorer /root]# cat backupdb.sh
#!/bin/bash
#
# 아래 방법은 무식한 mysql 백업 방법입니다. 그러나 빠르구요.
# 생성되는 화일은 20010305.tar.gz 와 같은 화일이 저장됩니다.
# 가장최근 화일만 저장되게 되어 있습니다. 만약 이전 백업을 유지하려면
# 맨 아래 for 문 부분을 삭제 하시면 됩니다.
# 백업하는 방법은
# mysql 을 정지시키고
# tar xvfzp /var/backup/20010305.tar.gz
# 로 하고 압축이 풀린 디렉토리에서 *.pid 와 *.sock 를 삭제하고 mysql 을 작동하시면 됩니다.
# 이 화일은 /etc/cron.daily 밑에 두시면 자동 백업됩니다.
DATA_DIR=/var/lib/mysql
BACKUP_DIR=/var/backup
DATE=$(date +%Y%m%d)
tar cvfzp $BACKUP_DIR/$DATE.tar.gz $DATA_DIR
for i in $( ls $BACKUP_DIR ); do
if [ -f $BACKUP_DIR/$i ]; then
if [ $i != $DATE.tar.gz ]; then
rm -f $BACKUP_DIR/$i
fi
fi
done
[root@mexplorer /root]#
</pre>
위 방법은 좀 편법인 방법이기도 하지만 데이타 용량이 크더라도
서버 백업부하를 적게 차지합니다.
: 안녕하세요.
: 전체 모든 db를 백업할때는 --all-databases > 파일명 하시면 됩니다.
: ilubzzon
:
:
: : :
: : : <hr>
: : : #!/bin/bash
: : : BACKUP_DIR=/var/backup
: : : FILE_PFX =MY_DB
: : :
: : : DATE=$(date +%Y%m%d)
: : : OF = $FILE_PFX-$DATE.sql
: : : rm -rf $BACKUP_DIR/$FILE_PFX-*.sql
: : :
: : : mysqldump -uUSER -pPASS DB_NAME > $BACKUP_DIR/$OF
: : : <hr>
: : :
: : : 간단히 만들어 보았습니다.
: : : 백업데이타는 MY_DB-20010228.sql 이런식으로
: : : /var/backup 밑에 생깁니다.
: : :
: : : BACKUP_DIR 은 백업받고 싶은 디렉토리 이구요..
: : : FILE_PFX 은 저장할 파일 이름의 프리픽스 정도..
: : : 날마다 백업된걸 가지고 있고 싶으시면(충분한 하드용량이 된다면)
: : : rm -rf ........ 이줄은 주석처리해도 무방..
: : : mysqldump 다음은 알죠? 사용자명과 패스워드 DB명..
: : :
: : : /etc/cron.daily 밑에 복사해주시고..
: : : 실행 권한 주시면 됩니다.
: :
: : ----------------------------------------------------
: :
: : 안 돌아가는 머리 쥐어 짜면서 만들어 보았습니다.
: :
: : ------ /etc/cron.daily/mysqlcump.cron -------------------
: : #!/bin/sh
: : #
: : #
: : ## Chilbong, Kim <san2 at linuxchannel.net>
: : ## 2001.03.01
: : ## http://www.linuxchannel.net : : ##
: : ##
: : ###########################################
: : ##
: : ## This file name : "mysqldump.cron"
: : ## cp mysqldump.cron /etc/cron.daily/
: : ## chmod 700 /etc/cron.daily/mysqldump.cron
: : ##
: : ###########################################
: : ## user setting
: : ##
: : ##
: : mysql_host="localhost"
: : mysql_rootpasswd="xxxxxxx"
: : backupdir="/var/backup"
: : mysql_backupdir="${backupdir}/mysqldump"
: : mysql_dump="/usr/local/mysql/bin/mysqldump"
: : mysql_show="/usr/local/mysql/bin/mysqlshow"
: : ##
: : ## Are you compress 'xxxx-2001xxxx-xx.sql' ?
: : ## 1 = yes(xxxx-2001xxxx-xx.sql.gz)
: : ## 0 = no
: : db_compress="1"
: : ##
: : ## end user setting !!!
: : ############################################
: :
: : sysdtime=`date +%Y%m%d-%H`
: : mysql_connect="-h $mysql_host -u root -p$mysql_rootpasswd"
: : mysql_DBs=`$mysql_show $mysql_connect | egrep -v "(Databases|+)" | awk '{print $2}' 2>/dev/null`
: :
: : mysql_dump_work() {
: : mysql_each_DB="$1"
: : mysql_dump_file="${mysql_backupdir}/${mysql_each_DB}-${sysdtime}.sql"
: : $mysql_dump $mysql_each_DB > $mysql_dump_file
: : if [ "$db_compress" = "1" ] ; then
: : gzip -9 $mysql_dump_file
: : fi
: : }
: :
: : if [ "$mysql_DBs" != "" ] ; then
: :
: : if [ ! -d "$mysql_backupdir" ] ; then
: : mkdir -p "$mysql_backupdir"
: : chmod 700 "$mysql_backupdir"
: : fi
: :
: : for mysql_DB in $mysql_DBs ; do
: : mysql_dump_work $mysql_DB
: : done
: :
: : chmod -R 600 $mysql_backupdir
: : #chown -R root $mysql_backupdir
: :
: : fi
: :
: : exit 0
: : ----------------------------------------------------------------
: :
: : --
: : LinuxChannel.NET
:
: --
: ㅠㅠ
--
서명이라..