[출처] http://www.mimul.com/pebble/default/2013/12/07/1386399914136.html



대용량 테이블을 운용하는 경우 도움이 될만한 아티클 "Ten ways to improve the performance of large tables in MySQL"이 있어, 이 블로그에 정리해 봅니다.
아래 가지 10가지 방법을 잘 고민해 보면 좋은 도움을 받을 수 있을 것 같습니다.

오늘은 성능 문제를 일으키는 원인이 되는 대용량 테이블의 성능을 개선하는 방법을 살펴본다. 여기의 조언들은 일부는 많은 테이블을 가진 큰 데이터베이스에 적용할 수 있지만 대부분의 경우는 개별적으로 특별히 큰 테이블이 더 큰 문제라는 것이다.

테이블의 내용 변경의 속도는 테이블 사이즈가 커질수록 줄어드는 것을 일반적으로 알려진 사실이다. 아래는 B+Tree 인덱스의 성능을 시계열로 보여주는 그래프이다.



위의 그래프는 MySQL@Facebook에서 포스팅한 것이다. 이것은 insert buffer를 해제한 상태(물론 추천 하지는 않고, 데모 목적)에서 테이블에 10억 행을 insert했을 때의 성능 저하를 나타낸 것이다. 이 벤치 마크는 iibench도구를 사용했고, TokuTek에서 디자인한 것이다.

그래서 우리는 이러한 성능 저하가 인덱스 구조에 의한 것이라고 생각했지만, 그래도 우리는 이 곡선을 급격하게 내려가지 않고, 옆으로 길게 늘어지도록 할 수 있는 방법을 모색해 봐야 한다.

대용량 테이블의 성능에 영향을 줄일 수 있는 10가지 방법

1. MyISAM 대신에 InnoDB를 사용하자. MyISAM은 테이블의 마지막에 insert하는 경우에는 속도가 빠르지만, 테이블 잠금(update 및 delete에 제한 되지만)이 있고, 데이터를 디스크에서 읽기와 쓰기를 할 때 경합 때문에 키 버퍼를 보호하기 위해 싱글락을 사용한다. 또한 후술하겠지만, 체인지 버퍼 기능을 가지고 있지 않다.

2. InnoDB는 유니크하지 않은 보조 인덱스의 빌딩을 지연시키는 체인지 버퍼 기능(이전에 insert buffer라고 불리던 기능)을 가지고 있다. 이에 대한 자세한 것은 Facebook의 노트에 기술되어 있다. 이것은 위의 그래프에는 보여지지 않지만, insert의 성능을 상당히 빠르게하는 것으로, 기본적으로 활성화되어 있다. 이 기능은 MySQL 5.5에서 좋게 개선 되었기 때문에, 만약 업그레이드 하지 않는 경우에는 즉시하는 것이 좋다.

3. 파티셔닝은 인덱스의 크기를 작게하여 테이블 자체를 효율적으로 작게 나눌 수 있게 된다. 또한, MySQL 5.7.2 DMR에서 상당히 개선된 내부적인 인덱스 잠금(index->lock) 경합(contention)도 줄여 준다.

4. InnoDB의 압축 기능을 사용하자. 몇몇 부하 종류의(특별히 많은 char/varchar/text형 컬럼이있는 경우) 압축 기능은 데이터를 압축해 성능 저하의 곡선을 완만하게 해준다. 또한, 일반적으로 용량이 작은 SSD를 사용해도 된다. InnoDB의 압축 기능은 Facebook에서 제공한 여러가지 패치 덕택에 MySQL 5.6에서는 크게 개선 되었다.

5. 정렬후 대용량의 데이터를 테이블에 로드해라. 정렬된 데이터를 인서트하는 것은, 페이지 분할(메모리 상에 없는 테이블에서 성능은 악화되는)이 작게 될 것이고, 대용량 데이터의 로드는 테이블의 용량과는 특별히 관계가 없지만, redo 로그의 압축 부하를 줄여주는데 도움을 준다.

