2009년 9월 17일 목요일

mysql 다중 서버 관리

리눅스포털


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
...

...
php_value mysql.default_socket "/tmp/mysql.sock1"



...
php_value mysql.default_socket "/tmp/mysql.sock2"

댓글 없음:

댓글 쓰기