>> Real Server Group 1# cur

Current real server group 1:

  name , metric hash, backup none, realthr 0, ipver v4

  rmetric roundrobin, health tcp, content 

  DSR VIP health: enabled

  Workload Manager: none

  IDS Group: disabled  IDS rport: any   IDS flood: disabled

  Operation: enabled

  adv health: 

  real servers:

     1: 192.168.0.11, enabled, name , weight 1, timeout 10 mins, maxcon 200000

       group ena, backup none, inter 2, retry 4, restr 2

       remote disabled, proxy enabled, submac disabled

       fasthc enabled, subdmac enabled

       cookie assignment server: disabled

       exclusionary string matching: disabled

     2: 192.168.0.12, enabled, name , weight 1, timeout 10 mins, maxcon 200000

       group ena, backup none, inter 2, retry 4, restr 2

       remote disabled, proxy enabled, submac disabled

       fasthc enabled, subdmac enabled

       cookie assignment server: disabled

       exclusionary string matching: disabled

     3: 192.168.0.13, enabled, name , weight 1, timeout 10 mins, maxcon 200000

       group ena, backup none, inter 2, retry 4, restr 2

       remote disabled, proxy enabled, submac disabled

       fasthc enabled, subdmac enabled

       cookie assignment server: disabled

       exclusionary string matching: disabled

  real ports:

    4306: vport 4306, rtspslb none

      virtual server:  1, IP4 192.168.0.10,    enabled


L4 알테온 스위치에서 설정하면 메트릭은 뭔지 알겄는데 r메트릭은 뭐지 ?


metric은 뭐 말그대로 부하분산 방식 설정하는건데 구글링하면 겁내 많이 나온다.

근데 rmetric은 도대체 멀까 ? 


일단

     metric   - Set metric used to select next server in group

     rmetric  - Set metric used to select next rport in server(서버에서 다음 rport를 선택하는데 사용되는 메트릭을 설정)
라는데... 음 그렇군요


MariaDB [(none)]> SHOW ENGINE INNODB STATUS\G


latest detected deadlock 항목에서 데드락을 확인할 수 있다.

마지막에 발생한 deadlock만 확인된다. 

내용을 보면


------------------------

LATEST DETECTED DEADLOCK

------------------------

2019-01-24 04:00:03 7f2914242b00 ## 데드락 발생시간

*** (1) TRANSACTION:  ##첫번째 트랜잭션

TRANSACTION 47312201250, ACTIVE 0 sec fetching rows

mysql tables in use 3, locked 3

LOCK WAIT 266 lock struct(s), heap size 30248, 2129 row lock(s)

MySQL thread id 13168615, OS thread handle 0x7f28fac80b00, query id 120397240 192.168.0.213 root updating

UPDATE `TABLE` SET `rsInstall` = '123123', `rsOpen` = '123123'   ##쿼리내용

WHERE `rsToday` = '123123'

AND `rsAdmIdx` = '123123'

AND `rsAffIdx` = '3123123'

AND `rsAdsIdx` = '123123'

AND `rsSubAffIdx` = '1123123'

*** (1) WAITING FOR THIS LOCK TO BE GRANTED:

RECORD LOCKS space id 9873 page no 170251 n bits 88 index `PRIMARY` of table `DB`.`TABLE` trx table locks 1 total table locks 2  trx id 47312201250 lock_mode X locks rec but not gap waiting lock hold time 0 wait time before grant 0     ##이부분이 지금 데드락에 빠진거고

*** (2) TRANSACTION:   ##두번째 트랜잭션

TRANSACTION 47312201244, ACTIVE 0 sec fetching rows

mysql tables in use 3, locked 3

241 lock struct(s), heap size 30248, 5827 row lock(s), undo log entries 22

MySQL thread id 13168659, OS thread handle 0x7f2914242b00, query id 120397235 192.168.0.213 root updating

UPDATE `TABLE` SET `rInstall` = '18123123, `rOpen` = '123123'   ##쿼리내용

WHERE `rsToday` = '123123'

AND `rsAdmIdx` = '123123'

AND `rsAffIdx` = '123123'

AND `rsAdsIdx` = '123213'

AND `rsSubAffIdx` = '123123'

*** (2) HOLDS THE LOCK(S):

RECORD LOCKS space id 9873 page no 170251 n bits 88 index `PRIMARY` of table `DB`.`TABLE` trx table locks 1 total table locks 2  trx id 47312201244 lock_mode X locks rec but not gap lock hold time 0 wait time before grant 0    ##여기도 데드락에 빠졌꼬 

*** (2) WAITING FOR THIS LOCK TO BE GRANTED:

RECORD LOCKS space id 9873 page no 170473 n bits 88 index `PRIMARY` of table `DB`.`TABLE` trx table locks 1 total table locks 2  trx id 47312201244 lock_mode X locks rec but not gap waiting lock hold time 0 wait time before grant 0    ##데드락을 해결하기위해 이부분이 롤백됨

*** WE ROLL BACK TRANSACTION (2)   


위 두개의 트랜잭션이 데드락에 빠졌꼬 이를 해결하기 위해 두번째 트랜잭션이 롤백됐음 을 확인할 수 있다.


음. 난 dba가 아니라서 이걸보고 그다음 뭘 어떠케 해줘야 하는지 모르겠네 그래도 일단 dba한테 알려는 줄 수 있는 se가 되자 

상황


버전 : mysql  Ver 15.1 Distrib 10.1.29-MariaDB, for Linux (x86_64) using readline 5.1



메모리 용량 : ~]# free

             total       used       free     shared    buffers     cached

Mem:      65856248   65592836     263412          4      92876     181636

-/+ buffers/cache:   65318324     537924

Swap:      8389624    6001720    2387904






위와같이 물리 메모리 전부 사용하고 스왑메모리까지 사용하고 있다.



우선 innodb buffer pool size 란 간단하게 innodb용 캐시 사이즈라고 생각하면 될듯하다.



###innodb_buffer_pool_instances 이거는 buffer pool size 를 몇개의 쓰레드로 나눌지. buffer pool size 가 1GB 이상일때만 사용가능


내용 요약하자면
1.설정 안할경우 기본값은 128MB
2.최대값은 32bit의 경우 4GB(그러나 실제로는 더 낮을 수 있다고 한다.), 64bit의 경우 16엑사?바이트(첨봄, 테라>페타>엑사)
3.DB서버로만 이용할경우 물리 메모리의 80%를 권장한다.
4.할당값보다 10% 추가로 할당됨(디스크 파티션 나눌 때 10%정도 빠지는거랑 같은거)

공식홈페이지에 보면 innodb buffer 에대한 여러가지 기능(더블라이트나 뭐 하이튼 겁내 별게 많음)들을 사용하면 성능향상에 도움이 될 꺼같은데 언제 써야 도움이 되는지를 모르겠네...

하여튼 버퍼가 뭔지 알았으니까 이제 버퍼 사이즈를 조정할껀데.. 조정하는 이유를 먼저 알아야한다.(조정할 필요가 없는데 조정하면 안되니까)

조정하는이유는 메모리가 가득차서 스왑메모리영역까지 사용해버린다. 스왑사용하면 속도가 느려지니까 스왑사용안되도록 조치를 해야한다.(정상적으로 메모리가 사용이 되는거라 메모리부족한거면 메모리를 늘려야한다.) 보니까 버퍼 풀 사이즈가 큰거같다. 54GB로 잡혀있다. 이걸 줄여도 될까 자세히 한번 알아봐야겠따.

MariaDB [(none)]> SHOW ENGINE INNODB STATUS\G

SHOW ENGINE INNODB STATUS\G 명령어로 엔진의 상태를 좀 봐봐야겠다.
(
innodb의 상태를 저장해주는 innodb 모니터링이라는게 있는데 이걸 불러오는 명령어가 show engine innodb status 이다.즉 innodb 상태 보는 명령어. 내가 지금 봐야하는 buffer pool memory 섹션외에도 디텍티드 데드락섹션, 트랜잭션 세션이나 세마포어 섹션을 확인하여 데드락의 원인을 파악할 수 있다. 이거 다하고 공부해야지)

나는 buffer pool and memory 섹션을 봐야한다.

----------------------

BUFFER POOL AND MEMORY

----------------------

Total memory allocated 60728279040; in additional pool allocated 0    ### 약 56GB 정도 할당된걸 확인할 수 있음

Total memory allocated by read views 4192

Internal hash tables (constant factor + variable factor)

    Adaptive hash index 1547957664      (917988664 + 629969000)

    Page hash           7172584 (buffer pool 0 only)

    Dictionary cache    231761997       (229498768 + 2263229)

    File system         1032976         (812272 + 220704)

    Lock system         143445008       (143436728 + 8280)

    Recovery system     0       (0 + 0)

Dictionary memory allocated 2263229    ###딕셔너리에 할당된 메모리

Buffer pool size        3538936

Buffer pool size, bytes 57981927424

Free buffers            8189     
##
나는 지금 요부분이 중요하다.
서버의 메모리가 부족하여 스왑메모리가 사용됐고 이걸 방지하기위해 불필요하게 사용되는 메모리는 없는지 찾고있는 상황이였고 디비의 innodb buffer poolsize가 전체 메모리의 약 85~90프로를 차지하고 있다. 따라서 innodb buffer pool size 를 줄여야 하는데.. 줄여도 되는 상황일까 ? 
free buffers 가 8189 이다. 


Database pages          3492297

Old database pages      1288984

Modified db pages       141927

Percent of dirty pages(LRU & free pages): 4.054

Max dirty pages percent: 75.000

Pending reads 0

Pending writes: LRU 0, flush list 117, single page 0

Pages made young 1465646, not young 3638134

6.33 youngs/s, 1.00 non-youngs/s

Pages read 3411009, created 1266390, written 13049586

0.67 reads/s, 19.33 creates/s, 228.46 writes/s

Buffer pool hit rate 999 / 1000, young-making rate 0 / 1000 not 0 / 1000

Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s

LRU len: 3492297, unzip_LRU len: 0

I/O sum[100408]:cur[2856], unzip sum[0]:cur[0]



결론

free buffer가 없으니 그냥 냅뒀따가 메모리 추가해야겠다. 
buffer pool size 의 쓰레드를 8개로 나눠서 사용하고 있는데 이거를 좀 더 잘게 나눠보고싶다. 근데 실 사용 서버이고 내가 갑이 아니라서 괜히 문제생기면 안되니까 걍 메모리 추가해야겠따.


마리아디비 슬로우쿼리를 3초나 5초등으로 적용 했는데도 슬로우쿼리에 모든 쿼리가 전부 쌓이는 증상이 있었다.


제너럴 로그였나 모든 쿼리 쌓는게 슬로우쿼리로 이름이 잘못돼있는건가... 이것저것 찾아보던중


##공식홈페이지 참고##

https://mariadb.com/kb/en/library/server-system-variables/#log_queries_not_using_indexes

log_queries_not_using_indexes

  • Description: Queries that don't use an index, or that perform a full index scan where the index doesn't limit the number of rows, will be logged to the slow query log (regardless of time taken). The slow query log needs to be enabled for this to have an effect.
  • Commandline: --log-queries-not-using-indexes
  • Scope: Global
  • Dynamic: Yes
  • Data Type: boolean
  • Default Value: OFF




위와같은 내용이 있다. 어쩌구 저쩌구 용량 관계없이 쓰여진다 뭐 이런 내용인듯. 기본값은 OFF라는데 왜 이서버들은 ON이냐



MariaDB [(none)]> SHOW VARIABLES LIKE '%log_queries_not_%';    

+-------------------------------+-------+

| Variable_name                 | Value |

+-------------------------------+-------+

| log_queries_not_using_indexes | ON    |

+-------------------------------+-------+