6. 테이블에서 불필요한 인덱스를 지우자. 체인지 버퍼 기능을 비활성화시키는 UNIQUE 키를 특히 주의하자. 제약 조건을 사용할 이유가 없는 경우, UNIQUE 키를 사용하지 않고 일반적인 INDEX를 사용하자.

7. 5, 6에서 관련된 PRIMARY KEY의 종류도 중요하다. 성능 저하를 빠르게 만들어버리는 GUID와 같은 데이터 타입보다, INT나 BIGINT를 사용하자. PRIMERY KEY가 없는 것도 성능에 부정적인 영향을 준다.

8. 새 테이블에 대용량 데이터를 로드할 경우 PRIMARY KEY가 아닌 인덱스는 나중에 만들자. 모든 데이터가 로드된 후 인덱스를 만든다면, InnoDB는 pre-sort와 및 대용량 로드 프로세스(빠르고 인덱스가 좀 더 콤팩트한 인덱스를 만드는)를 적용 할 수 있게 된다. 이 최적화는 MySQL 5.5에서 이루어졌다.

9. 메모리가 많으면 많을수록 도움을 받을 수 있다. 최근의 메모리의 실제 가격을 비교해 보면 새로운 데이터 베이스 서버에 너무 적은 메모리를 적용하는 것을 자주 볼 수 있다. 간단한 조언을 해 보면, SHOW ENGINE INNODB STATUS의 결과에서 BUFFER POOL AND MEMORY의 reads/s의 보여주고(읽고 있음을 나타냄), Free buffers(이것도 BUFFER POOL AND MEMORY 아래에 있다)의 수가 0이면 메모리를 더 늘리면 혜택이 얻을 수 있다.(innodb_buffer_pool_size를 잘 최적화했다는 가정하에. 이 문서를 참고).

10. 메모리 뿐만 아니라, SSD도 도움이 된다. 그래프의 곡선이 하향이 되는 이유는 테이블이 커져서 일어나는 IO 속성 때문이다. 하드 디스크가 초당 200 오퍼레이션(IOPS)을 수행하는데 반해, 일반적인 SSD는 20000 IOPS 이상 수행이 가능하다.

용어 정의

  • Change Buffer: MySQL 5.5이전에는 insert buffer라고 했으며, 이름 그대로 INSERT의 성능을 향상시키기 위한 버퍼다. insert buffer는 새로운 행을 삽입하는 INSERT에 대해서만 유효했는데, Change Buffer는 UPDATE 및 DELETE도 좋은 효율성을 보여준다.


반응형

Spine / Poller 설정


 - cacti 는 기본적으로 매 5분 단위로 체크를 하게 되는데, Spine 를 설정함으로써 매분간 체크를 할 수 있다.

 - Spine 를 설치하면 multi process 및 thread로 성능을 향상시킬 수 있다.

 - 이것 또한 해당 까페에 동일하게 잘 정리되어 있지만 여기서 에러난 부분에 대해서 정리해 보았다.


- 다운로드 : http://www.cacti.net/spine_download.php


wget http://www.cacti.net/downloads/spine/cacti-spine-0.8.8b.tar.gz


압축을 푼 후 ./configure 를 하게 된다. 여기서 에러가 2번 발생한 부분에 대해 정리해 본다.


./configure 

[root@Cacti cacti-spine-0.8.8b]# ./configure

checking build system type... x86_64-unknown-linux-gnu

checking host system type... x86_64-unknown-linux-gnu

checking for a BSD-compatible install... /usr/bin/install -c

checking whether build environment is sane... yes

checking for a thread-safe mkdir -p... /bin/mkdir -p

checking for gawk... gawk

checking whether make sets $(MAKE)... yes

checking whether make supports nested variables... yes

checking for gawk... (cached) gawk

checking for gcc... no

checking for cc... no

checking for cl.exe... no

configure: error: in `/home/spine/cacti-spine-0.8.8b':

configure: error: no acceptable C compiler found in $PATH

See `config.log' for more details


해결방법

yum -y install gcc


설치 후 다시 진행


참조 : http://junemoon.tistory.com/30


./configure


checking for netinet/in_systm.h... yes

checking for netinet/in.h... yes

checking for netinet/ip.h... yes

