회사에서 사용하는 무료툴이다...

리눅스 원격 접속하여 쿼리문을 날리면 알아보기 어렵다... 특히나 자료량이 방대할 때는 더더욱....그래서 HeidiSQL 툴을 사용중이다...

사진 출처 : www.heidisql.com



'Databases > MYSQL' 카테고리의 다른 글

mysql - Replication (Master/Slave 구조) 설정  (0) 2012.02.23
mysql - my.cnf 설정할 때 참고  (0) 2012.02.23
mysql - Replication 정의  (0) 2012.01.16
mysql - 덤프하기 (mysqldump)  (0) 2011.10.07
mysql - telnet으로 사용하기  (0) 2011.08.24

Replication을 조사하면서 여러가지 내용들을 알게 되었다...

MySQL Replication 이란?
  Master/Slave 서버를 각각 준비해 놓고 실시간으로 Master 데이터를 Slave로 동기화 하는 방법을 의미한다.

MySQL Replication 설계 구조
  - Master/Slaver
  - Master/Master

MySQL Replication 유용할 수 있는 내용
  - 부하 균형
  - 백업 및 복구

MySQL Replication을 왜 사용하는가?
  각자 역할 분담하여 부하 분산 효과를 가지기 위해 사용한다. Master 서버의 경우 INSERT, UPDATE, DELETE만 처리하고 Slave 서버는 SELECT 만 처리하도록 하여 분산 효과를 가질 수 있다. Master서버의 내용을 동기화로 모두 지니고 있는 Slave 서버는 서비스의 상황에 따라 단일 또는 다중으로 이루어질 수 있다.
  Master 서버가 동작 이상을 보였을 때 Slave 서버로 대체할 수 있는 잇점을 지니고 있다. 동기화만 제대로 되어 있다면 Slave 서버가 Master 서버로 변경하여 사용한다. 왜냐하면 Master 내용을 Slave가 모두 지니고 있기 때문이다.

DUMP와 Replication의 차이점
dump 기능은 실시간으로 데이터를 복사본으로 가지고 있을 수 없으므로 실시간으로 데이터 복원이 필요할 때 Replication 기능을 사용한다. 특정 시점으로 복원이 필요한 경우에는 dump를 사용도 유용하게 사용할 수 있다.
Replication에 사용하는 Log를 주기적으로 비워주지 않는다면 용랴으이 압박을 받을 수 있다는 사실도 명심해야 한다.
dump는 반대로 데이터의 누적으로 용량이 지속적으로 불어날 수 있다. 기간에 따라 용량의 압박을 받을 수도 있고 아닐 수도 있다.


마지막으로...
  Replication 도입은 대규모 회원이 존재하고 있는 가정으로 DB의 빠른 데이터 처리를 목적으로 보인다... DB의 경우 튜닝을 제대로 하지 않는 경우 DB 쿼리 밀림 현상이 발생되는 부분을 본적이 있다... 가장 많은 비중을 차지하는 부분을 별도로 떼어 놓고 중요한 write 기능을 수행할 수 있도록 하는 부분은 매력 있는것 같다... 아직은 미숙한 프로그래머이기에 정확히 어떻게 설계를 하는게 옳은지는 모르겠으나... 이 기능을 정확히 알고 활용하면 보다 효율적인 서버와 DB의 관계를 만들어 낼 수 있을 것 같다는 생각은 든다...

'Databases > MYSQL' 카테고리의 다른 글

mysql - my.cnf 설정할 때 참고  (0) 2012.02.23
mysql - HeidiSQL Tool 소개  (0) 2012.01.20
mysql - 덤프하기 (mysqldump)  (0) 2011.10.07
mysql - telnet으로 사용하기  (0) 2011.08.24
mysql - 날짜와 관련된 함수 정보 정리  (0) 2011.08.24

visual studio 2005를 사용하던 도중 source safe로 여러명이 작업하는 경우 축적된 변경 코드들이 내 컴퓨터로
유입되면서 선언과 정의 찾아가기가 틀리는 경우가 발생되었다...

visual studio 2005를 종료 후
해당 프로젝트 폴더에 존재하는 0000.ncb 파일을 삭제 후 다시 실행하면 정상적으로 돌아온다...


원리는 다음과 같다... 모든 파일 정보들을 다시 로드하므로 현상 해결이 가능하다...



다양한 옵션들을 모두 모르지만 자주 사용하는 2개를 기입해둔다...
가끔 사용하는 것이라 이상하게 까먹는 ㅡㅡ;;



압축하기

tar  vfzc   [압축파일이름].tar.gz  [압축할 파일 이름]
tar  vfzc   [압축파일이름].tar.gz  [압축할 폴더 이름]


압축 해제 하기

tar  vfzx   [압축파일이름].tar.gz


자주 사용하면 언젠가는 잊어버리지 않고 머리속에 저장되어 있겠지...ㅋㅋ

'OS > LINUX' 카테고리의 다른 글

