mysql 리플리케이션 설정은 어렵지 않군.
장애대응이 어려운것 같다.

# 기본 mysql replication 설정.(마스터-슬레이브)
1. mysql config 설정
  master , slave 각각 config 파일에 replication 설정을 해준다.
  우분투의 경우  /etc/mysql/conf.d 에 replication_slave.cnf (파일명은 임의로 )
  /etc/mysql/my.cnf 의 마지막줄에 이렇게 되어 있어서 불러오게 된다
!includedir  /etc/mysql/conf.d/
 my.cnf 의 [mysqld] 탭에 직접추가해줘도 된다.

내용은 이런식이다. (슬레이브쪽)
[mysqld]
server-id               = 2
master-host             = master
master-user             = replication
master-password     = slave
replicate-do-db         = master_db
replicate-do-db         = other_db
마스터쪽은 다음과 같다.
[mysqld]
server-id               = 1
log_bin                 = /var/log/mysql/mysql-bin.log
binlog_do_db            = master_db
binlog_do_db            = other_db
binlog_ignore_db        = mysql
binlog_ignore_db        = information_schema
설정만 보면 이해할 수 있을 것이다.
binlog_do_db 등을 각자의 서버설정에 맞게 바꾸어 주면 된다.

2. replication 접근 권한설정
 replication 은 slave 쪽에서 master 의 자료(bin_log)를 참조해서 데이터를 가져가는 것이다.
 그래서 슬레이브쪽에서 마스터에 접근할 수 있어야 한다.

 그 명령은 다음과 같다.(마스터쪽에서 mysql 명령을 내려준다)
mysql> grant replication slave on *.* to 'replication'@192.168.0.1 identified by 'slave';
진한부분이 conf 에서 설정한 master-user / master-host / master-password 에 해당한다.
IP 주소대신 /etc/hosts 에 설정한 호스트명을 적어줘도 된다. ( master-host = master  같은..)

3. 사용 및 장애대응
작동 중지/실행
start slave ;
stop slave ;
슬레이브 상태 보기
mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: master
                  Master_User: replication
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000018
          Read_Master_Log_Pos: 958292
               Relay_Log_File: slave-relay-bin.000271
                Relay_Log_Pos: 251
        Relay_Master_Log_File: mysql-bin.000018
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: master_db
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 958292
              Relay_Log_Space: 556
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
1 row in set (0.00 sec)
마스터의 상태를 보려면
mysql> show master status\G
*************************** 1. row ***************************
            File: mysql-bin.000018
        Position: 958292
    Binlog_Do_DB: master_db
Binlog_Ignore_DB: mysql
1 row in set (0.00 sec)
진하게 표시한 position 이 일치하는지 확인하면 된다.

slave 의 position 값이 일치하지 않는경우.
다음처럼 해준다.
mysql > stop slave;
mysql > reset slave;
mysql > start slave;
cron 등으로 주기적으로 확인해주도록 한다.




다음에는  master-master 설정 과 mysql proxy

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
2012-09-24
epel 패키지 주소가 바뀌었다.(언제인지 모르겠지만) - 기존 주소가 사라진듯.
rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
(날짜를 보니 바뀌었다기 보다. 아래 주소가 사라진듯)


2011년 12월 19일
remi 패키지를 이용하는 방법

http://www.if-not-true-then-false.com/2011/install-nginx-php-fpm-on-fedora-centos-red-hat-rhel/

Centos 5 를 기준으로 설명(다른 버전은 위 링크를 참조)

## Remi Dependency on CentOS 5 and Red Hat (RHEL) 5 ##
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
 
## CentOS 5 and Red Hat (RHEL) 5 ##
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
Epel 과 remi  저장소를 이용한다.

nginx 는 nginx.org 에서 패키지를 제공하는 것 같다.
다음처럼 nginx.org 쪽으로 저장소 지정 (/etc/yum.repos.d/nginx.repo )
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

nginx , php-fpm 그외 php 모듈등을 설치한다.
yum --enablerepo=remi install  nginx php-fpm php-mysql php-gd php php-pear
php-mysql 때문에 mysql-libs 가 설치되는데, mysql 5.5.19 버전에 의존성이 있다.
기존 centos5 는 5.0.77 이다. 기본패키지를 쓰면서, remi 패키지를 사용하는 방법이 있을 듯 한데.
그냥 mysql 5.5.19 로 설치했다.
yum --enablerepo=remi install mysql mysql-server
의존성 에러가 발생하면 재설치 해주면 된다.
데이터가 없다면 /var/lib/mysql 을 삭제하고 설치해주는 것이 좋다.




[그냥 잡다한 정리]
핵심은 centos 에서 epel,ius repository 를 등록하고, php53u-fpm , php53u-pecl-apc 를 설치한다.
그외 추가 패키지는 알아서 설치 - php53u-mysql 같은...
상세한 설명은 생략.


nginx 를 설치하는 방법. 컴파일, 패키지


# 새 방법  ius 의 패키지 사용법 - 현 작동중지



# 컴파일
최신 버전에 좋다.
http://blog.sor.co.kr/32
  spawn-fcgi
http://starforum.kr/336
http://interfacelab.com/nginx-php-fpm-apc-awesome/

http://adityo.blog.binusian.org/?p=428