checking for netinet/ip_icmp.h... yes

checking for unsigned long long... yes

checking for long long... yes

checking for an ANSI C-conforming const... yes

checking for size_t... yes

checking whether time.h and sys/time.h may both be included... yes

checking whether struct tm is in sys/time.h or time.h... time.h

checking return type of signal handlers... void

checking for malloc... yes

checking for calloc... yes

checking for gettimeofday... yes

checking for strerror... yes

checking for strtoll... yes

checking priv.h usability... no

checking priv.h presence... no

checking for priv.h... no

checking whether we are using Solaris privileges... no

checking sys/capability.h usability... no

checking sys/capability.h presence... no

checking for sys/capability.h... no

checking whether we are using Linux Capabilities... no

configure: error: Cannot find MySQL headers.  Use --with-mysql= to specify non-default path.



해결방법


yum install mysql-devel


위의 mysql-devel 설치


설치 후 다시 진행해 보자


./configure


checking for the maximum MySQL buffer size... 65536

checking whether we are using traditional popen... no

checking whether to verify net-snmp library vs header versions... no

checking for glibc gethostbyname_r... yes

checking for Solaris/Irix gethostbyname_r... no

checking for HP-UX gethostbyname_r... no

checking that generated files are newer than configure... done

configure: creating ./config.status

config.status: creating Makefile

config.status: creating config/config.h

config.status: executing depfiles commands

config.status: executing libtool commands


이제 make 및 install 진행해 보자


make && make install


spine.conf 수정


cp /usr/local/spine/etc/spine.conf.dist /usr/local/spine/etc/spine.conf

vi /usr/local/spine/etc/spine.conf


해당 DB 정보들을 수정해 주자

DB_Host         localhost
DB_Database     cacti
DB_User         cacti
DB_Pass         cacti
DB_Port         3306
DB_PreG         0


Cacti 에 등록을 진행하자.

해당 방법들은 모두 캡쳐해서 사진으로 대처




설정이 완료 되면 1분마다 체크하는지 로그를 확인해 보자


이것으로 Spine 설치 및 설정까지 완료 된 것을 확인할 수 있다.


이후 Percona Script 적용까지 진행 해 보았다.


반응형

'Monitoring > Cacti' 카테고리의 다른 글

[Cacti] 설치 -> MySQL Power group 참조  (0) 2016.07.27

http://cafe.naver.com/mysqlpg/16


해당 까페를 자주 보는데, 여기서 찾아서 진행 했다.

그래서 따로 퍼와서 작성하기에는 문제가 있을것 같아서 해당 링크를 연결했다.



반응형

'Monitoring > Cacti' 카테고리의 다른 글

[Cacti] Spine 설치 에러  (0) 2016.07.27

Stored Procedure ....SP라고도 무르는 것 같은데......

Anyway...장단점에 대해서 정리해 본다.


Stored Procedure 는 Oracle DBA로 재직하면서 끊임없이 나와 마주했던 친구다.

내가 처음부터 끝까지 다 작성한 것은 많지 않지만..문제 발생 시 개발자와 같이 확인하고..Invaild로 상태가 바뀌었는지 체크하고

바뀌었으면 왜 바꼈는지...누가 해당 부분을 수정했는지 확인했다.


그리고 때로는 튜닝 요청관련해서 몇백줄 몇천줄 나의 능력을 뛰어넘는 놈을 이겨볼 꺼라고 아둥바둥 거렸다.


각설하고 MySQL에서는 Stored Procedure 라고 명명 한다.


장점


- DB 보안 향상

  -> 자체적인 보안 설정 기능을 가지고 있으며, Stored program 단위로 실행 권한을 부여할 수 있다.

  -> 세밀한 권한 제어가 가능

  -> SQL 인젝션과 같은 기본적인 보안 사고는 피할 수 있다.

  -> SQL 의 문법적인 취약점을 이용한 해킹이 어렵다