Linux - 부팅 화면 변경하기  (0) 2012.02.27
Linux - 네트워크 세팅하기  (0) 2012.02.27
Linux - RAID란?  (0) 2011.11.01
Linux - 시간 변경 명령어  (0) 2011.10.21
리눅스 명령어 모음 (개인 자주 사용 모음)  (0) 2011.08.30

나라 이름 숫자 alpha-3 alpha-2
가나 288 GHA GH
가봉 266 GAB GA
가이아나 328 GUY GY
감비아 270 GMB GM
과들루프 312 GLP GP
과테말라 320 GTM GT
316 GUM GU
그레나다 308 GRD GD
그루지야 268 GEO GE
그리스 300 GRC GR
그린란드 304 GRL GL
기니 324 GIN GN
기니비사우 624 GNB GW
나미비아 516 NAM NA
나우루 520 NRU NR
나이지리아 566 NGA NG
남극 010 ATA AQ
남아프리카 공화국 710 ZAF ZA
네덜란드 528 NLD NL
네덜란드령 안틸레스 530 ANT AN
네팔 524 NPL NP
노르웨이 578 NOR NO
노퍽 섬 574 NFK NF
누벨칼레도니 540 NCL NC
뉴질랜드 554 NZL NZ
니우에 570 NIU NU
니제르 562 NER NE
니카라과 558 NIC NI
대한민국 410 KOR KR
덴마크 208 DNK DK
도미니카 212 DMA DM
도미니카 공화국 214 DOM DO
독일 276 DEU DE
동티모르 626 TLS TL
라오스 418 LAO LA
라이베리아 430 LBR LR
라트비아 428 LVA LV
러시아 643 RUS RU
레바논 422 LBN LB
레소토 426 LSO LS
레위니옹 638 REU RE
루마니아 642 ROU RO
룩셈부르크 442 LUX LU
르완다 646 RWA RW
리비아 434 LBY LY
리투아니아 440 LTU LT
리히텐슈타인 438 LIE LI
마다가스카르 450 MDG MG
마르티니크 474 MTQ MQ
마셜 제도 584 MHL MH
마요트 175 MYT YT
마카오 446 MAC MO
마케도니아 공화국 807 MKD MK
말라위 454 MWI MW
말레이시아 458 MYS MY
말리 466 MLI ML
멕시코 484 MEX MX
모나코 492 MCO MC
모로코 504 MAR MA
모리셔스 480 MUS MU
모리타니 478 MRT MR
모잠비크 508 MOZ MZ
몬트세랫 500 MSR MS
몰도바 498 MDA MD
몰디브 462 MDV MV
몰타 470 MLT MT
몽골 496 MNG MN
미국 840 USA US
미국령 군소 제도 581 UMI UM
미국령 버진아일랜드 850 VIR VI
미얀마 104 MMR MM
미크로네시아 연방 583 FSM FM
바누아투 548 VUT VU
바레인 048 BHR BH
바베이도스 052 BRB BB
바티칸 시국 336 VAT VA
바하마 044 BHS BS
방글라데시 050 BGD BD
버뮤다 060 BMU BM
베냉 204 BEN BJ
베네수엘라 862 VEN VE
베트남 704 VNM VN
벨기에 056 BEL BE
벨라루스 112 BLR BY
벨리즈 084 BLZ BZ
보스니아 헤르체고비나 070 BIH BA
보우벳 섬 074 BVT BV
보츠와나 072 BWA BW
볼리비아 068 BOL BO
부룬디 108 BDI BI
부르키나파소 854 BFA BF
부탄 064 BTN BT
북마리아나 제도 580 MNP MP
불가리아 100 BGR BG
브라질 076 BRA BR
브루나이 096 BRN BN
사모아 882 WSM WS
사우디아라비아 682 SAU SA
사우스조지아 사우스샌드위치 제도 239 SGS GS
산마리노 674 SMR SM
상투메 프린시페 678 STP ST
생피에르 미클롱 666 SPM PM
서사하라 732 ESH EH
세네갈 686 SEN SN
세르비아 몬테네그로 891 SCG CS
세이셸 690 SYC SC
세인트루시아 662 LCA LC
세인트빈센트 그레나딘 670 VCT VC
세인트키츠 네비스 659 KNA KN
세인트헬레나 섬 654 SHN SH
소말리아 706 SOM SO
솔로몬 제도 090 SLB SB
수단 736 SDN SD
수리남 740 SUR SR
스리랑카 144 LKA LK
스발바르 얀마옌 744 SJM SJ
스와질란드 748 SWZ SZ
스웨덴 752 SWE SE
스위스 756 CHE CH
슬로바키아 703 SVK SK
슬로베니아 705 SVN SI
시리아 760 SYR SY
시에라리온 694 SLE SL
싱가포르 702 SGP SG
아랍에미리트 784 ARE AE
아루바 533 ABW AW
아르메니아 051 ARM AM
아르헨티나 032 ARG AR
아메리칸사모아 016 ASM AS
아이슬란드 352 ISL IS
아이티 332 HTI HT
아일랜드 372 IRL IE
아제르바이잔 031 AZE AZ
아프가니스탄 004 AFG AF
안도라 020 AND AD
알바니아 008 ALB AL
알제리 012 DZA DZ
앙골라 024 AGO AO
앤티가 바부다 028 ATG AG
앵귈라 660 AIA AI
에리트레아 232 ERI ER
에스토니아 233 EST EE
에스파냐 724 ESP ES
에콰도르 218 ECU EC
에티오피아 231 ETH ET
엘살바도르 222 SLV SV
영국 826 GBR GB
영국령 버진아일랜드 092 VGB VG
영국령 인도양 식민지 086 IOT IO
예멘 887 YEM YE
오만 512 OMN OM
오스트레일리아 036 AUS AU
오스트리아 040 AUT AT
온두라스 340 HND HN
올란드 제도 248 ALA AX
요르단 400 JOR JO
우간다 800 UGA UG
우루과이 858 URY UY
우즈베키스탄 860 UZB UZ
우크라이나 804 UKR UA
월리스 푸투나 876 WLF WF
이라크 368 IRQ IQ
이란 364 IRN IR
이스라엘 376 ISR IL
이집트 818 EGY EG
이탈리아 380 ITA IT
인도네시아 360 IDN ID
인도 356 IND IN
일본 392 JPN JP
자메이카 388 JAM JM
잠비아 894 ZMB ZM
적도 기니 226 GNQ GQ
조선민주주의인민공화국 408 PRK KP
중앙아프리카 공화국 140 CAF CF
중화민국 158 TWN TW
중화인민공화국 156 CHN CN
지부티 262 DJI DJ
지브롤터 292 GIB GI
짐바브웨 716 ZWE ZW
차드 148 TCD TD
체코 203 CZE CZ
칠레 152 CHL CL
카메룬 120 CMR CM
카보베르데 132 CPV CV
카자흐스탄 398 KAZ KZ
카타르 634 QAT QA
캄보디아 116 KHM KH
캐나다 124 CAN CA
케냐 404 KEN KE
케이맨 제도 136 CYM KY
코모로 174 COM KM
코스타리카 188 CRI CR
코코스 제도 166 CCK CC
코트디부아르 384 CIV CI
콜롬비아 170 COL CO
콩고 공화국 178 COG CG
콩고 민주 공화국 180 COD CD
쿠바 192 CUB CU
쿠웨이트 414 KWT KW
쿡 제도 184 COK CK
크로아티아 191 HRV HR
크리스마스 섬 162 CXR CX
키르기스스탄 417 KGZ KG
키리바시 296 KIR KI
키프로스 196 CYP CY
타이 764 THA TH
타지키스탄 762 TJK TJ
탄자니아 834 TZA TZ
터크스 케이커스 제도 796 TCA TC
터키 792 TUR TR
토고 768 TGO TG
토켈라우 제도 772 TKL TK
통가 776 TON TO
투르크메니스탄 795 TKM TM
투발루 798 TUV TV
튀니지 788 TUN TN
트리니다드 토바고 780 TTO TT
파나마 591 PAN PA
파라과이 600 PRY PY
파키스탄 586 PAK PK
파푸아 뉴기니 598 PNG PG
팔라우 585 PLW PW
팔레스타인 275 PSE PS
페로스 제도 234 FRO FO
페루 604 PER PE
포르투갈 620 PRT PT
포클랜드 제도 238 FLK FK
폴란드 616 POL PL
푸에르토리코 630 PRI PR
프랑스 250 FRA FR
프랑스령 기아나 254 GUF GF
프랑스령 남부 지역 260 ATF TF
프랑스령 폴리네시아 258 PYF PF
피지 242 FJI FJ
핀란드 246 FIN FI
필리핀 608 PHL PH
핏케언 섬 612 PCN PN
허드 맥도날드 제도 334 HMD HM
헝가리 348 HUN HU
홍콩 344 HKG      