# php 를 사용하는 방법
spawn-fcgi 예전방식 - 컴파일이 필요없다. 간단함.
최근은 php-fpm 방식 - php 최신버전은 컴파일 필요없음. 그외에는 컴파일 필요.


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
sysmon 이 공식지원하는 버전은 python 2.4 인 것 같다.
그런데, 2.5 까지도 무난하게 동작하는 듯 하다.

ubuntu 10.04 LTS 버전을 사용하는데, 깔려 있는 버전이 python 2.6 이다.
처음에 동작을 안하기에 python 2.5 로 다운그레이드해서 시도했는데, 문제가 더 커졌다.
그래서 그냥 2.6 에서 동작하도록 sysmon 소스를 수정하기로 했다.

설치후에 CheckDaemon , SysmonDaemon , SysmonAgent 를 마스터와 각 호스트에서 동작시키는 부분에서 각 소스를 조금수정하면 된다.(처음에는 많을 줄 알았는데, 그리 많지 않다.)
세개의 파일만 고치면 된다.

./SysmonDaemon 을 실해시켰을때,
DeprecationWarning: the sets module is deprecated
이런 메세지가 나온다.
22번줄정도에
from sets import Set
이 부분을
try:
    set
except NameError:
    from sets import Set as set
으로 바꿔준다.  그리고, "Set(" 으로 검색해서 소문자 "set(" 으로 바꿔준다. (2군데 정도 나온다.)

그리고 세 파일에 공통적용되는 부분. centos 에서는 정상작동할 것이니 패스.
pgrep 으로 검색해보면  pgrep -l -f 'python.*SysmonDaemon'  같은 부분이 나온다.
(몇군데 있으니 모두 바꿔준다. 각 파일마다 1,2개정도)
저 항목이 해당프로세스의 PID 만 나와야 하는데, 우분투에서는
12178 python SysmonDaemon
이런식으로 프로세스명도 같이 나온다. -x 옵션을 넣어준다.



이걸로 끝이다. 그 부분만 고치면 python 2.6 에서도 무리없이 동작한다.


ps. sysmon 이 네이버오픈소스로 공개하고나서 업데이트를 별로 안한다.
  네이버 내부에서는 많이 개선이 되었을 듯 한데...(아닌가?)

sysmon 을 보다보니, 같이 공개한 dist 도 같이 사용하는게 편하다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
추가: python 2.5 로 다운그레이드해서 쓰니 다른문제들이 더 많다.
  python 2.6 에서 작동하도록 수정하는 것이 더 쉽다.
  python 2.6 에서 sysmon 사용하는 것은 따로 포스팅 예정.


sysmon 으로 서버모니터링을 해볼까 테스트하는데.
ubuntu 10.04 에서 python 2.6 이 깔려있는데, sysmon 이 오류를 뿜어낸다.
2.5 로 다운그레이드를 해야 겠다.

이미 시도한 분들이 있다.
http://yoophi.sshel.com/wp/?p=164
http://kovshenin.com/archives/installing-python-2-5-on-ubuntu-linux-10-10/

$ sudo add-apt-repository ppa:fkrull/deadsnakes
$ sudo apt-get update
$ sudo apt-get install python2.5
add-apt-repository 명령이 없다면, 아래 명령으로 패키지를 설치해주면된다.
sudo apt-get install python-software-properties


launchpad 의 패키지를 사용하는 방법.
첫줄을 수동으로 할려면 /etc/apt/sources.list 에 다음줄을 넣어준다.
deb http://ppa.launchpad.net/fkrull/deadsnakes/ubuntu lucid main
deb-src http://ppa.launchpad.net/fkrull/deadsnakes/ubuntu lucid main

sysmon 이 잘 작동해야 할텐데. 근데, sysmon 설명이 참 부실하다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
웹카메라를 가지고 놀다 보니. 어떤 캠에서는 LED 가 계속 켜져 있는 상태가 되기도 한다. 볼륨조절하듯 조절가능한 것도 있기는 한데, 안되는 황당한 놈들이 있다.

생각으로는 usb port 별로 전원컨트롤 할 수 있는 방법이 있지 않을까 찾아보았다.
비슷한 것들이 있기는 한데, 완전히 차단시키지는 못하는 듯 하다.
root@ubuntu:/sys/bus/usb# lsusb
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 0ac8:3332 Z-Star Microelectronics Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
root@ubuntu:/sys/bus/usb# echo suspend > devices/2-2/power/level
root@ubuntu:/sys/bus/usb# lsusb
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
root@ubuntu:/sys/bus/usb# echo on > devices/2-2/power/level
root@ubuntu:/sys/bus/usb# lsusb
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 0ac8:3332 Z-Star Microelectronics Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
root@ubuntu:/sys/bus/usb#
위와 같이
echo suspend > /sys/bus/usb/devices/{device usb port}/power/level

처럼 값을 주면 usb 장치가 사라졌다 on 하면 다시 보인다.
 
그런데, 그것이 완전히 전원을 차단하는 것은 아니다. 작동상태정도만 조절하는 듯 하다.(메인 보드 마다 다를 수 있을지는 모르겠다)

또 다른 방법도 있다고 하는데.
echo "0" > /sys/bus/usb/devices/{device usb port}/power/state
다음과 같은 에러가 난다.
bash: devices/2-2/power/state: No such file or directory
가상장치같은 개념이라 없는 파일(state)을 만들 수는 없나 보다.


망할LED 계속 켜져있는 웹캠은 쓰지 말아야 겠다. 다른곳에서나 써야겠다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,