1 row in set (0.00 sec)


확인해보니 켜져있다.


MariaDB [(none)]> set global log_queries_not_using_indexes  = OFF;

Query OK, 0 rows affected (0.00 sec)


MariaDB [(none)]> SHOW VARIABLES LIKE '%log_queries_not_%';       

+-------------------------------+-------+

| Variable_name                 | Value |

+-------------------------------+-------+

| log_queries_not_using_indexes | OFF   |

+-------------------------------+-------+

1 row in set (0.00 sec)


껏다.


해결됐다. ㅋㄷㅋㄷ

'job > mysql' 카테고리의 다른 글

mysql dead lock 확인하기  (0) 2019.01.24
mysql innodb buffer pool size  (0) 2019.01.24
mysql old패스워드 password 함수 동시 사용  (0) 2018.09.03
mysql update replace  (0) 2018.09.03
mysql history 로그 설정  (0) 2018.09.03

appcmd 


c:\Windows\System32\inetsrv>appcmd.exe list site

ERROR ( hresult:8007007a, message:항목 출력을 생성하지 못했습니다.

시스템 호출에 전달된 데이터 영역이 너무 작습니다.


ERROR ( hresult:8007007a, message:Failed to generate item output. 

The data area passed to a system call is too small. 



에러나는 이유는 


리스트에 있는 사이트들중 서브도메인갯수가 많아서 문제가 발생한다.
ㄴhttps://forums.iis.net/t/1164443.aspx?error+when+running+appcmd+list+site

찾아보니 4개의 도메인중 한개의 도메인이 서브도메인(바인딩)이 130개정도 있다. 



주요 답변

The issue was reproducible with config data bantam316 provided. It turned out appcmd has buffer limit. The error happens when <site/> has lots of data. It looks like there is no workaround with appcmd for that particular command. I would recommend to use other admin tool such as inetmgr with this situation. The feature team will address this issue.


보는바와같이 불라불라 appcmd 의 buffer limit 어쩌구 저쩌구 <site/> has lots of data 랜다. 해결방법 없고 inetmgr 을 사용하라고 한다.

ㄴ아 참고로 윈 2008R2 이고 윈 2012에서는 해결됐따는 코멘트가 있는듯 ?


inetmgr 이 무슨 또 다른 툴인가해서 찾아봤는데 그냥 iis관리자다. 어쩐지 어디서 많이 봤다했네 하여튼 그냥 직접 GUI로 봐야한다. 서브도메인이 겁내 많아가지고 복붙할라고 한건데 복붙도 안되고 하아..

'job > windows' 카테고리의 다른 글

psslack  (0) 2021.09.02
windows 서버에서 my.ini 수정하려면  (1) 2019.12.10
linux inode window fileid  (0) 2019.01.11
iis 백업 복원 이전  (0) 2018.09.03
윈도우 2012 원격 세션 제한  (0) 2018.09.03

linux 유닉스 시스템에 inode가 있는데 window 에는 inode 같은 개념은 file id 로 있다.



fsutil file queryfileid 파일명


C:\Users\7040_64bit>fsutil file queryfileid uptime.exe

파일 ID: 0x0000000000000000000900000001d3fe


위와같이 쓰면 된다.

갑자기 rsync로 파일 갯수에 따른 전송 시간이 궁금해졌다.


물론 파일이 많으면 눈에 띄겠지만... 궁금하다. 

(덮어씌기는 안하고 무조건 새파일로만)


테스트 1. 1GB 짜리 1개 파일 전송

receiving incremental file list

1G


sent 30 bytes  received 1073872969 bytes  102273618.95 bytes/sec

total size is 1073741824  speedup is 1.00


real    0m9.587s

user    0m7.625s

sys     0m3.158s


테스트 2. 1GB 짜리 5개 파일 전송

receiving incremental file list

1G

1G_1

1G_2

1G_3

1G_4


sent 106 bytes  received 5369364746 bytes  115470211.87 bytes/sec

total size is 5368709120  speedup is 1.00


real    0m46.234s

user    0m38.213s

sys     0m16.360s


테스트 3. 10GB 짜리 1개 파일 전송

receiving incremental file list

10G


sent 30 bytes  received 10738729034 bytes  114852717.26 bytes/sec

total size is 10737418240  speedup is 1.00


real    1m32.456s

user    1m15.784s

sys     0m32.694s


테스트 4. 1M 짜리 1024개 파일 전송

1M_999


sent 19467 bytes  received 1073920415 bytes  102279988.76 bytes/sec

total size is 1073741824  speedup is 1.00


real    0m10.040s

user    0m7.644s

sys     0m3.206s


테스트 5. 1M 짜리 10240개 파일 전송

1M_9999


sent 194571 bytes  received 10739207487 bytes  112454471.81 bytes/sec

total size is 10737418240  speedup is 1.00


real    1m34.970s

user    1m16.561s

sys     0m32.577s


하다 말았음 






smartctl -a /dev/sda

smartctl 5.43 2016-09-28 r4347 [x86_64-linux-2.6.32-754.6.3.el6.x86_64] (local build)

Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net


Vendor:               HPE     

Product:              LOGICAL VOLUME  


dmidecode | grep -A2 '^System Information' 

System Information

        Manufacturer: HPE

        Product Name: ProLiant DL380 Gen10


서버 스펙은 위와같다.




아래와같이 명령어 입력시 에러가 발생한다.

hpssacli ctrl all show config


Error: No controllers detected. Possible causes:

        - The driver for the installed controller(s) is not loaded.

        - On LINUX, the scsi_generic (sg) driver module is not loaded.

        See the README file for more details.



드라이버가 제대로 안올라가있나 ? 뭘 받아야하지..


일단 구글링결과


hp 공식 사이트에서는 

#modprobe sg

#modprobe hpsa hpsa_allow_any = 1

위에껄 하랜다.


hpssa 는 sg 라는 드라이버를 사용해서 설치된 컨트롤러 정보를 수집한다고 한다. 기본적으로 레드햇 7.0 은 sg드라이버를 로드하지만 7.1은 로드가 안된된다. 잉 근데 이서버는 6.9 인데 ?? 

일단 위에 명령어대로 했는데 안된다 역시 . 음.. 드라이버 설치가 안된건가.. 뭐지 ? hp 업체에 문의했다. 


hpssacli 를 hp repo 올려가지고 yum 으로 설치했는데 버전이 너무 낮다고 한다. 서버는 gen10인데 해당 서버에서는 안된다고한다.

설치돼있떤 hpssacli 버전은

rpm -qa | grep hpssacli

hpssacli-2.40-13.0.x86_64

이다.


https://support.hpe.com/hpsc/swd/public/detail?sp4ts.oid=null&swItemId=MTX_d5125e2bff7d4e92a1b0fcebc6&swEnvOid=4184

이거 받아가지고 설치하면 잘된다.

설치한 버전은

ssacli-3.30-14.0.x86_64.rpm

잘 된다.


ps.

gen10 부터는 hpssacli가 안먹는다함


tomcat 으로만 구동중인(톰캣만 가지고 80포트로 운영중인)서버에 ssl 인증서 적용하기

(인증서는 코모도같은 인증서발급업체에서 사가지고 csr,key파일까지 발급받은상태임)


구글링 해보면 많은곳에서 keytool 명령어를 이용하여 톰캣에 ssl인증서 적용하는방법을 많이 알려준다.

keytool이란 

Java provides a relatively simple command-line tool, called keytool, which can easily create a "self-signed" Certificate. Self-signed Certificates are simply user generated Certificates which have not been signed by a well-known CA and are, therefore, not really guaranteed to be authentic at all. While self-signed certificates can be useful for some testing scenarios, they are not suitable for any form of production use.


Java는 키툴이라고 하는 비교적 간단한 명령줄 도구를 제공하여 "자체 서명" 인증서를 쉽게 만들 수 있습니다. 자체 서명된 인증서는 단순히 사용자가 생성한 인증서이며, 잘 알려진 CA에서 서명한 것이 아니므로, 실제로 인증되지 않습니다. 자체 서명된 인증서는 일부 테스트 시나리오에 유용할 수 있지만 어떤 형태의 운영 사용에도 적합하지 않습니다.


톰캣 공홈에서 퍼옴  https://tomcat.apache.org/tomcat-9.0-doc/ssl-howto.html


설명만 가지고는 comodo나 rapid 같은 신뢰할 수 있는 인증기관에서 발급해준게 아닌 개인이 생성한 인증서에 대해서만이라고 설명돼있는데 공홈 설명보면 그 뒤로 

Importing the Certificate

Now that you have your Certificate you can import it into you local keystore. First of all you have to import a so called Chain Certificate or Root Certificate into your keystore. After that you can proceed with importing your Certificate.


Download a Chain Certificate from the Certificate Authority you obtained the Certificate from.

For Verisign.com commercial certificates go to: http://www.verisign.com/support/install/intermediate.html

For Verisign.com trial certificates go to: http://www.verisign.com/support/verisign-intermediate-ca/Trial_Secure_Server_Root/index.html

For Trustcenter.de go to: http://www.trustcenter.de/certservices/cacerts/en/en.htm#server

For Thawte.com go to: http://www.thawte.com/certs/trustmap.html

Import the Chain Certificate into your keystore

keytool -import -alias root -keystore <your_keystore_filename>

    -trustcacerts -file <filename_of_the_chain_certificate>

And finally import your new Certificate

keytool -import -alias tomcat -keystore <your_keystore_filename>

    -file <your_certificate_filename>


위와같은 내용이 있는데 즉 keytool 을 이용해서도 인증기관에서 발급된 인증서로 적용할 수 있다는 내용이다. 실제로도 정말많이. 뭐 톰캣은 거의 대부분 keytool로 하고 있다.


keytool을 이용한 인증서 적용은 구글링에서 많이 나오니까 패쓰하고.


여기서는 ssl.key , ssl.crt, 와 인증업체에서 제공하는 체인인증서만 가지고(즉 keytool을 이용하지 않고) 아파치에 적용하는것처럼 톰캣에 적용할꺼다.


그럴려면 tomcat 에 apr라이브러리가 들어가있어야 하낟. 


apr이란 .... 잘 모르겠다 그냥 많은 기능이 포함된 라이브러리(https://kenu.github.io/tomcat70/docs/apr.html 여기보면 아파치 2점대 핵심 라이브러리라는데 근데 왜 아파치 컴파일할 때 apr을 추가로 컴파일해야하지?)이고 이 라이브러리가 톰캣에도 들어가 있으니까 아파치에 인증서 설정하는것마냥 톰캣에도 할 수 있다라고 이해할란다.


하 그냥 이러지말고 애초부터 keytool로 할껄 그랬다.


여튼 다시 정리하자면..


jsse 환경에서는 keytool을 이용하여 인증서를 적용

apr 환경에서는 기존 아파치에 적용하는것마냥 인증서를 적용 인데(톰캣에 apr 라이브러리를 사용한 환경이냐는거지 apr 환경이라는게 아파치-톰캣이 연동된 환경을 말하는게 아니다.)


톰캣에 apr 라이브러리 들어가있으니 위에 말한것처럼 나는 keytool 을 이용하지 않고 아파치에 설정하듯이 하겠다.


엄청 쉽다.

    <Connector  

        port="443" SSLEnabled="true" 

        scheme="https" secure="true" sslProtocol="TLS" SSLEngine="on"

        SSLPassword="비밀번호" 

        SSLCertificateKeyFile="conf/ssl/ssl.key"

        SSLCertificateFile="conf/ssl/ssl.crt"

        SSLCertificateChainFile="conf/ssl/chain_ssl.crt"

        SSLCACertificateFile="conf/ssl/chain_all_ssl.crt"

    />


적당한곳에다가 위내용 넣고 재시작하면된다고 한다.

근데 안된다. 그래서 결국 keytool로 했다. 하 진작에 keytool로 할껄 2시간 버렸네 




ps.

트래픽이 많이나오는 무거운 웹서버에서는 keytool 이용한 jsse 방식보다는 apr 방식에다가 인증서를 적용하는게 퍼포먼스와 안정성이 더 좋다라는 내용(이건 구글링)이 있는데

내 결론은 

그냥 편한거 하는게 좋은거같다. 안정성이나 뭐 퍼포먼스가 더 좋다는데...옛날에야 하드웨어가 안좋으니 뭐 커널튜닝이니 뭐니 퍼포먼스에 신경썼겠지만 요새는 하드웨어가 워낙 짱짱한데.. 인증서 적용하는데 그런거까지 신경쓸필요있을까 ? 



smartctl 을 이용한 디스크 점검하기

 

 

for i in `fdisk -l | grep "Disk\ \/dev\/" | awk '{print $2}' | awk -F ":|/" '{print $3}'`
##디스크 디바이스명 다 불러와서

 

###SSD / SATA&SAS 에 따라

DISK_CLASS=`cat /sys/block/$i/queue/rotational`

###0이면 SSD 1이면 SATA

if [ $DISK_CLASS = 0 ];then

elif [ $DISK_CLASS = 1 ];then

 

레이드 컨트롤러 장착 여부에 따라 디스크 체크하는 스크립트를 만들기

 

 

 

 

SSD 디스크 점검 사항
Power_On_Hours / 디스크 사용 시간

Wear_Leveling_Count / 모든 셀에 데이터가 1회 기록되면 카운트 +1
ㄴ즉 512GB 짜리 SSD에 있는 모든 저장 공간에 512GB 전체(실 사용 용량으로 치면 한...480GB 되나 ?)에 데이터가 한번씩 씌어지면 1회로 치는듯 

Airflow_Temperature_Cel / 디스크 온도

Reallocated_Sector_Ct / 섹터에 문제가 생겨서 스페어 영역으로 섹터를 이동시켰따... 즉 베드섹터
Total_LBAs_Written / 디스크에 총 write 된 사용량

 

###필드 설명###
VALUE : 속성의 현재 값(보통 백분율 단위)

WORST : 속성이 여지껏 가장 안좋았던 값

THRESH : 속성이 해당 값이 되면 안된다 하는 값 (임계값)

RAW_VALUE : 백분율로 하지 않은 현재 값

 
 

1.Power_On_Hours / 디스크 사용 시간

  9 Power_On_Hours          0x0032   098   098   000    Old_age   Always       -       6714

여기서 raw_value는 시간단위이다. 6714시간 사용했다는 뜻
여기서는 value 값을 보면된다.

THRESH 가 0 이고 VALUE 는 98 이다. 아직 여유 많다. 한 5~10 미만으로 내려가면 알람오게 설정할 예정

 

 

2.Wear_Leveling_Count / 모든 셀에 데이터가 1회 기록되면 카운트 +1

177 Wear_Leveling_Count     0x0013   099   099   000    Pre-fail  Always       -       19

이것도 RAW_VALUE는 볼 필요 없고 VALUE 만 보면 된다.

099 니까 이것도 5~10미만으로 내려가면 알람오게 설정

 

 

3.Airflow_Temperature_Cel / 디스크 온도

190 Airflow_Temperature_Cel 0x0032   073   067   000    Old_age   Always       -       27

이것도 뭐 .. VALUE 10미만이면 알람오게
 
4.Reallocated_Sector_Ct / 섹터에 문제가 생겨서 스페어 영역으로 섹터를 이동시켰따... 즉 베드섹터

  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0
RAW_VALUE 가 0 이 아니라면 디스크 교체해야함

 

5.Total_LBAs_Written / 디스크에 총 write 된 사용량

241 Total_LBAs_Written      0x0032   099   099   000    Old_age   Always       -       6174993057

이것도 VALUE 10미만이면 알람오게 하면 되나..?

정확히는 raw_value를 기준으로 계산하는법이 있다.
https://brunch.co.kr/@lars/3 요사이트에 설명 잘 돼있음
대충 요약하자면... 디스크의 총 WRITE 된 용량을 계산하고 해당 디스크가 어느정도 용량의 WRITE를 워런티? 해주는지... 말그대로 수명이다.

삼성 SSD 256기가 기준으로
RAW_VALUE(ex..6174993057) * 512 / 1024 * 1024 * 1024 * 1024 > 300 일경우 문제가 생긴다.
raw_value * 512 = 현재 write 된 사용량과 거기에 섹터 사이즈를 곱해서 실제로 write 된 용량을 확인하고..
그다음 1024 ^4 을 나눠서TB 로 계산하기 위해서다.
삼성 ssd 256 860 pro 는 300TBW를 보장한다고 한다. 300TBW란 300테라(T) 바이트(B)의 write(W)를 보장한다는 뜻이다.

 

https://www.samsung.com/semiconductor/minisite/ssd/product/consumer/860pro/ 에서 확인해보면 아래와 같다.

Warranty

  • MZ-76P256BW (256 GB)
  • 5 Years or 300 TBW
  •  
  • MZ-76P512BW (512 GB)
  • 5 Years or 600 TBW
  •  
  • MZ-76P1T0BW (1,024 GB)
  • 5 Years or 1,200 TBW
  • MZ-76P2T0BW (2,048 GB)
  • 5 Years or 2,400 TBW
  •  
  • MZ-76P4T0BW (4,096 GB)
  • 5 Year or 4,800 TBW

 

 

 

 

 

 

 

 

 

 

실제로 계산해보면... 터무니없는 용량이다... 아무리 쓰기가 빈번한 디스크라쳐도... 이걸 찾아보면서 굳이 이 스크립트를 만드는게 의미가 있는걸까 싶긴한데.... 그래도 앞으로 5년 10년 사용하면 문제가 생길테니까.. 그외 뭐 사용 시간이라던지 온도라던지... 이걸 굳이 스크립트로 짤 필요가 있나란 생각도 잠깐 들었는데 이 서버를 앞으로 3년 5년 사용하다보면 문제 생길테니까 미리 만들어놓는게 좋겠습니다.

 

 

그 외에 추가로 봐야할 속성들은..

181 Program_Fail_Cnt_Total  0x0032   100   100   010    Old_age   Always       -       0
ㄴ프로그램 실패 갯수. 아직 한개도 없네요. 없는게 정상

182 Erase_Fail_Count_Total  0x0032   100   100   010    Old_age   Always       -       0

ㄴ 삭제 실패 갯수, 아직 한개도 없네요. 없는게 정상

위 두개도 더 봐주면 좋겠네요.

 

ssd 끝

#####

sata 시작

 

SATA 점검해야할 송성

 

Reallocated_Sector_Ct = SSD에서 설명함, 동일함

Seek_Error_Rate = 탐색 지연 오류 비율 이라한다. 정상일경우 0

Spin_Retry_Count = 오류로 멈추었따가 구동된 횟수  정상일경우 0

Current_Pending_Sector = 명령시간 초과 횟수 정상일경우 0

Offline_Uncorrectable = 수정 할 수 없는 에러 발생, 정상일경우 0

UDMA_CRC_Error_Count = 케이블 뷸량, 파티션간 에러, 정상일경우 0

ㄴ이거는 몇몇 서버에서 0 아닌서버들이 적잖이 있음, 이런 서버는 디스크, 혹은 케이블등 점검이 필요한 것같다.

 

전부 raw_value 기준이다.

 

 

그 외에... 

 

Raw_Read_Error_Rate = 디스크raw단에서 데이터 읽는 과정에서 문제가 있을 경우(sata가 뺑글뺑글 돌면서 물리적인 표면에서 읽을 때 문제가 있을경우인듯) 물리적인 부분이라 물리적인 충격에 의해 발생한다고 함, 이거는 정상이라면 0이어야 하는데 0 아닌 서버들이 겁나게 많다. 완벽주의자면... 다 교체 해주던가... 난 패쓰해도 될꺼같다.... 추가로 SSD는 0인 디스크들이 대부분인반면 SATA는 0인 서버를 찾을 수가 없다. 이건 뭐.. ssd 플래시 메모리 방식과 sata 구동방식의 차이 때문 아닐까 혼자 짐작해본다.

 

 

###########

nvme 설명

 

available_spare                     : 100%     

available_spare_threshold           : 4%

percentage_used                     : 0%

controller_busy_time                : 2,502

unsafe_shutdowns                    : 4

media_errors                        : 0

 

 

요약하자면

 

1. available_spare < available_spare_threshold  이 되면 위험 , spare 영역 어쩌구 저쩌구
2. percentage_used 100% 넘어가면 위험함, 밴더사별로 내놓은 워런티? 수명? 뭐 그런거임

3. controller_busy_time 분단위인데.... 바쁘게(I/O 큐가 밀려있을때) 움직인 시간... 대기작업이 많이 있는경우 올라가는거라 정상인것같다.(정확하지 않다.) 0인 서버 못찾음

4. unsafe_shutdowns 말그대로임, 서버 강종하지말자.

5. media_errors 는 1 되면 배드섹터 감지된거니까 교체해야함

 

nvme는 모니터링해야되는게
1. available_spare < available_spare_threshold 

2. percentage_used > 100 

3.media_errors > 0

 

위 3개정도 하면 될듯하다.

 

###

 

sas 는 total uncorrected erros 이 항목만 보연 된댄다.

 

        SAS=`smartctl -a /dev/$i | grep Transport | wc -l`

        if [ $SAS != 0 ];then

        TUE=`smartctl -d /dev/$i  | egrep "read:|write:|verify:" | awk '{print $8}'`

                for sas_disk in $TUE

                do

                        if [ $sas_disk -gt 0 ];then

                        echo -ne "\033[33m Disk Total uncorrected error check\n"

                        echo -e "\033[0m"

                        fi

                done

        fi

 

 

################

마지막으로 레이드 컨트롤러가 장착돼있을 경우 smartctl 하는 방법

 

 

HP서버

 

smartctl -a -d cciss,디스크넘버 /dev/sda

 

EC2 = VM 서버

EBS = 블록 스토리지, 물리적인 디스크라고 생각하면 될듯, 장착한 용량만큼 과금

EFS = 메니지드 파일 스토리지, 네트워크 기반으로 마운트, 사용중인 용량만큼 과금

S3 = 오브젝트 스토리지,네이버 클라우드마냥 용량제한없이 폴더개념으로 파일 저장, 사용중인 용량만큼 과금(단 트래픽 요금 발생, 저장할땐 무료 꺼낼땐 과금)

security group = EC2에 장착시켜서 start함, 기본적인 방화벽이라고 보면 됨

key pairs = ssh-keygen이랑 동일함

glacier = 아카이브

ELB=로드밸런싱

VPC=isolated resources(IDC)

route53=웹DNS

network acls=방화벽

보안=  identity&access / key sotoage&management / active directory / ddos protection / application analysis / certificate management / web App-firewall

관리 도구 = Monitoring / Auditing / ServiceCatalog / Server / Management / Configuration / Tracking / Optimization / Resource / T emplates / Automation



'job > public cloud' 카테고리의 다른 글

AWS스터디 - S3  (0) 2022.11.15
aws 스터디 - rds  (0) 2022.11.14
AWS스터디 - EC2, EBS, ELB, Route53  (0) 2022.11.14
AWS 스터디 - IAM  (0) 2022.11.14
aws SAA(AWS Certified Solutions Architect - Associate) 불합격 & 합격 후기  (6) 2020.05.12

SSH 연결시 각 서버의 패스워드는 ansible_ssh_pass 을 통해 패스워드를 미리 적어둘 수 있다.


ansbile/hosts 에
클라이언트 아이피         ansible_user=root       ansible_ssh_pass=패스워드




보안상 취약하기 때문에 따로 파일로 보관하다가 실제로 사용할때만 업로드해서 써야할듯

'job > ansible' 카테고리의 다른 글

ansible - 디렉토리 구조  (0) 2019.05.02
ansible- error  (0) 2019.04.26
ansible-3 playbook  (0) 2019.04.25
ansible-2 hosts(그룹), 멱등성  (0) 2019.04.22
ansible-1  (0) 2019.04.10

https://blog.naver.com/alice_k106/221333208746

'job > open source' 카테고리의 다른 글

zimbra 오픈소스 웹메일 짐브라  (0) 2018.09.03
netdata 설치하기  (0) 2018.08.31

split 찢다.


내가 지정하는 문구를 구분자로 나눌 수 있다. , 콤마로 나눈다.




 command

target 

value 

 store

 안녕하세요. [스플릿] 입니다! 반가워요 ~

 list

 storeEval

 storedVars.list.split('입니다!' );

 test_split

 echo

${test_split} 

 


결과 : 안녕하세요. [스플릿] , 반가워요 ~
## 위와같이 "입니다!" 라는 문구를 구분자로해서 안녕하세요. [스플릿] 와 반가워요 ~ 로 바뀌었다. 




아래와같이 여러번 스플릿하여 빼고자 하는 단어만 남길 수 있따.

 command

target 

value 

 store

 안녕하세요. [스플릿] 입니다! 반가워요 ~

 list

 storeEval

 split2=storedVars.list.split('하세요. [' )

 split2=split2[1].split('] 입니다!');

 split2=split2[0]

 test_split

 echo

${test_split} 

 

결과 : 스플릿



'job > selenium' 카테고리의 다른 글

substr  (0) 2018.09.05
indexOf  (0) 2018.09.05

아래는 1TB raid 1 로 SSD 480GB * 2ea / raid 0 으로 SATA 1TB 구성돼있는 상태이고 추가로 SATA 1TB 레이드 안잡혀있는, 즉 디스크 만 꼽혀있는 상태이다.


[root@localhost ~]#  hpssacli ctrl all show config


Smart HBA H240 in Slot 2 (RAID Mode)      (sn: )



   Port Name: 2I


   Port Name: 1I


   Internal Drive Cage at Port 1I, Box 1, OK

   array A (Solid State SATA, Unused Space: 0  MB)



      logicaldrive 1 (447.1 GB, RAID 1, OK)


      physicaldrive 1I:1:1 (port 1I:box 1:bay 1, Solid State SATA, 480.1 GB, OK)

      physicaldrive 1I:1:2 (port 1I:box 1:bay 2, Solid State SATA, 480.1 GB, OK)


   array B (SATA, Unused Space: 0  MB)



      logicaldrive 2 (931.5 GB, RAID 0, OK)


      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SATA, 1 TB, OK)


   unassigned


      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SATA, 1 TB, OK) 
##주석##추가 디스크임, 레이드를 안잡았으니 logicaldrive 정보가 없고
 unassigned 으로 표기됨을 확인할 수 있음



1.레이드를 잡기 위해선 레이드 컨트롤러가 장착된 슬롯 번호physicaldrive 번호 확인이 필요하다.


Smart HBA H240 in Slot 2 (RAID Mode)      (sn: )



   Port Name: 2I


   Port Name: 1I


   Internal Drive Cage at Port 1I, Box 1, OK

   array A (Solid State SATA, Unused Space: 0  MB)



      logicaldrive 1 (447.1 GB, RAID 1, OK)


      physicaldrive 1I:1:1 (port 1I:box 1:bay 1, Solid State SATA, 480.1 GB, OK)

      physicaldrive 1I:1:2 (port 1I:box 1:bay 2, Solid State SATA, 480.1 GB, OK)


   array B (SATA, Unused Space: 0  MB)



      logicaldrive 2 (931.5 GB, RAID 0, OK)


      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SATA, 1 TB, OK)


   unassigned


      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SATA, 1 TB, OK)