#ifndef    TEST_H_
#define   TEST_H_

-   내용 생략  -

#endif

> macro wrapper방식을 이용하여 중복 include를 제거하는데 사용되는 예제 코드이다.
   이 코드는 TEST_H_ 가 define 되어 있다면 더 이상 읽지 않는다.

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

#pragma once

  - 내용 생략 -

> 컴파일러에게 이 파일을 한번만 읽으면 되는것을 알려주는 코드이다.

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


두 코드의 차이점은 ifndef은 비교를 지속적으로 하므로 컴파일러 속도가 늦어진다... 하지만 한번 읽으면
더 이상 읽지 않아도 된다는 pragma는 속도가 좀 빠르게 된다... 하지만 두 개의 코드는 동일한 기능을
하고 있다... 컴파일 속도가 조금 더 빠른 방법이 좋지 않을까라는 생각을 해본다...

참고 : #pragma는 표준에서 정의도니 전처리기 지시어가 맞다고 한다.

RAID란?
  본체에 부착된 여러개의 하드를 연결하여 속도 향상, 자동 백업 등을 설정하는데 사용되는 기술이다.


▷ RAID의 종류
RAID0 (레이드0 - 스트라이핑)
  - 여러 개의 하드 디스크를 하나로 연결하여 사용한다. 즉 분산 저장이다.
    분산 저장은 하드 디스크가 2개를 RAID0으로 설정했다면 2개의 하드에 각각 나누어 한개의 파일을 저장한다.
    예를 들어 영화 AVI 파일을 다운로드 받았다고 한다면 이 파일을 하드 2개에 분산 저장하는 것이다.
    단점은 하나의 하드가 고장 났다면 분산 저장되어 있게 때문에 파일을 사용할 수 없는 치명적 결함이 존재한다.

