[이현철]님이 남기신 글:
>-----------------------------------------
>답변자가 기본적으로 참고할 내용입니다.
>- 배포판(옵션) :
>- 커널버전(옵션)
:
>- 데몬버전(예:apache
1.3.27) :
>- 데몬설치유형(RPM/컴파일/기타)
:
>-----------------------------------------
>이번에 사양이 좋은 서버에서 스팩이 낮은 시스템으로
>포탈 사이트를 이설 작업을 했습니다.
>
>포털 사이트 구성은 아파치랑 mysql php형태로 움직이고
있습니다.
>현재 이설후 서버 사양은
>cpu
>model name : Pentium III (Coppermine)
>stepping : 3
>cpu MHz : 697.864
>
>메모리
>512M
>
>정도의 꽤 옛날 델 서버입니다.
>
>현재 문제점이 이설후에 cvs형태의 엑셀화일을 사이트에
업로드 할경우
>top으로 보면 mysql이 99%를 차지하면서 4시간정도
걸린후에야
>csv화일이 mysql db에 경우 저장 되네요. ㅠㅠㅠㅠㅠ
>
>
>그렇타고 csv 의 필드라고 해 봐야..2000정도의
라인정도이고
>기존에 있는 db에 저장 된 row수도 경우 3만건정도입니다.
>
>지금까지 사양이 좋은 서버에서는 아무래도 서버
스팩으로
>어째든 견뎌낸 모양인데요. 사양이 낮은 서버로
이설후에
>문제점이 발견된것 같습니다.
>
>서버가 아무리 옛날 놈이라고 해도 서버 문제 보다는
>sql쿼리 문제 인것 같았서..소스를
보니 아래와 같습니다.
>updata 쿼리를 날릴경우에 아래와 같은 방법보다 한방에
해결할수있는
>쿼리는 어떤 형태로 짜면 좋을지..조언 좀
부탁드립니다.
>
>필요없는 부분이 중략했습니다.
>소스를 보니 select해서 있으면,updata하고
없으면 insert 형태인데요
>좀 세련된 방법은 없을까요...
>
>______________________________________________________
> //등록 유저 확인
> $sql = "SELECT * FROM call_cdr_f where opt6 = '$buff_5' AND opt10 =
'$
>buff_9' AND opt16 = '$buff_15' AND opt17 = '$buff_16'";
> $result = mysql_query($sql);
> $num = mysql_num_rows($result);
>
>
> //UPDATE 확인
>
> if($num > "0"){
>
> $sqlstmt = "update call_cdr_f set
> opt1 =
'$buff_0',
> opt2 =
'$buff_1',
> opt3 =
'$buff_2',
> opt4 =
'$buff_3',
>
> where opt6 = '$buff_5' AND opt10 =
'$buf
>f_9' AND opt16 = '$buff_15' AND opt17 = '$buff_16'";
>
>
> // 테이블에 테이타 삽입
> mysql_query($sqlstmt) or dbError(mysql_error());
>
> // 없을 경우에 insert
> }else{
>
> $sqlstmt = "INSERT INTO call_cdr_f
> (opt1, opt2, opt3, opt4, opt5, opt6,
opt
>7, opt8, opt9, opt10,opt11, opt12, opt13, opt14, opt15, opt16, opt17, opt18,
opt
>19, opt20, opt21, opt22)
>----------------------------------------------------------
>
혹시 replace 구문이 제대로 적용할 수 있는 것인지 확인해
보세요.
>
>그리고 하나 더 산이님 조언을 얻고자합니다.
>저는 지금까지 mysql를
백업할때
>mysqldump명령어로
전체 테이블을 백업을 하고 혹시나 해서 mysql테이블
정도
>백업하는 형태로 사용합니다.
>mysqldump -uroot -p --all-databases > ALLdatabases.sql
>mysqldump -uroot -p mysql > MySQL.sql
>
>어떤 분은 /var/lib/mysql 전체를 풀 백업 하는분도 있고 한데
이것을 제 생각으로는 바르지 않다고 생각이 들고요..
>
>어떤분은 /var/lib/mysql/db명/
안에 .MYI 를 전부백업 하는 분도 있는데
>어느 방법이 복구로 가장 적합한지요?
>
>그리고.. /var/lib/mysql/db명/
안에 보면 MYI,MYD,frm 파일등이 있는데요
>이것을 갱신,삭제,변경이
생길경우에 갱신된다고 정도만 알고있습니다.
>역할들이 뭔지 ..조언을 mysql서버에 따라 MYI,MYD,frm 파일이
없는 서버도 있더라고요...
백업에는 크기 text 기반 SQL 덤프와 파일자체 백업이 있습니다.
서로의 장단점은 있습니다.
일반적으로 text 로 먼저 SQL 덤프하고 여유가 있다면 파일도
백업합니다.
백업주기가 짧은 경우는 SQL 로 덤프하고 2-3일에 한번 또는
일주일에
한번 정도 파일 자체백업을 하는 것도 좋습니다.
MYI 인덱스(테이블에서
INDEX 또는 KEY 가 있는 경우에만 있음)
MYD 데이터
frm 테이블구조
입니다. 모두 다 필요합니다.
|