2.슬롯번호와 physicaldrive 를 확인하였으면 레이드 설정하는 명령어를 입력한다.

[root@localhost ~]# hpssacli ctrl slot=2 create type=ld drives=1I:1:4 raid=0

###레이드 컨트롤러 슬롯번호는 2번이고(slot=2) 생성 타입은 로지컬 드라이브(create type=ld) 대상 디스크(drives=1I:1:4) 생성할 레이드 타입은 raid 0(raid=0)

###raid 1 또는 raid 5를 하려면 아래와같이 디스크 번호 추가해주고 raid 적어주면된다.###

hpssacli ctrl slot=0 create type=ld drives=1I:1:1,1I:1:2 raid=1

hpssacli ctrl slot=0 create type=ld drives=1I:1:1,1I:1:2,2I:1:6,2I:1:7,2I:1:8 raid=5




3.작업 완료후 레이드 상태를 보면 logical drive 3 이 추가된것을 확인할 수 있다. 또한 fdisk를 통해 디스크 추가를 확인할 수 있다.

[root@localhost ~]#  hpssacli ctrl all show config


Smart HBA H240 in Slot 2 (RAID Mode)      (sn: )



   Port Name: 2I


   Port Name: 1I


   Internal Drive Cage at Port 1I, Box 1, OK

   array A (Solid State SATA, Unused Space: 0  MB)



      logicaldrive 1 (447.1 GB, RAID 1, OK)


      physicaldrive 1I:1:1 (port 1I:box 1:bay 1, Solid State SATA, 480.1 GB, OK)

      physicaldrive 1I:1:2 (port 1I:box 1:bay 2, Solid State SATA, 480.1 GB, OK)


   array B (SATA, Unused Space: 0  MB)



      logicaldrive 2 (931.5 GB, RAID 0, OK)


      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SATA, 1 TB, OK)


   array C (SATA, Unused Space: 0  MB)



      logicaldrive 3 (931.5 GB, RAID 0, OK)  ###원래는 unassigned 였는데 레이드 0으로 잡아줬으니 변경됨


      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SATA, 1 TB, OK)