RAID1 (레이드1 - 미러링)
  - 자신의 모습을 거울로 보면 똑같은 모습을 보듯이 하드의 내용을 백업해 놓는다.
    미러링은 안전성을 생각하여 저장된 내용을 다른 하드에 똑같이 저장해 놓는다.

RAID5 (레이드5 - 스트라이핑 + 패리티)
  - 패리티는 하드의 일부분을 복구용 정보를 저장할 수 있는 용량을 할애한다.
    복구를 위해 레이드5로 설정하면 분산 저장하고 복구용 정보를 저장까지 하므로 복구가 가능한 RAID0으로
    생각하면 된다.



내가 아는 동생네 회사에서는 레이드5로 구성한다고 한다... 울 회사는 상황에 따라 레이드 0 또는 레이드 1로 묶었다...
이해만 하고 있을 뿐 어떤게 더 좋은지는 찾아봐야겠다... 또는 경험을 해봐야 알듯하다...

개인적으로 RAID5가 더 좋을것 같은 생각은 든다... 속도도 빠르면서 복구가 가능하다고 하니... 매력 있는거 같다...

< #define을 사용하는 경우 >

1. 국가별 코드가 다르게 들어가야 하는 경우.

2. 버전에 따라 코드가 다르게 들어가야 하는 경우.

3. 솔루션(구성 관리자)에 따라 각각 다르게 빌드 되어야 하는 경우. (Ex. Debug, Release, Etc...) 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#define A_SYSTEM       //기존 코드
#define B_SYSTEM       //신규 추가 코드
 
 
#ifdef A_SYSTEM
      #ifdef B_SYSTEM
              // 신규 추가 코드
      #else
              // 기존 코드
      #endif
#endif
 
==================================================================================
 
#if defined (A_SYSTEM) || defined (B_SYSTEM)
     // 코드 또는 디파인
#endif
 
#if defined (A_SYSTEM) && defined (B_SYSTEM)
     // 코드 또는 디파인
#endif
 
==================================================================================
 
#if defined (A_SYSTEM)
     // 코드 또는 디파인
#elif defined (B_SYSTEM)
     // 코드 또는 디파인
#else
     // 코드 또는 디파인
#endif
 
cs



#define의 장점은 구분이 명확하지만 많이 포함되면 엄청난 난독형 코드가 될 가능성이 높다.

SVN을 이용하여 Revision으로 #define을 대체하는 경우도 존재 한다.


SVN은 Revision 관리가 소홀히 되는 경우 오동작 버그 발생하는 경우를 종종 봐 왔는데 오히려 관리가 소홀하다면 #define이 더 좋을 수 있다는 생각도 든다.


SVN의 시스템 구현별 Revision 관리만 잘 된다면 난독 코드가 될 가능성이 낮기 때문에 개인적으로 선호한다.





rdate -s time.bora.net
rdate -s time.nist.gov
rdate -s time.nuri.net
rdate -s ntp1.gngidc.net
rdate -s ntp2.gngidc.net

타임 서버가 동작하지 않을 수 있으니 둘 중하나를 해보고 date를 확인하면 된다....


서버를 구동 시킨 후 운영자 명령을 내렸는데 동작이 되지 않아 엇?? 코드가 이상한가?라며 디버그를 했었지만 문제는 바로 리눅스의 시간 설정이 잘못되었었다.... -_-;;; 그래서 명령어를 찾아 보던중에 위의 명령어들을 찾게 되었다...


시간 변경 해주니 이상없이 동작된다... ^^v


'OS > LINUX' 카테고리의 다른 글

Linux - tar 압축 프로그램  (0) 2011.12.22
Linux - RAID란?  (0) 2011.11.01
리눅스 명령어 모음 (개인 자주 사용 모음)  (0) 2011.08.30
리눅스에서 쉘스크립트 참고 사이트  (0) 2011.08.24
Linux - CRONTAB 사용법  (0) 2011.08.24

▷ mysql 덤프 기본 명령

    mysqldump  -u [계정]  -p [비번]  [DB이름]  >  파일명.sql


▷ mysql 덤프할 때 응용 명령

  // 로컬이 아닌 경우 다른 호스트 DB를 받아올 때 사용
   mysqldump  -u [계정]  -p  [비번]  -h [아이피]  [DB이름]  > 파일명.sql

  // 데이터 삭제 후 생성 금지로 덤프 받기 (데이터만 추가하는 경우에 사용)
   mysqldump  -u [계정]  -p  [비번]  -h [아이피]  [DB이름]  --no-create-info > 파일명.sql

  // 조건문 넣어서 덤프 하기
   mysqldump -u [계정]  -p [비번]  -w'startdate < curdate() and startdate > curdate()-1' [DB이름] > 파일명.sql