- 기능의 추상화

  ex) 여러 테이블에 걸쳐 유일한 일련번호를 발급하되, 일련번호에 자체적인 헤더 값과 시간 정보를 덧붙여서 생성

  -> 이러한 요구사항을 해결하기 위해서는 단순 Table 시퀀스(auto increment)를 사용하지 못하는데 Stored procedure 이용하면 해결가능


- 네트워크 소요 시간 절감

  -> 하나하나의 쿼리가 아주 가볍고 빠르게 처리될 수 있다면 네트워크를 경유하는 데 걸리는 시간이 문제가 될 수 있음

   (0.01만에 완료되는 쿼리가 0.1초의 네트워크 시간과  동일한 쿼리가 다량의 건수로 진행되는 경우 문제 소지)


- 절차적 기능 구현

  -> SQL 문장에 IF / While 과 같은 제어문장 사용 가능

    ( 어플리케이션 소스코드를 줄여줄 수 있음)


- 개발 업무의 구분

  -> 스토어드 프로그램을 만들어 API 처럼 제공하여 업무 구분


단점


- 낮은 처리 성능

  -> 다른 DBMS에 비해 Stored Procedure 프로그램은 성능이나 최적화가 부족하여 수행 능력이 떨어짐(오라클 pl/sql보다 2배 떨어짐)

  -> 문자열이나 숫자 연산을 위해 사용하기에는 나쁜 선택

  -> 하지만 한 번에 많은 쿼리를 실행해야 할 때 효율적임


- Application 코드의 조각화

 ??????이해가 되지 않기에 패스..


출처 : 개발자와 DBA를 위한 MySQL 서적


- 나의 생각 : 나는 Stored procedure 를 많이 만들지 않았지만 분명 여러가지로 유용한 부분이다.

Oracle로 비유하자면 많은 쿼리들이 Library cache에 등록이 되고 공유가 된다. 이 때 대,소문자 구분 및 바인드변수 미사용 등으로 동일한 쿼리이지만 전혀 다른 쿼리로 인식하여 실행계획이 공유되지 않는 상황이 발생된다. 이말은 즉슨, 동일한 쿼리로 인식하지 않기에 매번 하드파싱이 일어나 조금이라도 부하를 주게 된다. MySQL로 돌아와서 비슷한 것이라고 생각된다. MySQL에서 Stored procedure를 이용하게 되면 많이 사용되는 쿼리일 수록 부하는 줄게 될 것이고 성능적으로 향상될 것이다.

물론, 개발자들이 쿼리 규칙을 잘 지킨다면 걱정없겠지만...그게 아니라면 SP를 사용하는 것이 좋다고 생각든다.


몇주전에 어느 담당자가 SP는 MySQL 에 부하가 되기 때문에 사용을 지양 한다고 했었다.

나는 그 말에 동의 하지 않는다....

SP를 잘 사용한다면 많은 이득을 볼 수 있을 것이라고....


어디까지나 나의 생각일 뿐이다. 허접한...ㅠ

반응형

MySQL 관련하여 추가로 Percona 에서 제공하는 템플릿을 추가 함으로써

다양한 모니터링이 가능하다.


진행가능한 방법은 아래 사이트에서 확인하고 진행하면 된다.

https://www.percona.com/doc/percona-monitoring-plugins/LATEST/zabbix/index.html


yum으로 Install 할 수 있는데...직접 진행해 본 결과 yum으로는 진행이 안되어서 rpm 으로 설치를 직접 진행 하였다.


아래 사이트는 직접 파일을 다운받아 진행할 수 있다.

https://www.percona.com/downloads/percona-monitoring-plugins/LATEST/


Installation Instructions

Configure Zabbix Agent

  1. Install the package from Percona Software Repositories:

    yum install percona-zabbix-templates
    

    or:

    apt-get install percona-zabbix-templates
    

    It will place files under /var/lib/zabbix/percona/. Alternatively, you can grab the tarball and copy folderszabbix/scripts/ and zabbix/templates/ into /var/lib/zabbix/percona/. See below for the URL.

  2. Copy Zabbix Agent config:

    mkdir -p /etc/zabbix_agentd.conf.d/
    cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix_agentd.conf.d/userparameter_percona_mysql.conf
    
  3. Ensure /etc/zabbix_agentd.conf contains the line: Include=/etc/zabbix_agentd.conf.d/

  4. Restart Agent:

    service zabbix-agent restart
    