[root@localhost ~]# fdisk -l


Disk /dev/sda: 480.1 GB, 480070426624 bytes

255 heads, 63 sectors/track, 58365 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 262144 bytes / 262144 bytes

Disk identifier: 0x0009a5c1


   Device Boot      Start         End      Blocks   Id  System

/dev/sda1               1          27      215040   83  Linux

/dev/sda2              27         288     2097152   82  Linux swap / Solaris

/dev/sda3             288       58366   466505560   83  Linux


Disk /dev/sdb: 1000.2 GB, 1000171331584 bytes

255 heads, 63 sectors/track, 121597 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 262144 bytes / 262144 bytes

Disk identifier: 0x0009a5c1


   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1          27      215040   83  Linux

/dev/sdb2              27         288     2097152   82  Linux swap / Solaris

/dev/sdb3             288      121597   974414686+  83  Linux


Disk /dev/sdc: 1000.2 GB, 1000171331584 bytes

255 heads, 63 sectors/track, 121597 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 262144 bytes / 262144 bytes

Disk identifier: 0x97d80c0a






레이드 삭제하는법


1.위에서 추가한 logicaldrive 3 (931.5 GB, RAID 0, OK) 을 삭제하겠다.
[root@localhost ~]# hpssacli ctrl slot=2 ld 3 delete        ###슬롯2번의 레이드컨트롤러의 로지컬드라이브 3번(ld 3) 을 삭제하겠다.

Warning: Deleting an array can cause other array letters to become renamed.

         E.g. Deleting array A from arrays A,B,C will result in two remaining

         arrays A,B ... not B,C

##### 각 로지컬 드라이브 앞에 array A (디스크 정보) 이런식으로 A , B , C 나오는데 중간에 B 를 삭제하면 array A, C 가 아니라 A, B 가 된다는 얘기 별 중요하지 않음


Warning: Deleting the specified device(s) will result in data being lost.

         Continue? (y/n) y   

###데이터 삭제하니까 정말 진행할꺼냐




##########

Error: Unable to delete logicaldrive 2. Please verify that the logical drive is

       the last logical drive on the array and no other operations are being

       performed on it.


Reason: In use by os
위와같은 에러 발생했다. 파티션이 마운트 돼 있는지 확인해봐야한다. 마운트돼있따 ㅋㅋ 마운트 푸니까 잘 된다.
############




[root@localhost ~]#  hpssacli ctrl all show config  


Smart HBA H240 in Slot 2 (RAID Mode)      (sn: )



   Port Name: 2I


   Port Name: 1I


   Internal Drive Cage at Port 1I, Box 1, OK

   array A (Solid State SATA, Unused Space: 0  MB)



      logicaldrive 1 (447.1 GB, RAID 1, OK)


      physicaldrive 1I:1:1 (port 1I:box 1:bay 1, Solid State SATA, 480.1 GB, OK)

      physicaldrive 1I:1:2 (port 1I:box 1:bay 2, Solid State SATA, 480.1 GB, OK)


   array B (SATA, Unused Space: 0  MB)



      logicaldrive 2 (931.5 GB, RAID 0, OK)


      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SATA, 1 TB, OK)


   unassigned #### logicaldrive 3번이 삭제된것을 확인할 수 있다.


      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SATA, 1 TB, OK)



링크(디스크 불) on/off 하는법

hpssacli ctrl slot=0 ld 2 modify led=on


hpssacli ctrl slot=0 ld 2 modify led=off

substring , substr 등 C나 php등 많은언어에서 사용되는것과 동일함


사용법은 아래와 같다


storeEval    []                                                                         num

push        12345123                                                               num

storeEval    storedVars.echo_stat.substr(0,2);                                 check

echo${check}


결과값 12          ####12345123 문자중 0번째부터 해당문자포함 뒤로 2번째(쉽게 보면 2글자라고 봐도 될듯)까지만 $check에 반환



storeEval    []                                                                         num

push        12345123                                                               num

storeEval    storedVars.echo_stat.substr(1,1);                                 check

echo${check}


결과값 2          ####12345123 문자중 1번째 문자부터 해당문자포함 뒤로 1글자만 $check에 반환




storeEval    []                                                                         num

push        12345123                                                               num

storeEval    storedVars.echo_stat.substr(3,1);                                 check

echo${check}


결과값 4          ####12345123 문자중 3번째 문자부터 해당문자포함 뒤로 1글자만 $check에 반환



storeEval    []                                                                         num

push        12345123                                                               num

storeEval    storedVars.echo_stat.substr(3,2);                                 check

echo${check}


결과값 45          ####12345123 문자중 3번째 문자부터 해당문자포함 뒤로 2글자만 $check에 반환





아래와 같이 indexOf 와도 함께 사용이 가능하다.


storeEval    []                                                                         num

push        12345123                                                               num

storeEval    storedVars.echo_stat.substr(3,2).indexOf("4");                 check

echo${check}


결과값 0          ####12345123 문자중 3번째 문자부터 해당문자포함 뒤로 2글자만 반환, 값은 45이고 그중 idnexOf로 4가 들어가는 문자열의 위치를 찾았다. 0번째니까 값은 0





storeEval    []                                                                         num

push        12345123                                                               num

storeEval    storedVars.echo_stat.substr(3,2).indexOf("5");                 check

echo${check}


결과값 1          ####12345123 문자중 3번째 문자부터 해당문자포함 뒤로 2글자만 반환, 값은 45이고 그중 idnexOf로 5가 들어가는 문자열의 위치를 찾았다. 1번째니까 값은 1




storeEval    []                                                                         num

push        12345123                                                               num

storeEval    storedVars.echo_stat.substr(3,2).indexOf("6");                 check

echo${check}