▷ mysql 덤프 파일을 밀어 넣기

   mysql  -u [계정]  -p [비번]  [DB이름]  <  파일명.sql


▷ 강제로 옵션주는 경우 (이 부분은 정확히 찾아보지 않고 기존의 코드를 보고 작성한 것임.)

    // 위의 명령이 안먹는 경우 아래 옵션을 해보는 방법을 ...
    -a -c -q -Q -e --no-create-info

'Databases > MYSQL' 카테고리의 다른 글

mysql - HeidiSQL Tool 소개  (0) 2012.01.20
mysql - Replication 정의  (0) 2012.01.16
mysql - telnet으로 사용하기  (0) 2011.08.24
mysql - 날짜와 관련된 함수 정보 정리  (0) 2011.08.24
mysql - 서브 쿼리 사용시 주의  (0) 2011.08.24

1. 자동 형변환이 다르다
   - windows에서 개발 툴로 visual studio를 사용하고 컴파일하면 에러나지 않는 코드는 아래와 같다.

      int a = a * 0.5;

   -  위의 코드를 Linux에서 컴파일하면 오류이다. 자동 형변환이 안된다....-_-;;;

      int a = (int)(a * 0.5);


2. 제공되는 함수가 다르다
   - 윈도우에서 제공하는 함수가 있고 리눅스에서 제공하는 함수가 있으므로 공통으로 사용되는 함수를 사용해야 한다.
   - 윈도우 독자 제공 유요한 함수를 사용하면 리눅스에서는 컴파일 되지 않으므로 멀티 플랫폼으로 개발할 때
     주의가 필요하다.


윈도우 환경에서 개발하고 리눅스 환경에서 구동하는 경우 신입인 나에겐 색다른 경험이기도 하지만 많은 것들을 배울 수 있어 좋다.... 부스트라는 것도 사용해보는데 컴파일할 때는 느리지만 동작에는 최적의 상태를 나타냈기에 사용할거라 예상된다... ^^* 아직 부스트에 대한 부분은 많이 몰라 찾아보고 있다... ^^

사용 설명

명령어 샘플

삭제 (remove)

rm –rf [디렉토리명]

rm [파일명]

디렉토리 삭제 (파일은 삭제 안됨)

rmdir [디렉토리명]

원격 접속

telnet [address]

리눅스 종료

shoutdown –r now

reboot

디렉토리 현재 위치 확인

pwd

명령어 입력 내역 조사

History

파일 허가상태 변경

chmod  744  [파일명]

원격 접속을 이용하여 파일 가져오기

scp  [option]  [user@host:]  [파일명]

-r : 지정한 디렉토리의 하위 디렉토리 및 파일 복사

-v : 진행사항을 보여주는 옵션

한페이지 보기 옵션

| more

mysql 콘솔 접속

mysql –u [user] –p [passwd]

mysql –u [user] –p [passwd] [tableName]

mysql –u [user] –p -h[network Address]

리눅스 배포판 버전 정보

lsb_release  –a

리눅스 커널 버전 정보

uname  -a

메모리 용량 정보

free

디스크 용량 정보

df

네트워크 정보

ifconfig

Setup 설정

Setup

네트워크 설정 파일 주소

설정파일 : /etc/sysconfig/network-script/ifcfg-eth0

서버이름 : /etc/sysconfig/network

DNS : /etc/resolv.conf

다른 서버 이름 저장 목록 : /etc/hosts

'OS > LINUX' 카테고리의 다른 글

Linux - RAID란?  (0) 2011.11.01
Linux - 시간 변경 명령어  (0) 2011.10.21
리눅스에서 쉘스크립트 참고 사이트  (0) 2011.08.24
Linux - CRONTAB 사용법  (0) 2011.08.24
[Linux] 데이터베이스 백업과 복원  (0) 2011.08.24

http://msdn.microsoft.com/ko-kr/library/dd409393.aspx

visual studio 2010 버전에서 지원하는 내용을 서술했는데... 이해하기 쉽게 접근한 그림이 마음에 든다...

이전에 관심을 갖고 여러 사이트들을 참고하고 봤더니 이해가 쉬워 링크를 걸어 놓았다....
UML을 이용하니 구조 파악하기도 용이하고 내가 무엇을 만들어야 할지도 머리속에 그려지니
용이하게 사용되는것 같다....


http://wiki.kldp.org/HOWTO//html/Adv-Bash-Scr-HOWTO/index.html

리눅스를 사용하다보면 쉘 스크립트를 사용하게 되는 경우가 종종 생긴다....
예를 들어 crontab을 사용하여 스케쥴러를 하는 경우도 있고 반복적인 명령들을 빠르게 쉘 스크립트 명령으로
미리 만들어 사용한다.

