[MYSQL]multiple instances(mysqld_multi)

Database 2016.11.08 11:50 Posted by 애플자라

mysqld_multi: How to run multiple instances of MySQL

 

---------------------------------------------------------------- 각각 다른 폴더 반복

 

cp -R mysql-5.7.15-linux-glibc2.5-x86_64 /data1/mysql1
mkdir -p /data1/mysql1/mysqldatafile
chown -R mysql:mysql /data1
chmod -R 755 /data1
cd /data1/mysql1/bin
./mysqld_safe --defaults-file=/data1/mysql1/my.cnf --user=mysql  &

 

vi /data1/mysql1/mysqldatafile/mysql1d.log root / 임시비밀번호 확인

 

2016-11-12T04:50:43.419736Z 1 [Note] A temporary password is generated for root@localhost: EGv1IiXh%D:I
2016-11-12T04:51:13.932957Z mysqld_safe The file /usr/local/mysql/bin/mysqld

 

/data1/mysql1/bin/mysql -uroot -p --socket=/tmp/mysql1-3306.sock / DB로그인확인

 

 

1. mysql 인스턴스 확인(/data1/mysql1, /data2/mysql2, /data3/mysql3)
[root@ ~]# ps aux | grep mysqld
root       701  0.0  0.0 107464   956 pts/4    S+   08:46   0:00 grep mysqld
root      4666  0.0  0.0 108332     8 ?        S    Nov12   0:00 /bin/sh /data2/mysql2/bin/mysqld_safe --datadir=/data2/mysql2/mysqldatafile --pid-file=/tmp/mysql2d.pid
mysql     4961  0.7  0.0 1514676 35352 ?       Sl   Nov12  16:45 /data2/mysql2/bin/mysqld --basedir=/data2/mysql2 --datadir=/data2/mysql2/mysqldatafile --plugin-dir=/data2/mysql2/lib/plugin --user=mysql --log-error=/data2/mysql2/mysqldatafile/mysql2d.log --pid-file=/tmp/mysql2d.pid --socket=/tmp/mysql2-3307.sock --port=3307
root      5011  0.0  0.0 108332     8 ?        S    Nov12   0:00 /bin/sh /data3/mysql3/bin/mysqld_safe --datadir=/data3/mysql3/mysqldatafile --pid-file=/tmp/mysql3d.pid
mysql     5306  0.5  0.0 1514676 31400 ?       Sl   Nov12  13:17 /data3/mysql3/bin/mysqld --basedir=/data3/mysql3 --datadir=/data3/mysql3/mysqldatafile --plugin-dir=/data3/mysql3/lib/plugin --user=mysql --log-error=/data3/mysql3/mysqldatafile/mysql3d.log --pid-file=/tmp/mysql3d.pid --socket=/tmp/mysql3-3308.sock --port=3308
mysql     7000  0.2  0.0 1990460 252416 pts/1  Sl   Nov13   3:58 /data1/mysql1/bin/mysqld --basedir=/data1/mysql1 --datadir=/data1/mysql1/mysqldatafile --plugin-dir=/data1/mysql1/lib/plugin --user=mysql --log-error=/data1/mysql1/mysqldatafile/mysql1d.log --pid-file=/tmp/mysql1d.pid --socket=/tmp/mysql1-3306.sock --port=3306
root     14993  0.0  0.0 106372  1144 pts/1    S    Nov12   0:00 /bin/sh /data1/mysql1/bin/mysqld_safe --datadir=/data1/mysql1/mysqldatafile --pid-file=/tmp/mysql1d.pid

 

2. SSH 통한 접속방법
/data1/mysql1/bin/mysql -uroot -p --socket=/tmp/mysql1-3306.sock
/data2/mysql2/bin/mysql -uroot -p --socket=/tmp/mysql2-3307.sock
/data3/mysql3/bin/mysql -uroot -p --socket=/tmp/mysql3-3308.sock

 

3. 서비스 확인
[root@ ~]# netstat -nlp |grep mysql
tcp        0      0 :::3306                     :::*                        LISTEN      7000/mysqld        
tcp        0      0 :::3307                     :::*                        LISTEN      4961/mysqld        
tcp        0      0 :::3308                     :::*                        LISTEN      5306/mysqld        
unix  2      [ ACC ]     STREAM     LISTENING     88841  7000/mysqld         /tmp/mysql1-3306.sock
unix  2      [ ACC ]     STREAM     LISTENING     22892  4961/mysqld         /tmp/mysql2-3307.sock
unix  2      [ ACC ]     STREAM     LISTENING     23167  5306/mysqld         /tmp/mysql3-3308.sock

 

4. 엔진구동방법
1) 서비스 등록

[MYSQL_HOME]/support-files/mysql.server

cp mysql.server /etc/init.d/mysqld1

 

2) 서비스 시작/정지
/etc/init.d/service mysqld1 start/stop
/etc/init.d/service mysqld2 start/stop
/etc/init.d/service mysqld3 start/stop

 

---------------------------------------------------------------------------

 

http://xinet.kr/?p=978 - 5.7설치

 

http://dev.mysql.com/doc/refman/5.7/en/mysqld-multi.html

 

https://www.percona.com/blog/2014/08/26/mysqld_multi-how-to-run-multiple-instances-of-mysql/


https://docs.xtremecenter.co.kr/pages/viewpage.action?pageId=9340206




 

---------------------------------------------------------------------------

 

[Linux_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]


 

'Database' 카테고리의 다른 글

[MYSQL]사용자 계정생성  (0) 2016.11.11
[MYSQL]패스워드 변경  (0) 2016.11.11
[MYSQL]multiple instances(mysqld_multi)  (0) 2016.11.08
[MYSQL]ROWNUM  (0) 2016.10.21
[MYSQL]Fabric 설치 및 HA 구성  (0) 2016.10.17
[ORACLE]ORU-10027: buffer overflow  (0) 2016.10.10

댓글을 달아 주세요