운영체제 : 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‘);
?>