위의 사이트를 참고하여 연습한다면 좋을 것 같아 링크를 걸어두게 되었다...

'OS > LINUX' 카테고리의 다른 글

Linux - RAID란?  (0) 2011.11.01
Linux - 시간 변경 명령어  (0) 2011.10.21
리눅스 명령어 모음 (개인 자주 사용 모음)  (0) 2011.08.30
Linux - CRONTAB 사용법  (0) 2011.08.24
[Linux] 데이터베이스 백업과 복원  (0) 2011.08.24

▷ mysql 접속
    mysql -u[사용자아이디] -p[비번]

    mysql -u[사용자아이디] -p[비번] [DB명]
    : DB에 바로 접속이 가능한 명령이다....

▷ mysql DB 사용
    USE [DB명]

▷ mysql DB & TABLE 보기
    SHOW databases;   / SHOW tables;

▷ 현재 상태 보기
    status



mysql에 접속하고 DB를 지정하지 않았다면 USE 명령을 사용하면 된다.
쿼리 명령은 동일하므로 패스!!

시작, 종료, 재시작

/etc/rc.d/init.d/crond start/stop/restart

실행 확인

ps ef | grep crond

설정 파일 확인

cat /etc/crontab

실행 등록 리스트

crontab l

실행 등록

crontab e

n  작성하기

먼저 인자를 알아야 한다. crontab 공백문자를 구분자로 해서 라인에 6개의 인자를 적어주면 끝이다. 인자는 순서대로 아래와 같다. 매주 새벽 4시에.. 라는 식의 스케줄을 아래 인자로 표현해 주면 된다.

  Arg 1 : minute ( 0 59 )

  Arg 2 : hour ( 0 23 )

  Arg 3 : day of month ( 1 31 )

  Arg 4 : month ( 1 12 )

  Arg 5 : day of week ( 0 6 ) 0 : 일요일

Arg 6 : 명령어 or 실행파일 path

n  샘플

매일 새벽 4 실행 : 0 4 * * * /repository/cron.sh

매주 ,토요일에 오전 8:20 실행 : 20 8 * * 3,6 /repository/cron.sh

매월 25 0시에 실행 : 0 0 25 * * /repository/cron.sh

1 6 1 자정 실행 : 0 0 1 1,8 * /repository/cron.sh



▷ 분 단위 실행을 하려면?
   */2 * * * * /home/0000.sh
▷ 어디에선가 펌한거 같은데 사이트가 기억이 안난다... ^^;;;

- DAYOFWEEK(date) : 해당 날짜의 요일을 숫자로 반환한다. 일요일은 1, 토요일은 7 이다.

- : select DAYOFWEEK('1998-02-03');

 

- WEEKDAY(date) : 해당 날짜에 대한 요일을 반환한다. 월요일은 0, 일요일은 6 이다.

- : select WEEKDAY('1997-10-04 22:23:00');

 

- DAYOFYEAR(date) : 해당 날짜의 1 1일부터의 날수를 반환한다. 결과값은 1에서 366 까지이다.

- : select DAYOFYEAR('1998-02-03');

 

- YEAR(date) : 해당 날짜의 년을 반환한다.

- : select YEAR('98-02-03');

 

- MONTH(date) : 해당 날짜의 월을 반환한다.

- : select MONTH('1998-02-03');

 

- DAYOFMONTH(date) : 해당 날짜의 일을 반환한다. 결과값은 1 에서 31 까지이다.

- : select DAYOFMONTH('1998-02-03');

 

- HOUR(time) : 해당날짜의 시간을 반환한다. 결과값은 0 에서 23 이다.

- : select HOUR('10:05:03');

 

- MINUTE(time) : 해당날짜의 분을 반환한다. 결과값은 0 에서 59 이다.

- : select MINUTE('98-02-03 10:05:03');

 

- SECOND(time) : 해당날짜의 초를 반환한다. 결과값은 0 에서 59 이다.

- : select SECOND('10:05:03');

 

- DAYNAME(date) : 해당 날짜의 요일 이름을 반환한다. 일요일은 'Sunday' 이다.

- : select DAYNAME("1998-02-05");

 

- MONTHNAME(date) : 해당 날짜의 월 이름을 반환한다. 2월은 'February' 이다.

- : select MONTHNAME("1998-02-05");

 

- QUARTER(date) : 해당 날짜의 분기를 반환한다. 결과값은 1 에서 4 이다.

 

- WEEK(date,first) : 1 1일부터 해당날가지의 주 수를 반환한다. 주의 시작을 일요일부터 할경우는 두번째 인자를 0, 월요일부터 시작할 경우는 1 을 넣는다. 결과값은 1 에서 52 이다.

- : select WEEK('1998-02-20',1);

 

- PERIOD_ADD(P,N) : P (형식은 YYMM 또는 YYYYMM 이어야 한다.) N 만큼의 달 수를 더한값을 반환한다. 주의할것은 두번째 인자는 숫자라는 것이다.

- : select PERIOD_ADD(9801,2);

 