Configure MySQL connectivity on Agent

On this step we need to configure and verify MySQL connectivity with localhost on the Agent node.

  1. Create .cnf file /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php.cnf as described at configuration file

    Example:

    <?php
    $mysql_user = 'root';
    $mysql_pass = 's3cret';
    
  2. Test the script:

    [root@centos6 main]# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg
    405647
    

    Should return any number. If the password is wrong in .cnf file, you will get something like:

    [root@centos6 ~]# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg
    ERROR: run the command manually to investigate the problem: /usr/bin/php -q /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php --host localhost --items gg
    [root@centos6 ~]# /usr/bin/php -q /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php --host localhost --items gg
    ERROR: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)[root@centos6 ~]#
    
  3. Configure ~zabbix/.my.cnf

    Example:

    [client]
    user = root
    password = s3cret
    
  4. Test the script:

    [root@centos6 ~]# sudo -u zabbix -H /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh running-slave
    0
    

    Should return 0 or 1 but not the “Access denied” error.

Configure Zabbix Server

  1. Grab the latest tarball from the Percona Software Downloads directory to your desktop.
  2. Unpack it to get zabbix/templates/ folder.
  3. Import the XML template using Zabbix UI (Configuration -> Templates -> Import) by additionally choosing “Screens”.
  4. Create/edit hosts by assigning them “Percona Templates” group and linking the template “Percona MySQL Server Template” (Templates tab).

You are done.



위의 내용은 단순히 복사해서 왔다. 이 이상도 이 이하도 아니다.

다만, 3. Configure ~zabbix/.my.cnf 는 사실 zabbix mysql 를 설치했을 때 의미인 것 같다.

그래서 나는 /etc/my.cnf 에 user 와 password 를 작성 후 진행 하였다.


이 후 Test 스크립트를 진행하게 되면 예시와 동일하게 값이 나왔다.



Import 를 진행 후 보는바와 같이 Percona MySQL Server Template 가 뜬 것을 확인할 수 있다.



MySQL 모니터링을 보게 되면 많은 Item 이 추가 된 것도 확인할 수 있다.

다양한 부분에 대해서 모니터링을 진행할 수 있다.


이 이상으로 추가로 Zabbix 관련 모니터링이 있는지 검색해 봐야겠다.



반응형

테스트 중에 나의 주요 목적인 MySQL 모니터링이 제대로 되고 있는지 확인해 보았다.


역시나 Server down.....OTL....

너란 녀석은 정말 힘들구나...


먼저 로그를 보는게 가장 좋다.

zabbix_agentd.log (/var/log/zabbix) 확인을 해 보았다.


여러 에러가 있었지만 이 부분이 가장 화근이었다.



보는 바와 같이 아래 에러를 이해하면 될 듯 싶다.

이미 존재한다고 한다......으응??????????????하아.....존재한다고..먼말이야;;;;

설마 존재하더라도 또 실행해도 되는거 아닌가....ㅠㅠ

이 내용을 빨리 이해했다면 시간을 허비하지 않아도 되었을텐데;;;

 9347:20160718:174922.943 using configuration file: /etc/zabbix/zabbix_agentd.conf

  9347:20160718:174922.973 cannot add user parameter "mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/var/lib/zabbix mysql -uzabbix -pzabbix -N | awk '{print $$2}'": key "mysql.status" already exists



 zabbix_agentd.conf 확인

- 여기서 해결되었다.

- 아래보면 Include 에서 나는 2개 동시를 include 하였다.

그래서 아래와 같이 하나만 실행되도록 하고 나머지는 모두 막았다.



이후 다시 실행 해 봤더니 되었다...(사실 에러가 발생하면 zabbix agent가 실행이 안되는 것을 확인 가능하다)


아래와 같이 MySQL 관련 항목들이 모두 받아 오고 있는 것을 확인 가능하다.




 결론 : 


zabbix_agentd.conf 에서 include를 2번이나 실행하면 안된다.