결과값 -1          ####12345123 문자중 3번째 문자부터 해당문자포함 뒤로 2글자만 반환, 값은 45이고 그중 idnexOf로 6가 들어가는 문자열의 위치를 찾았다. 6 자체가 안들어가니까 값은 -1




글자 자르는거라 많이많이 유용함



'job > selenium' 카테고리의 다른 글

split  (0) 2018.09.06
indexOf  (0) 2018.09.05

javascript 의 indexOf 이다.


storeEval    []                                                 num

push        12345123                                       num

storeEval    storedVars.num.indexOf("12");            check

echo${check1}


결과값 0          ####12345123 문자중 12가 들어가는게 처음부터 0번째이기 때문에 값은 0



storeEval    []                                                 num

push        12345123                                       num

storeEval    storedVars.num.indexOf("2");            check

echo${check1}


결과값 1       ####12345123 문자중 2가 들어가는게 처음부터 1번째(0부터시작)이기 때문에 값은 1


storeEval    []                                                 num

push        12345123                                       num

storeEval    storedVars.num.indexOf("6");            check

echo${check1}


결과값 -1       ####12345123 문자중 6이 들어가지 않기 때문에 값은 -1(찾는 문자열이 없을경우 -1을 반환함)



찾는문자열의 위치를 찾는것보단 문자열이 있는지 없는지를 사용하는편인듯

쉘에서는 grep 으로 쉽게 되는데 셀레니움은(javascript) 익숙치 않아서 그런지 아직 어렵다.(있는데 모르는걸수도)

'job > selenium' 카테고리의 다른 글

split  (0) 2018.09.06
substr  (0) 2018.09.05