- PERIOD_DIFF(P1,P2) : 두개의 인자 사이의 달 수를 반환한다. 두개의 인자 모두 형식은 YYMM 또는 YYYYMM 이어야 한다.

 

- DATE_ADD(date,INTERVAL expr type) : 날짜를 더한 날짜를 반환한다.

- DATE_SUB(date,INTERVAL expr type) : 날짜를 뺀 날짜를 반환한다.

- ADDDATE(date,INTERVAL expr type) : DATE_ADD(date,INTERVAL expr type) 와 동일하다.

- SUBDATE(date,INTERVAL expr type) : DATE_SUB(date,INTERVAL expr type) 와 동일하다.

- EXTRACT(type FROM date) : 날짜에서 해당 부분을 추출한다.

- : SELECT DATE_ADD("1997-12-31 23:59:59", INTERVAL 1 SECOND);

SELECT DATE_ADD("1997-12-31 23:59:59", INTERVAL 1 DAY);

SELECT DATE_ADD("1997-12-31 23:59:59", INTERVAL "1:1" MINUTE_SECOND);

SELECT DATE_SUB("1998-01-01 00:00:00", INTERVAL "1 1:1:1" DAY_SECOND);

SELECT DATE_ADD("1998-01-01 00:00:00", INTERVAL "-1 10" DAY_HOUR);

SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY);

SELECT EXTRACT(YEAR FROM "1999-07-02");

SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03");

SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03");

- 참고 : type 에 사용되는 키워드는 SECOND, MINUTE, HOUR, DAY, MONTH, YEAR, MINUTE_SECOND, HOUR_MINUTE, DAY_HOUR, YEAR_MONTH, HOUR_SECOND, DAY_MINUTE, DAY_SECOND 이다.

- 주의 : 계산한 달의 날수가 작을 경우는 해당달의 마지막 날을 반환한다. 예를 들어 select DATE_ADD('1998-01-30', Interval 1 month); 의 경우 1998-02-28 을 반환한다.

 

- TO_DAYS(date) : 0 년 부터의 날짜수를 반환한다. 이 함수는 1582 이전 날에 대해서는 계산하지 않는다.

- : select TO_DAYS(950501);

 

- FROM_DAYS(N) : 해당 숫자만큼의 날짜를 반환한다. 이 함수는 1582 이전 날에 대해서는 계산하지 않는다.

- : select FROM_DAYS(729669);

 

- DATE_FORMAT(date,format) : 날짜를 해당 형식의 문자열로 변환하여 반환한다.

- : select DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');

select DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s');

select DATE_FORMAT('1997-10-04 22:23:00', '%D %y %a %d %m %b %j');

select DATE_FORMAT('1997-10-04 22:23:00', '%H %k %I %r %T %S %w');

- 참고 : 형식은 다음과 같다. %M (달 이름), %W (요일 이름), %Y (YYYY 형식의 년도), %y (YY 형식의 년도), %a (요일 이름의 약자), %d (DD 형식의 날짜), %e (D 형식의 날짜), %m (MM 형식의 날짜), %c (M 형식의 날짜), %H (HH 형식의 시간, 24시간 형식), %k (H 형식의 시간, 24시간 형식), %h (HH 형식의 시간, 12시간 형식), %i (MM 형식의 분), %p (AM 또는 PM)

 

- TIME_FORMAT(time,format) : DATE_FORMAT(date,format) 과 같은 방식으로 사용할수 있으나 날 이상의 것에 대해서는 NULL 이나 0 을 반환한다.

 

- CURDATE() : 현재날짜를 반환한다. 숫자와 연산을 할경우 숫자로 변환된다. 형식은 'YYYY-MM-DD' 또는 YYYYMMDD 이다.

- : select CURDATE();

select CURDATE() + 0;

 

- CURTIME() : 현재시간을 반환한다. 숫자와 연산을 할경우 숫자로 변환된다. 형식은 'HH:MM:SS' 또는 HHMMSS 이다.

- : select CURTIME();

select CURTIME() + 0;

 

- SYSDATE() : 현재날짜시간을 반환한다. 숫자와 연산을 할경우 숫자로 변환된다. 형식은 'YYYY-MM-DD HH:MM:SS' 또는 YYYYMMDDHHMMSS 이다.

- : select NOW();

select NOW() + 0;

 

- NOW() : SYSDATE() 와 동일하다.

 

- UNIX_TIMESTAMP() : '1970-01-01 00:00:00' 부터의 초를 반환한다. 인자가 주어질 경우는 해당 날짜에 대한 유닉스 시간을 반환한다.

- : select UNIX_TIMESTAMP();

select UNIX_TIMESTAMP('1997-10-04 22:23:00');

 

- FROM_UNIXTIME(unix_timestamp) : 유닉스시간에서 날짜 형식으로 변환한다.

- : select FROM_UNIXTIME(875996580);

 

- FROM_UNIXTIME(unix_timestamp,format) : 유닉스시간을 날짜형식으로 변환하고 DATE_FORMAT(date,format) 에서 설명한 포맷으로 변환하여 반환한다.