참고사항: https://www.zabbix.com/forum/showthread.php?t=40870



userparameter_mysql.conf


여기에는 추가적으로 이것저것 설정할 수 있다.

아래는 내가 테스트로 추가하다가 다 주석하고 제대로 된 default는 아니지만 참고 하면 된다.


mysql 또는 mysqladmin 에 문법에 맞춰 user와 패스워드를 작성해 줬다.

그리고 문법은 검색하면 나오지만 아래 사이트 참고하면 좋을 듯 싶다.


참고사항 : http://zabbix.dothome.co.kr/doku.php/manual/appendix/recipes


UserParameter=변수명,문법


인데...문법만 실행하면 해당 결과 값이 리턴되어 나온다.

리턴된 값을 변수에 담게 되고  zabbix 에서 사용하는 것으로 예상된다.

그래서 자신의 문법이 틀렸는지 여부는 바로 서버에서 확인하면 될 듯 싶다.


이 부분에서 에러생기면 또 실행이 안되니 이 점 필히 체크 필요하다.


UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/var/lib/zabbix mysql -uzabbix -pzabbix -N | awk '{print $$2}'

# Flexible parameter to determine database or table size. On the frontend side, use keys like mysql.size[zabbix,history,data].

# Key syntax is mysql.size[<database>,<table>,<type>].

# Database may be a database name or "all". Default is "all".

# Table may be a table name or "all". Default is "all".

# Type may be "data", "index", "free" or "both". Both is a sum of data and index. Default is "both".

# Database is mandatory if a table is specified. Type may be specified always.

# Returns value in bytes.

# 'sum' on data_length or index_length alone needed when we are getting this information for whole database instead of a single table

UserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/var/lib/zabbix mysql -uzabbix -pzabbix -N'

UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin -uzabbix --password=zabbix ping | grep -c alive

UserParameter=mysql.version,mysql -V

#UserParameter=mysql.ping,mysqladmin -uzabbix --password=zabbix ping | grep alive | wc -l | tr -d " "

#UserParameter=mysql.uptime,mysqladmin -uzabbix --password=zabbix status | cut -f2 -d ":" | cut -f1 -d "T" | tr -d " "

#UserParameter=mysql.threads,mysqladmin -uzabbix --password=zabbix status | cut -f3 -d ":" | cut -f1 -d "Q" | tr -d " "

#UserParameter=mysql.questions,mysqladmin -uzabbix --password=zabbix status | cut -f4 -d ":"|cut -f1 -d "S" | tr -d " "

#UserParameter=mysql.slowqueries,mysqladmin -uzabbix --password=zabbix status | cut -f5 -d ":" | cut -f1 -d "O" | tr -d " "

#UserParameter=mysql.qps,mysqladmin -uzabbix --password=zabbix status | cut -f9 -d ":" | tr -d " "

#UserParameter=mysql.version,mysql -V





반응형

Warning: Using a password on the command line interface can be insecure.

출처 : http://xinet.kr/tc/341


확인 필 : http://myblog.opendocs.co.kr/archives/1591


이렇게 해도 난 뜨는것 같은데...ㅠㅠ

다시 해보기로....



Using a password on the command line interface can be insecure

 mysql 5.6 버전으로 올라가면서 패스우드 정보를 쉘 상태에서 입력하게 되면 위와 같이 에러 메세지가 발생된다 
(실제 에러 메세지가 아닌 경고 메세지이다 )

그럼 이 메세지를 나오지 않게 구성하려면 어떻게 해야 하나?

mysql 5.6 버전에 새로 생긴 mysql_config_editor 툴을 이용하여 로그인 파일을 저장해 놓고 해당 파일을 옵션으로 지정하여 사용

1. 파일 생성하기

[root@localhost ~]# /usr/local/mysql/bin/mysql_config_editor set --login-path=xinet --host=localhost --user=xinet --password
Enter password: (암호입력)

2. 암호화 파일 확인
 암호화 파일은 /root 폴더에 존재한다. 파일 이름은 .mylogin.cnf

이 파일은 암호화 되어 있어서 그냥은 볼수 없다 

