강좌

HOME > 강좌 >
강좌| 리눅스 및 오픈소스에 관련된 강좌를 보실 수 있습니다.
 
mysql 다중 서버 관리
조회 : 6,926  


mysql 다중 서버 관리


            운영체제 : Linux, Unix, Windows 등
            홈페이지 : www.mysql.com
            라이센스 : 상업용, GPL

               소속 : 리눅스포털(주)수퍼유저코리아
               제작자 : 이재석


1. mysql 다중 서버란 ?
   
    mysqld를 소켓과 포트 데이터베이스를 달리하여
    여러개의 MySQL 서버를 구동하는 것을 말한다.

    myqld_safe를 이용하는 방법과 mysql_multi를 이용하는
    두가지 방법이 있다.

    하지만 mysqld_safe를 이용하는 것은 번거로은 면이 많아
    실행시 주의를 요한다.


2. mysql 다중서버운영시 장단점
   
    - 장애시 전체 디비서버에 영향을 미치지 않는다.
    - 각 디비서버별 root사용자를 지정할 수 있다.
    - 서로 상이한 설정의 디비서버를 같은 장비에서 운영가능하다.
    - 하나의 mysqld로 서비스가 포화 상태인 경우

   
3. myqld_safe를 이용하는방법
   
    추가로 컴파일할 필요없이 기존에 사용하는 mysqlDB를 그대로
    이용가능하다.

        [첫번째 mysqld의 설정파일]
        [client]
        port        = 3306
        socket = "/tmp/mysql.sock"

        [mysqld]
        port        = 3306
        socket = "/tmp/mysql.sock"

        [두번째 mysqld의 설정파일]
        [client]
        port        = 3307
        socket = "/tmp/mysql2.sock"

        [mysqld]
        port        = 3307
        socket = "/tmp/mysql2.sock"
   

        [첫번째 mysqld 실행]
        # mysqld_safe --defaults-file=/etc/my.cnf &

        [두번째 mysqld 실행]
        # mysqld_safe
            --defaults-file=/etc/my1.cnf
            --pid-file=/usr/local/mysql/data/hostname.pid1
              --socket=/tmp/mysql.sock1
              --skip-network &

        [첫번째 mysqld 접속 방법]
        mysql -u [username] -p [databasename]   
       
        [두번째 mysqld 접속 방법]   
        mysql -u [username] -p -S [/path/to] [databasename]

4. mysql_multi를 이용하는방법
    [설정 방법]
    [client]
    (생략)...

    [mysql]
    (생략)...

    [mysqld]
    default-character-set = euc_kr
    skip-name-resolve
    skip-network    ## only localhost access
    datadir        = /usr/local/mysql/data
    language    = /usr/local/mysql/share/mysql/english
    user        = mysql
    (생략)...

    [mysqld_multi]
    mysqld        = /usr/local/mysql/bin/safe_mysqld
    mysqladmin    = /usr/local/mysql/bin/mysqladmin
    #user        = root
   
    [mysqld1]
    socket        = /tmp/mysql.sock1
    port        = 3307
    datadir        = /usr/local/mysql/data1
    pid-file        = /usr/local/mysql/data1/mysqld1.pid
    log        = /usr/local/mysql/data1/mysqld1.log

    [mysqld2]
    socket        = /tmp/mysql.sock2
    port        = 3308
    datadir        = /usr/local/mysql/data2
    pid-file        = /usr/local/mysql/data2/mysqld2.pid
    log        = /usr/local/mysql/data2/mysqld2.log

    [myisamchk]
    (생략)...

    [mysqladmin]
    (생략)...

    [mysqldump]
    (생략)...

    [실행방법]
    mysql_multi 사용법
    mysql_multi [OPTIONS] {start|stop|report} [GRN,GRN...]

    전체 MySQL 서버실행시
    mysqld_multi start

    특정 MySQL 서버 실행시
    mysqld_multi start 1

    [다중서버 관리자 추가 하기]
    #mysql -u root -S /tmp/mysql.sock -proot_password -e
          "GRANT SHUTDOWN ON *.* TO multi_admin@localhost
          IDENTIFIED BY 'multipass'"

    위와 같이 멀티서버 어드민을 지정하여 사용가능하나 root를 사용하면 됨으로
    필수 사항은 아니다.

   
    [첫번째 mysqld 접속 방법]
    mysql -u [username] -p -S [/path/to] [databasename]   
       
    [두번째 mysqld 접속 방법]   
    mysql -u [username] -p -S [/path/to] [databasename]
   

5. php에서 세팅방법
   
    아파치 설정파일에서 서정해주거나 php에서 설정하여 사용가능하다.

    [아파치 설정파일에 설정 할 경우]
    vi httpd.conf
    ...
    <VirtualHost xxxx>
        ...
      php_value mysql.default_socket "/tmp/mysql.sock1"
    </VirtualHost>

    <VirtualHost xxxx>
        ...
        php_value mysql.default_socket "/tmp/mysql.sock2"
    </VirtualHost>


    [php에서 사용하기]
    <?php
          ini_set('mysql.default_socket',‘/tmp/mysql.sock1‘);
    ?>

[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1492


이 글을 트위터로 보내기 이 글을 페이스북으로 보내기 이 글을 미투데이로 보내기

 
이재석
본명 : 이재석
e-mail : locli앳superuser.co.kr
소속 : (주)수퍼유저코리아