- : select FROM_UNIXTIME(UNIX_TIMESTAMP(), '%Y %D %M %h:%i:%s %x');

 

- TIME_TO_SEC(time) : 해당 시간의 0:0:0 에서부터의 초를 반환한다.

- : select TIME_TO_SEC('22:23:00');

 

- SEC_TO_TIME(seconds) : 초를 시간으로 바꾼다.

- : select SEC_TO_TIME(2378);

Error 1093 (ER_UPDATE_TABLE_USED)

SQLSTATE = HY000

Message = "You can't specify target table 'x'

for update in FROM clause"


이 에러는 다음과 같은 경우에 발생 한다.


UPDATE t1 SET column2 = (SELECT MAX(column1) FROM t1);


여러분은 UPDATE문 내에서 할당을 위한 서브쿼리를 사용할 수 있는데 그 서브쿼리들은 SELECT문 뿐만 아니라 UPDATE DELETE문들 내에서 적합하기 때문이다. 그러나 서브쿼리의 FROM절과 업데이트 target모두를 위해 같은 테이블을 사용할 수 없다.


정리 : 동일한 테이블을 update하고 select하는건 위반이다!! 스토어드 프로시저를 이용해야 할것 같다.


 테이블 단위 백업

 

 mysqldump -u[계정] -p[비번] -h192.0.0.1 -a -c -q -Q -e [DB명] [테이블명] > [파일명].sql


 테이블 단위 복원

 

 mysql -u[계정] -p[비번] -h192.0.0.1 [DB명] [테이블명] < [파일명].sql


 DB 단위 백업


 mysqldump -u[계정] -p[비번] [DB명] > [파일명].sql


 DB 단위 


 mysql -u[계정] -p[비번] [DB명] < [파일명].sql




'OS > LINUX' 카테고리의 다른 글

Linux - RAID란?  (0) 2011.11.01
Linux - 시간 변경 명령어  (0) 2011.10.21
리눅스 명령어 모음 (개인 자주 사용 모음)  (0) 2011.08.30
리눅스에서 쉘스크립트 참고 사이트  (0) 2011.08.24
Linux - CRONTAB 사용법  (0) 2011.08.24


▷ 한 머신에 다른 데이터베이스 접근 방법
   - [DB명].[테이블명] 형태로 접근이 가능하다.

▷ 각각 머신에 데이터베이스 접근 방법
   - MS-SQL처럼 접근은 불가능하다... 5.0부터 FEDERATED 방법을 사용해 보라는 글들이 많다...
   <링크 주소 : http://www.mysqlkorea.co.kr/sub.html?mcode=develop&scode=01&m_no=21940&cat1=14&cat2=427&cat3=460&lang=k >


▷ mysql 5.0 기준으로 소개된 글
There is a hard limit of 4096 columns per table, but the effective maximum may be less for a given table. The exact limit depends on several interacting factors.

<링크 주소 : http://dev.mysql.com/doc/refman/5.0/en/column-count-limit.html>


mysql : 3230 으로 안내하는 분들도 블로그에 보입니다.

아마도 높은 버전으로 상향되면서 지원되는 최대 컬럼수도 점차적으로 늘어난 것 같습니다...
어느정도 코드에 대한 분석이 끝나고 아이템 제작 및 개선 쪽으로 첫 업무를 맡게 되면서 프로시저를 사용이 필요한 상태가 되었다.... 프로시저를 책으로 봤지만 짧은 시간 봤던 이유로 정확히 활용 방법을 몰랐다....

회사 선배의 도움으로 무엇인지 알게 되었는데....
설명을 듣고 함수와 동일하게 동작하는 형태를 보고 결론은 함수와 동일하다로 결론 내렸다....

결론을 토대로 한번 정리해 보았다.... ^^;;;;  (MS-SQL 2000 기준으로 작성해 보았다...)

   프로시저 생성  CREATE  PROCEDURE  [생성이름] 

   매개변수 사용  @nName  int,
 @nTemp  char(13)
 AS

  변수 생성  DECLEAR  @nName  int

 변수 값 설정   SET @nName = 10

 SELECT @nName = strName FROM tableName
 WHERE NameType = 0 

  조건문  IF (@nName < 10)
      BEGIN
         -- TRUE인 경우 실행.
     END
 ELSE
      BEGIN
        -- FALSE인 경우 실행.
     END

  반복문  WHILE (@nName < 10)
    BEGIN
      -- 조건이 TRUE인 경우 계속 반복 수행한다.
    END

  반복문 추가  while (@nName < 10)
 begin
       if (@nName < 2)
       begin
            continue    -- while문에서 처음부터 다시 시작
       end
       break    -- while문에서 강제로 벗어난다.
 end


  랜덤값 구하기  RAND()*100


 참고로 MS-SQL에 나와 있는 도움말은 보기 쉽고 잘 되어 있는거 같다... 한글화도 많은 부분 적용되어 있어 자주 사용되는 쿼리문의 경우 다른 참고 자료 없이 사용이 가능하다.

+ Recent posts