그러면 등록된 user가 어느 유저인지 확인하는 명령어가 따로 있다

[root@localhost ~]# /usr/local/mysql/bin/mysql_config_editor print --all
[xinet]
user = xinet
password = *****
host = localhost


3. 접속하기

[root@localhost ~]# /usr/local/mysql/bin/mysql --login-path=/xinet -e "\s"
--------------
/usr/local/mysql/bin/mysql  Ver 14.14 Distrib 5.6.22, for Linux (x86_64) using  EditLine wrapper
Connection id:          1004
Current database:
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.6.22-log Source distribution
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /tmp/mysql.sock
Uptime:                 1 hour 38 min 28 sec
Threads: 125  Questions: 2906400  Slow queries: 0  Opens: 1532  Flush tables: 1  Open tables: 112  Queries per second avg: 491.943


이렇게 확인할수 있다 

4. 로그인 정보 특정 유저 삭제하기

[root@localhost ~]# /usr/local/mysql/bin/mysql_config_editor remove --login-path=xinet


이제 응용해서 만들어보면 되겠다. 


반응형

아는만큼 보인다고..

나는 서버만 구성완료 하고 정작 제대로 되는지를 알지 못해서

뻘짓을 하고 있었다.


Zabbix 모니터링 중 Last 20 issues 에서 Zabbix agent on Zabbix server is unreachable for 5 minutes 라는 문구가 떠 있는것을 확인 하였다.


하지만 난 단순히 Zabbix server is running 이라고 되어 있어서 운용이 되는 줄 알았다.


전혀 Agent 와 통신을 못하고 있었던 것이다.


만약 Zabbix 서버가 다른곳에 있었으며, 해당 서버와 현재 Agent 와 통신을 하는 것이었다면 오히려 운용이 되었을 수 있다.

하지만 그게 아니었기에 내 서버는 지금 모니터링이 안되고 있었던 것이다.


이 말이 무엇이냐하면...


우리가 Agent 를 설치한 후 vi /etc/zabbix/zabbix_agentd.conf 를 수정하게 된다.


여기서 Server 부분을 수정하게 된다.



나는 현재 127.0.0.1 로 자신을 바라보게 되어 있다.

(만약 Zabbix Server와 Agent가 다른곳에 되어 있다면..대부분 다 그렇겠지만...해당 Zabbix Server IP를 작성하게 된다)


이후, zabbix 웹페이지에서 추가 수정 시 맞춰서 작성해 줘야 한다.



이 부분은 어디까지나 내가 테스트한 환경에 의한 것이고,

수정이 필요한 부분이다.


이 부분을 해결하고 나면 어떠한 에러도 나지 않을 것이다.


반응형

Zabbix 설치 중에 yum으로 install 에서 에러가 발생하는 경우가 있다.


첫번째 실패 후 기존 테섭이 아닌 신규 서버에 설치를 해서 Zabbix 를 설치 하였다.


이 후, 3버전에 설치하기 위해서 기존 테섭에 설치를 진행을 시도 중 동일한 에러를 찾았고

이번에는 너무 쉽게 해결했다...(기존에는 3시간 넘게 찾다가 포기했는데...ㅠ 오늘은 10분만에 해결..ㅠ)


먼저 사이트 공유

https://www.zabbix.com/forum/archive/index.php/t-41058.html



 yum install zabbix-server-mysql zabbix-web-mysql


여기서 첫번째 설치는 넘어간다.

하지만 두번째 zabbix-web-mysql 에서 에러가 생긴다.


