레이블이 db인 게시물을 표시합니다. 모든 게시물 표시
레이블이 db인 게시물을 표시합니다. 모든 게시물 표시

2010년 8월 19일 목요일

Crontab과 쉘스크립트를 이용한 DB백업업

root 아래에 backup.sh 라는 스크립트를 작성한다.

# vi /root/backup.sh

이후 아래 내용을 기재해 준다.

#!/bin/bash
/usr/local/server/mysql/bin/mysqldump -uroot -p비밀번호 mysql > /backup/mysql_db_bak_$(date +%Y%m%d).sql
/usr/local/server/mysql/bin/mysqldump -uDB계정 -p비밀번호 sskim > /백업경로/백업파일명_db_bak_$(date +%Y%m%d).sql
mv *.sql /이동경로
tar cvfpz mysqlbackup.tar.gz /backup/*
tar cvfpz 압축파일명.tar.gz /압축된 백업파일 저장위치/
find /backup -ctime +3 -exec rm -f {} \;

내용을 설명하자면..
#!/bin/bash   -> 쉘 스크립트를 생성
/usr/local/server/mysql/bin/mysqldump -uroot -p비밀번호 mysql > /backup/mysql_db_bak_$(date +%Y%m%d).sql
-> mysql이 설치된 곳에 mysqldump를 이용하여 백업을 진행
mv *.sql /backup
-> 모든 .sql 파일을 /이동경로로 옮김
tar cvfpz mysqlbackup.tar.gz /backup/*
-> 백업된 파일을 tar를 이용하여 지정한 위치로 압축
find /backup -ctime +3 -exec rm -f {} \;
-> 날짜를 체크하여 3일이 경과된 파일을 찾아 삭제

내용은 대충 이렇다. ㅡ.ㅡ;;

이후 :wq 를 이용하여 저장

# chmod 100 /root/backup.sh
명령을 통하여 권한을 부여한다. (즉 이 파일은 수정하지 못하게 함. ^^;)

# crontab -e
명령어 이후에 아래 내용을 삽입
00 06 * * * /root/backup.sh
-> 이내용은 매일 6시에 백업을 진행하라는 뜻.

위와 같이 진행한 이후
/var/spool/cron/root 가 있다면 정상적으로 된 것임.

확인은 경로로 지정한 폴더에 가보면 정상적으로 백업이 되어 있다는 것...

만약 안된다면....
# /etc/init.d/cron restart
를 이용하여 재시작 후 다시 한번 정상적으로 되는지 확인한다.



복구 방법

# mysqldump -u db계정 -p 백업할 db_name > 파일명

위 명령어 실행 후 passward 입력후 db 복구 완료


----------------------------------------------------------
특정 테이블만 백업할 때
>> msqyldump -u root -p -e [database] [table] > backup.sql
모든 데이터베이스
>> msqyldump -u root -p -e --all-databases > backup.sql

특정 데이터베이스
>> msqyldump -u root -p -e --databases [database1] [database2] > backup.sql

복구할 때
>> mysql -u root -p < backup.sql
----------------------------------------------------------

2009년 10월 16일 금요일

[MS-SQL] ASP 에서 DB/TABLE 존재여부 알아내기

출처 : 드래곤아이 웹 스쿨 ( http://www.dragoneye.co.kr/dboard/board/index.asp?url=view&boardid=column11&field=&str=&page=1&sid=2830 )

-------------------------------------------------------------------------------------
■ 디비 존재 여부 알아내기및 이름 정하기
<%
ConnString = "Provider=SQLOLEDB;Data Source=(LOCAL);Initial Catalog=master;User ID=sa;Password=wqewqea1234;"
'//master 디비에 들어갈 수 있는 계정으로 연결문자 작성

set db = server.createobject("adodb.connection")
db.open ConnString

sql = " select name from master.dbo.sysdatabases "
'// 모든(사용자+시스템) 디비이름 가져오기
set rs=db.execute(sql)

if not rs.eof then

do until rs.eof

'//// 여기서 만들려는 디비이름과 중복여부 체크및 이름 바꾸기를 적용해야겟죠. 아래는 그냥 출력만해봅니다
response.write rs("name") & "<br>"

rs.movenext
loop
end if

rs.close
set rs=nothing
db.close
set db=nothing
%>


■ 테이블 존재 여부 알아내기및 이름 정하기

<%

ConnString2 = "Provider=SQLOLEDB;Data Source=(LOCAL);Initial Catalog=son;User ID=sss;Password=1234;"

set db2 = server.createobject("adodb.connection")
db2.open ConnString2

sql = " select name from sysobjects"
'// 모든(사용자+시스템) 테이블이름 가져오기
set rs=db2.execute(sql)

if not rs.eof then
do until rs.eof

'//// 여기서 만들려는 테이블이름과 중복여부 체크및 이름 바꾸기를 적용해야겟죠. 아래는 그냥 출력만해봅니다

response.write rs("name") & "<br>"

rs.movenext
loop
end if

rs.close
set rs=nothing
db2.close
set db2=nothing

%>

============================================================================================

◆ 테이블 존재여부 - 테스트 확인 정상작동됨

<%
' 쿼리문 작성 - 테이블 존재여부 확인
tsql = "SELECT name FROM sysobjects "
tsql = tsql & " WHERE name='테이블이름' "

' 테이블 존재여부 확인
set rs1 = dbconn.execute (tsql)

if rs1.EOF or rs1.BOF then

response.write "<b>테이블이 존재하지 않습니다.</b>"

else

response.write "<b>테이블이 존재합니다.</b>"

end if
%>