/ : 루트디렉토리
|-- HISTORY : 패치된 내역
|-- LICENSE : 그누보드4 라이센스, 저작권(Copyright)
|-- _common.php : 상대경로를 이용하여 루트에 있는 common.php 파일을 include
|-- _head.php : 상대경로를 이용하여 루트에 있는 head.php 파일을 include
|-- _tail.php : 상대경로를 이용하여 루트에 있는 tail.php 파일을 include
|-- adm : 관리자 디렉토리
|   |-- _common.php : 상대경로를 이용하여 루트에 있는 common.php 파일 include
|   |-- admin.head.php : 관리자 페이지 상단+오른쪽 디자인 관련 파일
|   |-- admin.js : 관리자 페이지 자바스크립트 파일
|   |-- admin.lib.php : 관리자 페이지 라이브러리 파일
|   |-- admin.menu100.php : 관리자 페이지 환경설정 메뉴
|   |-- admin.menu200.php : 관리자 페이지 회원관리 메뉴
|   |-- admin.menu300.php : 관리자 페이지 게시판관리 메뉴
|   |-- admin.menu400.shop_1of2.php : 관리자 페이지 쇼핑몰 관리 메뉴
|   |-- admin.menu500.shop_2of2.php : 관리자 페이지 쇼핑몰 현황 메뉴
|   |-- admin.style.css : 관리자 페이지 스타일시트
|   |-- admin.tail.php : 관리자 페이지 오른쪽+하단 디자인 관련 파일
|   |-- auth_list.php : 관리권한설정 리스트
|   |-- auth_list_delete.php : 관리권한설정 선택 삭제
|   |-- auth_update.php : 관리권한설정 반영
|   |-- board_copy.php : 게시판 복사 폼
|   |-- board_copy_update.php : 게시판 복사 반영
|   |-- board_delete.inc.php : 게시판 삭제 include 파일
|   |-- board_delete.php : 게시판 삭제
|   |-- board_form.php : 게시판 설정 폼
|   |-- board_form_update.php : 게시판 설정 반영
|   |-- board_list.php : 게시판 리스트 
|   |-- board_list_delete.php : 게시판 선택 삭제
|   |-- board_list_update.php : 게시판 선택 수정
|   |-- boardgroup_delete.php : 게시판 그룹 삭제
|   |-- boardgroup_form.php : 게시판 그룹 설정 폼
|   |-- boardgroup_form_update.php : 게시판 그룹 설정 반영
|   |-- boardgroup_list.php : 게시판 그룹 리스트
|   |-- boardgroup_list_update.php : 게시판 그룹 선택 수정
|   |-- boardgroupmember_form.php : 게시판 그룹 접근회원 설정 폼
|   |-- boardgroupmember_list.php : 게시판 그룹 접근회원 리스트
|   |-- boardgroupmember_update.php : 게시판 그룹 접근회원 설정 반영
|   |-- config_form.php : 기본환경설정 폼
|   |-- config_form_update.php : 기본환경설정 반영
|   |-- img : 관리자 이미지 디렉토리
|   |-- index.php : 관리자 시작페이지
|   |-- mail_form.php : 회원메일 발송 폼
|   |-- mail_list.php : 회원메일 발송 리스트
|   |-- mail_preview.php : 작성한 회원메일 미리보기
|   |-- mail_select_form.php : 회원메일 대상회원 선택 폼
|   |-- mail_select_list.php : 선택된 회원 리스트
|   |-- mail_select_update.php : 회원메일을 대상회원에게 발송
|   |-- mail_test.php : 작성한 회원메일을 관리자에게 테스트 발송
|   |-- mail_update.php : 메일 작성 반영
|   |-- member_delete.php : 회원 삭제
|   |-- member_form.php : 회원 등록, 설정 폼
|   |-- member_form_update.php : 회원 등록, 설정 반영
|   |-- member_list.php : 회원 리스트
|   |-- member_list_delete.php : 회원 선택 삭제
|   |-- member_list_update.php : 회원 선택 수정
|   |-- phpinfo.php : php, mysql 등의 설치 정보
|   |-- point_clear.php : 포인트 내역 정리 (내역이 많다면 포인트를 합산하여 레코드를 줄입니다.)
|   |-- point_list.php : 포인트 내역 리스트
|   |-- point_list_delete.php : 포인트 내역 선택 삭제
|   |-- point_update.php : 포인트 내역 등록
|   |-- poll_form.php : 설문조사 등록 폼
|   |-- poll_form_update.php : 설문조사 등록 반영
|   |-- poll_list.php : 설문조사 리스트
|   |-- repair.php : 복구 및 최적화
|   |-- sendmail_test.php : 메일 테스트
|   |-- sql_write.sql : 게시판 TABLE 생성 쿼리 (이 파일이 없으면 게시판 생성을 할 수 없음)
|   |-- upgrade.php : TABLE 에 FIELD 변경이 있는 경우에만 실행 (패치내역에서 알림)
|   |-- version.php : 그누보드4 버전 확인 (루트의 HISTORY 파일 내용)
|   |-- visit.sub.php : 접속자 SUB
|   |-- visit_browser.php : 브라우저별 접속자 현황
|   |-- visit_date.php : 일별 접속자 현황
|   |-- visit_domain.php : 도메인별 접속자 현황
|   |-- visit_hour.php : 시간대별 접속자 현황
|   |-- visit_list.php : 기간별 접속자 리스트
|   |-- visit_month.php : 월별 접속자 현황
|   |-- visit_os.php : OS별 접속자 현황
|   |-- visit_week.php : 요일별 접속자 현황
|   `-- visit_year.php : 연별 접속자 현황
|-- bbs : 그누보드4 핵심 디렉토리
|   |-- _common.php : 상대경로를 이용하여 루트에 있는 common.php 파일 include
|   |-- _head.php : 상대경로를 이용하여 루트에 있는 head.php 파일 include
|   |-- _tail.php : 상대경로를 이용하여 루트에 있는 tail.php 파일 include
|   |-- board.php : 게시판 글 리스트, 상세보기
|   |-- board_head.php : 게시판 상단
|   |-- board_tail.php : 게시판 하단
|   |-- calendar : 달력 디렉토리
|   |   `-- 2005.txt : 연도별 국경일, 공휴일, 행사 표시
|   |-- calendar.php : 달력
|   |-- current_connect.php : 현재 접속자 리스트
|   |-- delete.php : 게시물 삭제
|   |-- delete_all.php : 게시물 선택 일괄 삭제
|   |-- delete_comment.php : 코멘트 삭제
|   |-- download.php : 업로드된 파일 다운로드
|   |-- email_certify.php : E-mail 인증
|   |-- email_stop.php : E-mail 수신거부
|   |-- formmail.php : 폼메일
|   |-- formmail_send.php : 폼메일 보내기
|   |-- good.php : 추천, 비추천 반영
|   |-- group.php : 같은 그룹에 속한 게시판 최신글 리스트
|   |-- img : 이미지 디렉토리
|   |-- link.php : 링크 카운트 반영
|   |-- list.php : 게시물 리스트
|   |-- login.php : 로그인
|   |-- login_check.php : 로그인 체크
|   |-- logout.php : 로그아웃
|   |-- member_confirm.php : 회원정보 수정전에 회원인지를 확인
|   |-- member_email_check.php : 회원가입시 E-mail 중복 확인
|   |-- member_id_check.php : 회원가입시 회원아이디 중복 확인
|   |-- member_leave.php : 회원 탈퇴
|   |-- member_nick_check.php : 회원가입시 별명 중복 확인
|   |-- memo.php : 쪽지 리스트
|   |-- memo_delete.php : 쪽지 삭제
|   |-- memo_form.php : 쪽지 작성 폼
|   |-- memo_form_update.php : 쪽지 보내기
|   |-- memo_view.php : 쪽지 상세보기
|   |-- move.php : 게시물 이동, 복사 게시판 선택
|   |-- move_update.php : 선택된 게시판에 게시물 이동, 복사
|   |-- new.php : 최근게시물 (모든 게시판)
|   |-- norobot.inc.php : 프로그램에 의한 게시물 자동등록 방지 코드 생성
|   |-- norobot_check.inc.php : 프로그램에 의한 게시물 자동등록 검사
|   |-- password.php : 패스워드 입력 폼
|   |-- password_check.php : 패스워드 검사
|   |-- password_forget.php : 회원아이디/패스워드 분실 1/3 단계
|   |-- password_forget2.php : 회원아이디/패스워드 분실 2/3 단계
|   |-- password_forget3.php : 회원아이디/패스워드 분실 3/3 단계
|   |-- point.php : 회원 포인트 내역 (로그인한 해당 회원에 대한 내역)
|   |-- poll_etc_update.php : 설문조사 기타의견 반영
|   |-- poll_etc_update_mail.php : 설문조사 기타의견 메일 템플릿
|   |-- poll_result.php : 설문조사 결과
|   |-- poll_update.php : 설문조사 선택된 항목 반영
|   |-- profile.php : 자기소개
|   |-- register.php : 회원가입 약관
|   |-- register_form.php : 회원가입 폼
|   |-- register_form_update.php : 회원가입
|   |-- register_form_update_mail1.php : 회원가입 축하 메일 템플릿 (회원님께 발송)
|   |-- register_form_update_mail2.php : 회원가입 메일 템플릿 (관리자님께 발송)
|   |-- register_form_update_mail3.php : E-mail 인증 메일 템플릿 (회원님께 발송)
|   |-- register_result.php : 회원가입 결과
|   |-- rss.php : XML 기반으로 된 최신글 (RSS Reader 로 조회)
|   |-- scrap.php : 스크랩 리스트
|   |-- scrap_delete.php : 스크랩 삭제
|   |-- scrap_popin.php : 스크랩 폼
|   |-- scrap_popin_update.php : 스크랩 반영
|   |-- search.php : 게시판 통합 검색 (게시판 설정에서 검색 사용에 체크된 게시판에서만 검색)
|   |-- tb.php : 트랙백 핑 받는 페이지
|   |-- view.php : 게시물 보기
|   |-- view_comment.php : 코멘트 보기
|   |-- visit.inc.php : 방문자 보기
|   |-- visit_insert.inc.php : 방문자 반영
|   |-- write.php : 게시글 등록 폼
|   |-- write_comment_update.php : 코멘트 등록
|   |-- write_update.php : 게시글 등록
|   |-- write_update_mail.php : 게시글 등록 메일 템플릿
|   |-- zip.db : 우편번호 정보 DB
|   `-- zip.php : 우편번호 검색창
|-- cheditor : DHTML 에디터 디렉토리
|-- common.php : 공통으로 사용하는 코드 (lib/common.lib.php 와 extend 디렉토리를 기본으로 포함)
|-- config.php : 변수, 상수 설정 (common.php 에서 include)
|-- convert : 변환 프로그램 모음 디렉토리
|-- data : 파일 업로드 데이터 디렉토리 
|   |-- cheditor : DHTML 에디터 데이터 디렉토리
|   |   `-- 0511 : 이미지의 업로드 디렉토리를 연월별로 생성
|   |-- file : 게시판 디렉토리
|   |   |-- basic : 게시판별로 별도의 디렉토리가 생성됨
|   |   `-- qa
|   |-- member : 회원 데이터 디렉토리 (회원아이디의 앞 두자리로 디렉토리를 개별 생성함)
|   `-- session : 세션 디렉토리 (로그인 여부 등)
|-- dbconfig.php : DB 설정파일 (없으면 프로그램을 설치함)
|-- head.php : 기본 상단+왼쪽 디자인 관련 페이지
|-- head.sub.php : 공통으로 사용하는 자바스크립트 변수를 선언, 스타일시트, 자바스크립트를 포함
|-- img : 기본 이미지 디렉토리
|-- index.php : 시작 페이지
|-- js : 자바스크립트 소스 디렉토리
|   |-- common.js : 일반적인 자바스크립트
|   |-- filter.js : 글등록시 금지단어 필터링 자바스크립트
|   |-- md5.js : MD5 자바스크립트
|   |-- sideview.js : 이름(별명)에 왼쪽 마우스 클릭시 나타나는 레이어 자바스크립트
|   |-- wrest.gif : 필수 입력 이미지
|   `-- wrest.js : 폼 입력 필드 체크 자바스크립트
|-- lib : 함수 라이브러리 디렉토리
|   |-- cheditor.lib.php : DHTML 에디터 라이브러리
|   |-- common.lib.php : 공통 라이브러리
|   |-- connect.lib.php : 현재 접속자 라이브러리
|   |-- etc.lib.php : 기타 라이브러리 (로그 파일에 기록하는 함수 등)
|   |-- latest.lib.php : 최신글 라이브러리
|   |-- mailer.lib.php : 메일 라이브러리
|   |-- outlogin.lib.php : 외부로그인 라이브러리
|   |-- poll.lib.php : 설문조사 라이브러리
|   |-- popular.lib.php : 인기검색어 라이브러리
|   |-- trackback.lib.php : 트랙백 라이브러리
|   `-- visit.lib.php : 방문자 라이브러리
|-- perms.sh : 데이터 디렉토리 퍼미션 변경 쉘 프로그램
|-- skin : 스킨 디렉토리
|   |-- board : 게시판 스킨
|   |   `-- basic : 기본 스킨
|   |       |-- delete.skin.php : 게시물 삭제
|   |       |-- delete_all.skin.php : 게시물 선택 삭제
|   |       |-- download.skin.php : 첨부파일 다운로드
|   |       |-- list.skin.php : 게시물 리스트
|   |       |-- view.skin.php : 게시물 상세보기
|   |       |-- view_comment.skin.php : 코멘트 보기
|   |       |-- write.skin.php : 게시물 등록 폼
|   |       `-- write_update.skin.php : 게시물 등록
|   |-- connect : 접속자 스킨
|   |   `-- basic : 기본 스킨
|   |       |-- connect.skin.php : 접속자 통계
|   |       `-- current_connect.skin.php : 현재접속자 리스트
|   |-- latest : 최신글 스킨
|   |   `-- basic : 그누보드4 기본 스킨
|   |       `-- latest.skin.php : 최신글 (게시판별로 각각 지정)
|   |-- member : 회원 스킨
|   |   |-- basic : 그누보드4 기본 스킨
|   |   |   |-- calendar.skin.php : 달력
|   |   |   |-- formmail.skin.php : 폼메일
|   |   |   |-- login.skin.php : 로그인
|   |   |   |-- login_check.skin.php : 로그인 체크
|   |   |   |-- member_confirm.skin.php : 회원 패스워드 확인
|   |   |   |-- memo.skin.php : 쪽지
|   |   |   |-- memo_form.skin.php : 쪽지 폼
|   |   |   |-- memo_view.skin.php : 쪽지 상세보기
|   |   |   |-- password.skin.php : 비밀글 조회시 패스워드 입력
|   |   |   |-- password_forget.skin.php : 회원아이디, 패스워드 찾기 1
|   |   |   |-- password_forget2.skin.php : 회원아이디, 패스워드 찾기 2
|   |   |   |-- password_forget3.skin.php : 회원아이디, 패스워드 찾기 3
|   |   |   |-- profile.skin.php : 자기소개
|   |   |   |-- register.skin.php : 회원가입 약관
|   |   |   |-- register_form.skin.php : 회원 등록 폼
|   |   |   |-- register_result.skin.php : 회원가입 결과
|   |   |   |-- register_update.skin.php : 회원 등록
|   |   |   |-- scrap.skin.php : 스크랩
|   |   |   |-- scrap_popin.skin.php : 스크랩 등록
|   |   |   `-- zip.skin.php : 우편번호 찾기
|   |-- new : 최근게시물 스킨 디렉토리
|   |   `-- basic : 기본 스킨
|   |       `-- new.skin.php : 최근게시물 리스트 (게시판 통합 최신글)
|   |-- outlogin : 외부(아웃) 로그인 스킨 디렉토리
|   |   `-- basic : 그누보드4 기본 스킨
|   |       |-- outlogin.skin.1.php : 로그인 이전
|   |       `-- outlogin.skin.2.php : 로그인 이후
|   |-- poll : 설문조사 스킨 디렉토리
|   |   `-- basic : 그누보드4 기본 스킨
|   |       |-- poll.skin.php : 설문조사 항목 선택
|   |       `-- poll_result.skin.php : 설문조사 결과
|   |-- popular : 인기검색어 스킨 디렉토리
|   |   `-- basic : 기본 스킨
|   |       `-- popular.skin.php : 인기검색서 출력
|   |-- search : 게시판 검색 스킨 디렉토리
|   |   `-- basic : 기본 스킨
|   |       `-- search.skin.php : 게시판 검색
|   `-- visit : 방문자 수 스킨 디렉토리
|       `-- basic : 그누보드4 기본 스킨
|           `-- visit.skin.php : 방문자 수 출력
|-- style.css : 스타일시트
|-- tail.php : 기본 오른쪽+하단 디자인 관련 페이지
`-- tail.sub.php : 공통으로 사용하는 폼 검사 자바스크립트(wrest.js)를 포함

WHERE (password = PASSWORD('$password') OR password = OLD_PASSWORD('$password'))

'job > mysql' 카테고리의 다른 글

mysql innodb buffer pool size  (0) 2019.01.24
마리아디비 mariadb slow query log 적용 안될 때  (0) 2019.01.21
mysql update replace  (0) 2018.09.03
mysql history 로그 설정  (0) 2018.09.03
mysql 컴파일시 옵션 설명  (0) 2018.09.03

password 함수가 맞지않을때


 


my.cnf 혹은 html안에 common.php 수정


 


 @mysql_query('set old_passwords=0'); 


 


 


예)


$dirname = dirname(__FILE__).'/';

$dbconfig_file = "dbconfig.php";

if (file_exists("$g4[path]/$dbconfig_file"))

{

    if (is_dir("$g4[path]/install")) die("<meta http-equiv='content-type' content='text/html; charset=$g4[charset]'><script type='text/javascript'> alert('install ?~T?~I?좊

━瑜???젣?~X?ъ~U??~U?~A ?ㅽ~V~I?⑸~K~H??'); </script>");


    include_once("$g4[path]/$dbconfig_file");

    $connect_db = sql_connect($mysql_host, $mysql_user, $mysql_password);

    $select_db = sql_select_db($mysql_db, $connect_db);



        @mysql_query('set old_passwords=0');


    if (!$select_db)

        die("<meta http-equiv='content-type' content='text/html; charset=$g4[charset]'><script type='text/javascript'> alert('DB ?~Q?~M ?ㅻ쪟'); </script>");

}

else

{

    echo "<meta http-equiv='content-type' content='text/html; charset=$g4[charset]'>";

    echo <<<HEREDOC

    <script type="text/javascript">

    alert("DB ?ㅼ젙 ?~L?쇱~]?議댁~^ы~U~X吏~@ ?~J?듬~K~H??\\n\\n?~D濡~\洹몃~^??ㅼ튂 ?~D ?ㅽ~V~I?~X?~\湲?諛~T?~M?~H??");

    location.href = "./install/";

    </script>

HEREDOC;

    exit;


 


 


 


mysql db 관련 


 


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TYPE=MyISAM' at line

에러


 


 


 


MySQL 4.x는 TYPE=MyISAM

MySQL 5.x는 ENGINE=MyISAM 


 


해당 덤프 파일 vi로 열고


: $s/TYPE=MyISAM/ENGINE=MyISAM/g 

pdate TB_TEST set test_path = REPLACE(test_path,"www.naver.com","www.daum.net");

'job > mysql' 카테고리의 다른 글

마리아디비 mariadb slow query log 적용 안될 때  (0) 2019.01.21
mysql old패스워드 password 함수 동시 사용  (0) 2018.09.03
mysql history 로그 설정  (0) 2018.09.03
mysql 컴파일시 옵션 설명  (0) 2018.09.03
mysql select 문  (0) 2018.09.03

dmidecode -t 17 | egrep 'Memory|Size'


 


 


 


smartctl -i /dev/sda 

zgrep "authid=" /var/log/maillog* | awk '{print $8}' | sort | uniq -c | grep authid | sort -r


  


 zgrep "authid=" /var/log/maillog* |  awk '{print $7}' | sort | grep relay |  uniq -c | sort -r


 

특정 계정이 대량메일 발송할때 로그 토대로 카운트 찍어서 찾는거

'job > linux' 카테고리의 다른 글

smartctl 을 이용한 디스크 점검하기  (0) 2018.11.14
hp cli(os단) 레이드 잡는법, 삭제하는법  (0) 2018.09.06
rkhunter 설치  (0) 2018.09.03
컴파일 빠르게 하기  (0) 2018.09.03
메모리덤프  (0) 2018.09.03

dmidecode -t 17 | egrep 'Memory|Size'

mysql에 접속하여 방향키를 위로 올리면 그전에 입력했던 명령어를 확인할수 있습니다. 그러나 이렇게 하나하나씩 말고 로그형식으로 저장돼있는 파일을 확인하는 방법을 알아보겠습니다.

쿼리 로그를 파일로 남기는 방법

1.

 

먼저 mysql에 접속을 합니다.


mysql -u root -p 
"패스워드"

 

현재 로그 활성화 상태를 확인 하겠습니다.


show variables where Variable_name in ('version', 'log', 'general_log');
off로 돼 있습니다.

on으로 바꿔주고 다시 확인해보겠습니다. 

set global general_log = 1;
show variables where Variable_name in ('version', 'log', 'general_log');
on으로 바꼈습니다.

 

로그 파일을 확인해보겠습니다.

로그 파일의 위치는 코리아 IDC 기준 /free/mysql_data 입니다.(mysql db 디렉토리)

localhost.log 란 이름으로 저장이 됩니다.

 

이제 새로운 세션으로 접속하고 테스트 쿼리를 날려 확인해보겠습니다.

위에 있는 세션으로 show processlist; 란 쿼리를 입력하였고 
아래 세션이 새로 접속하여 /free/mysql_data디렉토리에 위치해 있는 localhost.log 란 파일을 확인중입니다.
확인 결과 날짜와 시간과 함께 입력한 쿼리문이 보입니다.

이방법은 mysql server를 재시작하지 않아도 바로 적용이 됩니다. 하지만 mysql server를 재시작 한다면 옵션이 풀리기때문에 이 방법을 사용하려한다면 set global general_log = 1; 옵션으로 다시 로그를 활성화 시켜야 합니다.

 

 

2.

첫번째 방법과 동일하게 로그를 활성화 시키는 방법입니다. 첫번째 방법과 다른점은 
my.cnf를 수정하는 방법으로 첫번째 방법과 반대로 mysqlserver를 재시작 해줘야 적용이 되고 재시작을 해줘도 계속 적용 됩니다.

 

my.cnf를 vi로 열어줍니다.

vi /etc/my.cnf

 

mysqld를 찾아 밑에 log = /free/mysql_data(mysqldb디렉토리)/logname.log 를 입력합니다.

 

저장하고 나온뒤 mysql.server를 재시작합니다.

재시작한뒤 로그를 확인해봅니다.

위에 두 방법은 정상적인 쿼리만 쌓이기 때문에 test; sdlfsdkl; 등의 인식되지 않는 명령어는 로그에 남지 않습니다.
또한 일반 웹사이트에서의 모든 쿼리또한 전부저장됩니다. 위에 보시는 것처럼 11시08분 30초에만 약 15~20개의 쿼리가 입력됩니다.
그렇기 때문에 이 방법을 쓴다면 해당 로그파일의 용량이 금방 늘어납니다.
(첫번째 방법을 실행한 서버는 mysql만 설치되어있는 테스트서버이고 두번째 방법을 실행한 서버는 실제 구동중인 서버입니다. 그래서 첫번째 결과에 쿼리가 많이 안찍혀있습니다.)

 

마지막 세번째 방법 입니다.

이 방법은 일반 리눅스 시스템에서 명령어를 남기는 history와 같습니다. 위치는 홈디렉토리이고 파일명은 .mysql_history입니다.

cd ~
ls -al


일반 history인 .bash_history가 보이고 mysql history 파일인 .mysql_history 파일이 보입니다.
파일명 앞에 . 이 붙게 된다면 그 파일은 숨김파일이 됩니다. ls -al 을 하여 확인 가능 합니다.

 

.mysql_history 파일을 확인해보겠습니다.

위에 보시면 아시겠지만 맨처음 지정한 루트 패스워드가 나옵니다. 패스워드가 여과없이 전부 출력 됩니다.그렇기 때문에 보안상 매우 취약합니다.
그렇다면 mysql_histroy를 남지 않게끔 하는 방법을 알아보겠습니다.


1.
우선 생성되어있는 .mysql_history 파일을 삭제합니다.
그다음 mysql_history 파일을 /dev/bull으로 심볼릭 링크를 겁니다.

ln -s /dev/null /홈디렉토리(root계정은 root 또는 ~ )/.mysql_history

 

이방법은 루트 계정만 돌아가는 서버면 상관 없겠지만 일반 계정이 많은 서버에서는 추천하지 않습니다.
이유는 일반계정마다 하나하나씩 해줘야하고 해준다 해도 나중에 일반계정을 추가하면 또 심볼릭 링크를 따로 걸어줘야합니다.


2.
MYSQL_HISTFILE 변수를 /dev/null로 설정


vi /etc/profile
export MYSQL_HISTFILE=/dev/null 추가 한뒤 저장

 


source /etc/profile

 

이상입니다.

보안과 편리함은 반비례하기 때문에 잘 판단하여 사용하기 바랍니다.

'job > mysql' 카테고리의 다른 글

mysql old패스워드 password 함수 동시 사용  (0) 2018.09.03
mysql update replace  (0) 2018.09.03
mysql 컴파일시 옵션 설명  (0) 2018.09.03
mysql select 문  (0) 2018.09.03
mysql 케릭터셋  (0) 2018.09.03

mysql 5.6 버전 기준입니다.
cmake로 컴파일 하는 버전, 즉 5.5.9 버전부터 최근에 나온 버전(5.7.2) 까지는 거의 동일합니다.

따라서 사용중인 mysql 버전이 5.5버전 이상인 경우는 버전에 크게 신경 안써도 됩니다.

설치시 어떤 옵션을 주어야 할지 몰라서 오신분들은 마지막 부분에 추천 옵션만 보시면 됩니다.


옵션중 "bool"로 표기돼 있는 것은 0(OFF) 또는 1(ON)로 주면 됩니다.
ex)-DENABLED_LOCAL_INFILE=bool 이란 옵션이 있다면
   -DENABLED_LOCAL_INFILE=1(활성화)
   -DENABLED_LOCAL_INFILE=0(비활성화) 입니다. 
   -DENABLED_LOCAL_INFILE 옵션의 기본값은 off 입니다. 따라서 이 옵션을 사용하지 않는다면 안써주면 됩니다. 
    그러나 이 옵션을 활성화 해야 한다면 -DENABLED_LOCAL_INFILE=1 으로 하면 됩니다.

---------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------
Installation Layout Options

 

-DINSTALL_LAYOUT=name   기본값=standalone
사전 정의 된 설치의 레이아웃을 선택.

standalone = 동일한 레이아웃입니다. tar.gz 형식을 위해 사용. ZIP 패키지
rpm:RPM 패키지와 비슷한 레이아웃.
svr4:Solaris 패키지 레이아웃.
deb:DEB 패키지 레이아웃. 실험(미완성버전?이나 테스트용을 뜻하는듯)

ex)solaris 패키지 레이아웃으로 설치를 원한다면   -DINSTALL_LAYOUT=svr4
솔라리스 레이아웃을 선택하지만 추가로 다른 옵션을 지정하여 개별 구성 요소의 설치 위치를 변경 할수 있다.
예를들면 
shell> cmake . -DINSTALL_LAYOUT=SVR4 -DMYSQL_DATADIR=/var/mysql/data
(레이아웃은 솔라리스패키지용으로 설치하되, mysql datadir는 /var/mysql/data로 지정)


-DCMAKE_INSTALL_PREFIX=dir_name   기본값=/usr/local/mysql
mysql 디렉토리 설치 경로 지정

-DINSTALL_BINDIR=dir_name        기본값=PREFIX/bin
bin 파일

-DINSTALL_DOCDIR=dir_name  기본값=PREFIX/docs
documentaion 파일

-DINSTALL_DOCREADMEDIR=dir_name  기본값=PREFIX
readme 파일

-DINSTALL_INCLUDEDIR=dir_name  기본값=PREFIX/include
header 파일 
 
-DINSTALL_INFODIR=dir_name  기본값=PREFIX/docs 
info 파일

-DINSTALL_LIBDIR=dir_name  기본값=PREFIX/lib
library 파일

-DINSTALL_MANDIR=dir_name  기본값=PREFIX/man
manual page

-DINSTALL_MYSQLSHAREDIR=dir_name 기본값=PREFIX/share
shared data 파일

-DINSTALL_MYSQLTESTDIR=dir_name  기본값=PREFIX/mysql-test
 mysql-test 디렉토리

-DINSTALL_PLUGINDIR=dir_name  기본값=PREFIX/lib/plugin
plugin 디렉토리

-DINSTALL_SBINDIR=dir_name  기본값=PREFIX/bin
mysqld server 파일

-DINSTALL_스크립트DIR=dir_name  기본값=PREFIX/스크립트s
mysql_install_db 디렉토리

-DINSTALL_SHAREDIR=dir_name  기본값=PREFIX/share
aclocal/mysql.m4 파일

-DINSTALL_SQLBENCHDIR=dir_name  기본값=PREFIX
sql-bench 디렉토리

-DINSTALL_SUPPORTFILESDIR=dir_name 기본값=PREFIX/support-files
extra support files 파일

-DMYSQL_DATADIR=dir_name
mysql data디렉토리

-DODBC_INCLUDES=dir_name
ODBC includes 디렉토리

-DODBC_LIB_DIR=dir_name
ODBC library 디렉토리

-DSYSCONFDIR=dir_name
기본 my.cnf의 옵션 파일 디렉토리

--------------------------------------------------------------------
CMAKE_INSTALL_PREFIX 와 MYSQL_DATADIR 옵션을 제외한 나머지 옵션들은 따로 설정할 필요가 없다.
이유는 보시다시피 전부 기본값이 CMAKE_INSTALL_PREFIX 옵션으로 지정해준 경로의 하위 디렉토리이기 때문이다.
MYSQL_DATADIR 는 편한대로 지정해주면 된다.

Installation Layout Options 중에서 알아둬야할 옵션은 -DCMAKE_INSTALL_PREFIX 와 MYSQL_DATADIR 이다.
나머지는 기본값으로 해도 무방하다.

---------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------
Storage Engine Options

서버에 정적스토리지 엔진 설정

-DWITH_engine_STORAGE_ENGINE=1

ex)
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1

반대로 제외할려면
-DWITHOUT_engine_STORAGE_ENGINE=1

myisam 엔진은 따로 설정할 필요가 없다.

---------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------
Feature Options

-DCOMPILATION_COMMENT=string
컴파일 환경에 대한 설명 코멘트

-DDEFAULT_CHARSET=charset_name  기본값:latin1
서버의 기본 케릭터셋 설정

-DDEFAULT_COLLATION=collation_name 기본값:latin1_swedish_ci
서버의 기본 콜레이션 설정

-DENABLE_DEBUG_SYNC=bool
서버에 디버깅 동기화 기능을 컴파일하는것으로 , 테스트 및 디버깅을 위해 사용됨.
이 옵션은 기본적으로 활성화 되어 있지만 mysql 설정에서 디버깅이 구성되어 있지 않으면 효과가 없다.
디버깅을 활성화하고 디버깅 동기화를 비활성화하는 경우는 -DENABLE_DEBUG_SYNC=0 옵션을 사용

-DENABLE_DOWNLOADS=bool   기본값:off
어떤 파일을 다운로드할지 여부

-DENABLE_DTRACE=bool
DTrace 프로브의 지원을 포함할지 여부

-DENABLE_GCOV=bool
gcov의 지원을 포함할지 여부 (리눅스에서 가능)

-DENABLE_GPROF=bool    기본값:off
gprof 사용 여부(최적화된 리눅스에서 가능)

-DENABLED_LOCAL_INFILE=bool  기본값:off
LOAD DATA INFILE에 대한 클라이언트 라이브러리에서 LOCAL 기능을 사용할지 여부

-DENABLED_PROFILING=bool  기본값:on
쿼리 프로파일 링 코드를 사용할지 여부   

-DIGNORE_AIO_CHECK=bool   기본값:off
DBUILD_CONFIG=mysql_release옵션을 줬을때 libaio 라이브러리 검사를 무시

-DMYSQL_MAINTAINER_MODE=bool  기본값:off
MySQL의 메인테이너 특정 개발 환경을 사용할지 여부

-DMYSQL_PROJECT_NAME=name  기본값:3306
Windows or Mac OS X 에서만 사용가능

-DMYSQL_TCP_PORT=port_number  기본값:3306
tcp/ip 포트 넘버 설정

-DMYSQL_UNIX_ADDR=file_name  기본값:/tmp/mysql.sock
서버가 소켓 연결을 수신하는 Unix 소켓 파일의 경로.
절대경로로 써주어야 합니다.

-DOPTIMIZER_TRACE=bool
최적화 프로그램 추적을 지원하는지 여부

-DWITH_DEBUG=bool   기본값:Off
디버깅 지원을 포함할지 여부

-DWITH_DEFAULT_COMPILER_OPTIONS=bool 기본값:ON
기본 컴파일러 옵션을 사용할지 여부
-DWITH_DEFAULT_FEATURE_SET=bool  기본값:ON
기본 freature 옵션을 사용할지 여부
위에 두 옵션의 기본 옵션의 위치는 cmake/build_configurations/'compiler' or feature_set.cmake 파일

-DWITH_EXTRA_CHARSETS=name  기본값:all
추가로 지원할 케릭터셋 설정

-DWITH_INNODB_MEMCACHED=bool  기본값:OFF
memcached의 공유 라이브러리를 생성할지 여부(libmemcached.so and innodb_engine.so)

-DWITH_LIBEVENT=string   기본값:bundled
두 libevent 라이브러리 사용

-DWITH_LIBEDIT=bool   기본값:on
bundled libedit 라이브러리를 사용

-DWITH_LIBWRAP=bool   기본값:off
libwrap의 (TCP wrappers) 지원을 포함할지 여부

-DWITH_READLINE=bool   기본값:off
bundled readline 라이브러리를 사용
readline은 오래된 번들로서 5.6.5 버전부터 삭제된 옵션

-DWITH_SSL={ssl_type|path_name}  기본값:no
ssl 지원 여부

-DWITH_UNIXODBC=1   기본값:off
unixodbc사용가능 여부

-DWITH_ZLIB=zlib_type   기본값:system
zlib지원 여부

-DWITHOUT_SERVER=bool   기본값:off
mysqlserver없이 구축할지 여부

---------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------

추천 옵션
 

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DSYSCONFDIR=/free/mysql_data
-DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_EXTRA_CHARSETS=complex
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1
-DWITH_READLINE=1
-DMYSQL_TCP_PORT=3306
-DENABLED_LOCAL_INFILE=1

-DMYSQL_USER=mysql

설명
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
mysql 디렉토리 지정.

-DSYSCONFDIR=/free/mysql_data
db디렉토리 지정

-DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock
mysql.sock 위치 지정.

-DDEFAULT_CHARSET=utf8
디폴트 케릭터셋 지정

-DDEFAULT_COLLATION=utf8_general_ci
디폴트 콜레이션 지정

-DWITH_EXTRA_CHARSETS=complex
추가 지원할 케릭터셋 all,complex,none 이 있다. all 로 줘도 무방하지만 complex로 줘도 충분합니다.

-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1
스토리지 엔진 장착 
(mysql5.6부터는 기본 엔진이 innodb이고, 각 엔진마다 장단점이 있다.설치후 변경 가능)

-DWITH_READLINE=1
readline 사용 가능
이 옵션을 사용하면 원격접속후 mysql에서 한글 타이핑시 한글이 보입니다. 사용하지 않으면 한글이 보이지 않고 그냥 빈 공백으로 보입니다.  그러나 테스트 결과 옵션 적용해도 글자가 안 보입니다. 어차피 이제 곧 없어질 옵션이니 써도 그만 안써도 그만, 크게 신경 쓸 필요없는 옵션입니다.
이 옵션은 5.6.6 부터는 사용되지 않습니다. 이유는 너무 오래된 번들이기 때문.

-DMYSQL_TCP_PORT=3306
mysql 기본 포트 3306

-DENABLED_LOCAL_INFILE=1
local_infile 변수 사용 가능하게끔.
텍스트 파일의 데이터를 특정 테이블에 저장하는 변수.

-DMYSQL_USER=mysql

이 옵션은 공식홈페이지에는 나와있지 않은 옵션입니다. 그러나 mysql 설치하시는 분들중 종종 이 옵션을 넣더군요. 테스트결과 서버에 아무 지장 없으니 넣어도 그만 안넣어도 그만입니다.

mysql사용자를 "mysql"이란 사용자로 하는거겠지요 ?

 

이상 mysql 설치시 옵션에 대해 알아보았습니다.

5.6버전 기준이며 mysql 공식 홈페이지 http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html 참조 하였습니다.

몇몇 옵션들은 기본값이 off로 돼 있어도 설치해보면 on으로 돼있는 경우도 있습니다.
ex)-DENABLED_LOCAL_INFILE=1   //디폴트값은 0ff로서 이옵션을 주지 않으면 off로 돼있어야 하지만 on으로 돼있음

그렇기 때문에 옵션값과 디폴트값이 같더라도 중요한 옵션은 다시한번 적어주었습니다.
ex)-DCMAKE_INSTALL_PREFIX=/usr/local/mysql

서버 환경이나 용도에 따라 변경 하셔야 합니다.

'job > mysql' 카테고리의 다른 글

mysql update replace  (0) 2018.09.03
mysql history 로그 설정  (0) 2018.09.03
mysql select 문  (0) 2018.09.03
mysql 케릭터셋  (0) 2018.09.03
mysql 로그 설정  (0) 2018.09.03

select * from db;

 

디비 나열

--------------------------

 

select User, Db from db;

 

db안에 user랑 db열만 나열

-------------------------

 

select * from db where User = 'root';

 

db안에 user이름이 root만

-------------------------------

 

select User from db;

where User like '%ot'

 

db에 ot로 끝나는(root,bot,soot등)것들 User열만 나열

---------------------------------

'job > mysql' 카테고리의 다른 글

mysql history 로그 설정  (0) 2018.09.03
mysql 컴파일시 옵션 설명  (0) 2018.09.03
mysql 케릭터셋  (0) 2018.09.03
mysql 로그 설정  (0) 2018.09.03
mysql 계정생성등  (0) 2018.09.03
루트킷 확인을 위한 rkhunter 설치 및 사용법
 
루트킷이란 루트권한을 획득한 공격자가 심어놓은 프로그램을 숨기기 위한 목적으로 사용되는 프로그램입니다.

---------------------------------------------------
먼저 rkhunter 설치프로그램을 다운로드 하겠습니다.
 
 

# tar -xvzf rkhunter-1.4.0.tar.gz 

 
 
# cd rkhunter-1.4.0
 
# sh installer.sh  --install
설치 완료
 

설정파일은 /etc/rkhunter.conf
 
 
84번 라인 MAIL-ON-WARNING= 부분은 경고메일을 받을수 있도록 설정하는 라인 빼고는 특별히 만질것은 없습니다.

(수시로 체크하실것 아니면 주석 처리하면 됩니다.)
 
---------------------------------------------------
실행명령어는
# rkhunter --check 
또는 
# rkhunter -c --rwo  // warning메세지,비정상적인 결과만 출력
입니다.
 
시작하기 전에 rkhunter 가 사용할 DB를 생성합니다.
rkhunter --propupd
 
 
rkhunter -c --rwo 명령어로 실행해보겠습니다.
 
 
 
rootkit hunter 스캔 순서는
1.알려진 rootkit 존재 여부
2.알려진 rootkit 관련 파일 존재 여부,백도어 존재 여부, sniffer 로그 존재 여부
3./etc/rc.d/rc.sysint , /etc/xinetd.conf 파일에 의심스런 설정 추가 여부 스캔
4./bin/ps /bin/ls /bin/netstat 등 자주 변조되는 파일의 변조 여부 스캔
5.로드된 모듈 스캔
6.자주 쓰는 백도어 포트 스캔(2001,2006,2128,14856,47107,60922)
7.NIC의 promisc 여부 스캔
8.유저와 그룹 파일의 변조 여부 스캔
9./etc/rc.d/rc.local 및 rc.d/ 디렉토리 이하 여부 스캔
10. /dev내 수상한 파일 스캔
11. 특정 응용 프로그램의 패치 여부 스캔
12. ssh 보안 설정 등 기타 보안 설정 스캔
-------------------------------------------------------------------------
warning 으로 나오는 부분은 변조되었다거나.. 위험도가 높은것이므로 사용자가 따로 설정한게 아니라면
확인하여 삭제 혹은 정상파일로 대체하시면 됩니다.
체크된 내용중 warning 메세지가 출력된 부분을 살펴보겠습니다.
 
 
 
 
 
 
 
 
 
//주석을 해제해주면 yes로 돼있다고 또 경고를 줍니다. 보안상 no로 해놓고 특정 계정으로 수권한을 획득하는게 가장 좋습니다. 
 
 
 
 
 
 
 
이 외에도 수많은 warning 메세지가 있을수 있으니 구글링을 하여 삭제or복원하여 해결하면 됩니다.

----------------------------------------------------------------------------------
기타 명령어
# rkhunter --update // rkhunter 업데이트가 활발하기 때문에 주기적으로 업데이트할것


'job > linux' 카테고리의 다른 글

hp cli(os단) 레이드 잡는법, 삭제하는법  (0) 2018.09.06
대량메일 발송 특정 IP 혹은 계정 찾기  (0) 2018.09.03
컴파일 빠르게 하기  (0) 2018.09.03
메모리덤프  (0) 2018.09.03
lime 포렌식  (0) 2018.09.03

컴파일 빠르게 하기

 

make의 옵션중 j 옵션을 사용한다.

 

이 옵션은 여러개의 쓰레드를 사용하여 병렬적으로 빌드하여 속도를 올려주는 옵션

 

방식은

 

make -j (코어갯수 + 1)  

ex) make -j 5    // 코어갯수 4개

 

코어갯수 확인은 cat /proc/cpuinfo | grep cores | wc -l

 

 

옵션을 안주고 그냥 make 할경우

이런식으로 하나의 코어만 사용하는데

 

make -j 옵션을 사용했을경우

이런식으로 모든 코어를 사용하는걸 확인할수 있다.

 

8분정도 걸리는 make 작업은 2분정도로 단축됐음

'job > linux' 카테고리의 다른 글

대량메일 발송 특정 IP 혹은 계정 찾기  (0) 2018.09.03
rkhunter 설치  (0) 2018.09.03
메모리덤프  (0) 2018.09.03
lime 포렌식  (0) 2018.09.03
yum 에러날경우  (0) 2018.09.03

<meta http-equiv="Content-Type" content="text/html; charset=ksc5601" /></style>

윈도우 2008 서버 이전시 iis 설정 이전 방법

------------------------------------

 

appcmd 라는 명령어로 iis7 설정을 백업/복원 할수 있지만 서버 이전에는 쉽지않다.

그래서 web deployment 라는 툴을 사용하여 이전한다.

다운로드

 64-bit version: http://download.microsoft.com/download/8/9/B/89B754A5-56F7-45BD-B074-8974FD2039AF/WebDeploy_amd64_en-US.msi 

32-bit version: http://download.microsoft.com/download/8/9/B/89B754A5-56F7-45BD-B074-8974FD2039AF/WebDeploy_x86_en-US.msi 

 

다운로드하여 설치한다.

1

설치가 완료되면 위와같이 서버 패키지 내보내기/서버 또는 사이트 패키지 가져오기 항목이 생긴다.

서버 패키지 내보내기를 클릭한다.

 

2

서버 패키지 내보내기 화면

 

 

3

여기서 중요

iis 설정뿐만 아니라 해당 웹/ftp 의 디렉토리 까지 저장 되기때문에 체크를 해놓으면 굉장히 오래걸릴 수 가 있다.

 

 

4

위와같이 해당 디렉토리까지 이전된다.

 

 

5

위와같이 디렉토리는 체크를 해제해준다.

 

 

 

6

웹사이트 콘텐츠에 포함된 폴더 및 파일들의 ACL 권한 정보를 포함하여 패키징 할것인지 여부

기본값은 false로 ACL 정보를 포함하지 않는다.

 

7

위처럼 true 로 바꾼다.

 

그뒤로는 전부 다음 누르고 패키지를 저장하면된다.

 

그리고 이전용 서버에도  web deployment 를 설치해주고 패키지 가져오기 하면 이전 완료

+ Recent posts