...
---> Package net-snmp.x86_64 1:5.3.2.2-25.el5_11 set to be updated
--> Processing Dependency: libsensors.so.3()(64bit) for package: net-snmp
---> Package php-common.x86_64 0:5.1.6-45.el5_11 set to be updated
---> Package php-pdo.x86_64 0:5.1.6-45.el5_11 set to be updated
---> Package php53.x86_64 0:5.3.3-26.el5_11 set to be updated
--> Processing Dependency: php53-cli = 5.3.3-26.el5_11 for package: php53
--> Processing Dependency: php53-common = 5.3.3-26.el5_11 for package: php53
---> Package php53-bcmath.x86_64 0:5.3.3-26.el5_11 set to be updated
---> Package php53-gd.x86_64 0:5.3.3-26.el5_11 set to be updated
---> Package php53-mbstring.x86_64 0:5.3.3-26.el5_11 set to be updated
---> Package php53-xml.x86_64 0:5.3.3-26.el5_11 set to be updated
---> Package unixODBC.x86_64 0:2.2.11-10.el5 set to be updated
---> Package zabbix.x86_64 0:2.2.13-1.el5 set to be updated
--> Running transaction check
---> Package lm_sensors.x86_64 0:2.10.7-9.el5 set to be updated
---> Package php53-cli.x86_64 0:5.3.3-26.el5_11 set to be updated
---> Package php53-common.x86_64 0:5.3.3-26.el5_11 set to be updated
--> Processing Conflict: php53-common conflicts php-common
--> Finished Dependency Resolution
php53-common-5.3.3-26.el5_11.x86_64 from updates has depsolving problems
  --> php53-common conflicts with php-common
Error: php53-common conflicts with php-common
 You could try using --skip-broken to work around the problem
 You could try running: package-cleanup --problems
                        package-cleanup --dupes
                        rpm -Va --nofiles --nodigest
The program package-cleanup is found in the yum-utils package.
....


여러 뻘짓을 다했지만 아래와 같이 진행하면 끝!!


[root@devDB:/root]#  yum remove php php-common php-cli

Loaded plugins: fastestmirror

Setting up Remove Process

No Match for argument: php

Loading mirror speeds from cached hostfile

 * base: ftp.kaist.ac.kr

 * extras: ftp.kaist.ac.kr

 * updates: ftp.kaist.ac.kr

Package(s) php available, but not installed.

No Match for argument: php-common

Package(s) php-common available, but not installed.

No Match for argument: php-cli

Package(s) php-cli available, but not installed.

No Packages marked for removal

[root@devDB:/root]#

[root@devDB:/root]#

[root@devDB:/root]# yum install php53

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

 * base: ftp.kaist.ac.kr

 * extras: ftp.kaist.ac.kr

 * updates: ftp.kaist.ac.kr

Setting up Install Process

Resolving Dependencies

--> Running transaction check

---> Package php53.x86_64 0:5.3.3-26.el5_11 set to be updated

--> Processing Dependency: php53-cli = 5.3.3-26.el5_11 for package: php53

--> Processing Dependency: httpd-mmn = 20051115 for package: php53

--> Processing Dependency: php53-common = 5.3.3-26.el5_11 for package: php53

--> Processing Dependency: httpd for package: php53

--> Running transaction check

---> Package httpd.x86_64 0:2.2.3-91.el5.centos set to be updated

---> Package php53-cli.x86_64 0:5.3.3-26.el5_11 set to be updated

---> Package php53-common.x86_64 0:5.3.3-26.el5_11 set to be updated

--> Finished Dependency Resolution

....


지우고 다시 설치다....하지만 난 저것도 해봤는데 안되었을까....


어쨋든 해결했다.ㅠ


반응형

난 CentOS 6.6 에 설치를 진행 하였다.


또한 어쩌다가 보니 Zabbix 2.2 로 설치를 진행하였다.(의도한 것은 아니다;;;;;)


설치 페이지는 잘 나와 있으며 의외로 심플하다.


아래 사이트를 참고하면 정말 쉽게 설치 할 수 있을 것이다.

https://www.zabbix.com/documentation/2.2/manual/installation/install_from_packages


또한 설치 전에 MySQL이 설치되어 있어야 하며, Script 를 제대로 보진 않았지만, MySQL 5버전 이상을 설치가 되어 있어야 한다.

테스트 서버는 3버전이 설치되어 있는데...문법에서 여러에러가 생기는 것을 확인하였다.


한번 3버전에 설치를 다시 진행해 볼 예정이다.


어쨋든 위의 사이트를 참고하는 것이 어떤 블로그를 보는것보다 쉬울것으로 예상된다.

반응형

+ Recent posts