일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- db
- Design Patterns
- java
- IntelliJ
- AWS
- ubuntu
- elasticsearch
- Git
- tool
- Spring
- 요리
- Spring Batch
- Spring Boot
- php
- devops
- linux
- jenkins
- Gradle
- 맛집
- jsp
- JVM
- redis
- ReactJS
- springboot
- MySQL
- javascript
- it
- Oracle
- Web Server
- laravel
- Today
- Total
아무거나
SQLRelay 설치(커넥션풀링 라이브러리) 본문
[PHP] SQLRelay 설치(커넥션풀링 라이브러리)
* 작업권한은 root
* 다운로드 사이트
- rudiments : http://sourceforge.net/projects/rudiments/ // 1.0.5 사용했음
- sqlrelay : http://sourceforge.net/projects/sqlrelay/ // 1.1.0 사용했음(여기에 rudiments까지 포함되어 있음)
1. rudiments 설치(sqlrelay 를 사용하기 위한 C 라이브러리라고 생각하면 된다.)
- tar xvfz rudiments-1.0.5.tar.gz
- cd rudiments-1.0.5
- ./configure
- make
- make install
- /usr/local/firstworks 에 설치됨..
2. sqlrelay 설치
- tar xvfz sqlrelay-1.1.0.tar.gz
- cd sqlrelay-1.1.0
- ./configure --enable-small-code --enable-mysql-rpath --enable-php-rpath --with-php-ext-dir=/usr/lib/php5/20121212
- make
- make install
- configure 중 --with-php-ext-dir 옵션이 필요한 이유는 sqlrelay 가 PHP의 확장모듈 형태로 설치하기 때문이다.
- make install 후 php확장 모듈 dir 를 살펴보면 sql_relay.so 라는 모듈이 만들어진걸 확인할수 있다
3. sqlrelay 설정 및 시작
- cd /usr/local/firstworks/
- vi etc/sqlrelay.conf 저장
=====================================================================================================
<?xml version="1.0"?>
<!DOCTYPE instances SYSTEM "sqlrelay.dtd">
<instances>
<instance id="mysqlrelay" port="9000" socket="/tmp/mysql_relay.socket" dbase="mysql" connections="3" maxconnections="5" maxqueuelength="0" growby="1" ttl="60" endofsession="commit" sessiontimeout="600" runasuser="nobody" runasgroup="nobody" cursors="5" authtier="listener" handoff="pass">
<users>
<user user="mysqlrelay" password="mysqlrelaypass"/>
</users>
<connections>
<connection connectionid="mysqlrelay" string="host:localhost;user=MysqlUser;password=MysqlUserPass;db=MysqlDB;port=3306;socket=/home/tmp/mysql.sock" metric="1"/>
</connections>
</instance>
</instances>
=====================================================================================================
- sqlrelay.conf 설정화일 설명
instance id="mysqlrelay" 는 mysqlrelay 라는 id 로 sqlrelay로 접속하는것을 의미한다.
port="9000" 은 mysqlrelay 가 실행되는 port 이며 php에서 접속시에 이용된다.
socket="/tmp/mysql_relay.socket" 은 sqlrelay 의 socket 위치이다.
dbase="mysql" 는 DB명을 의미하며 사용할수 있는 DB는 sqlrelay.dtd 에 정의되어 있다
connections="3" 은 초기 연결갯수를 의미하며 sqlrelay 를 실행시키면 프로세서가 3개가 실행된다는걸의미
maxconnections="5" 는 최대 연결갯수를 의미한다.
user="mysqlrelay" 는 php가 sqlrelay 에접속할 userid를 의미한다.
password="mysqlrelaypass"는 php가 sqlrelay 에 접속할 userid 의 패스워드를 의미한다.
string="host:localhost;user=MysqlUser;password=MysqlUserPass;db=MysqlDB;port=3306;socket=/home/tmp/mysql.sock"
string 부분은 sqlrelay 가 mysql 에 접속하는 환경을 설정하는곳이다.
개인별로 환경이 다르기때문에 이부분에 주의 하기 바란다.
처음에 어려웠던 부분이 instance 와 connection 의 차이를 몰라 한참을 1시간동안 삽질을 했었다.
알고 보면 아무것도 아니겠지만 ... TT
sqlrelay.conf 화일에 mysql 접속관련 패스가 있으므로 chmod 로 권한을 조정하는걸 잊지말자..
위에서언급한 것 외에도 여러가지가 있지만 정확히 무엇을 의미하는지는 아직 잘모르겠다
하단에 언급한 html 문서를 보면서 앞으로 참고를 해야할 부분이다.
- vi ~/.bash_profile ( /etc/profile로 수정했음 )
PATH=$PATH:$HOME/bin:/usr/local/firstworks/bin 를 이와같이 수정한다.
- php.ini 화일 하단에 "extension = sql_relay.so" 를 추가한후 저장한다 ( /etc/php5/apache2/php.ini )
- sqlr-start -id mysqlrelay <== mysqlrelay instance id 를 실행시킨다. 참고로 instance id는 설정화일에서
여러개를 만들수 있다. sqlrely를 죽이려면 # sqlr-stop -id mysqlrelay 하면된다. # sqlr-stop 을 실행하면
여러개의 instance id 를 모두 죽이는 것이다. ( PATH변수를 설정안할시 /usr/local/firstworks/bin 경로에서 실행 )
- /usr/local/apache/bin/apachectl restart <== 아파치 재시작
이제 환경은 모두 구축된것이다.
4. 테스트 코드
//dl("sql_relay.so");
$con = sqlrcon_alloc("localhost", 9000, "", "mysqlrelay", "mysqlrelaypass", 0, 1);
$cur = sqlrcur_alloc($con);
if(!sqlrcur_sendQuery($cur, "select * from test_t1")) {
echo sqlrcur_errorMessage($cur);
echo "\n";
}
sqlrcon_endSession($con);
for($row=0; $row<sqlrcur_rowCount($cur); $row++) {
for($col=0; $col<sqlrcur_colCount($cur); $col++) {
echo sqlrcur_getField($cur,$row,$col);
echo ",";
}
echo "\n";
}
sqlrcur_free($cur);
sqlrcon_free($con);
5. 다른예제
설치 #
#rudiments
cd rudiments-0.26.3
./configure
make
make install
#sqlrelay
./configure --help
./configure --enable-small-code --enable-mysql-rpath --enable-php-rpath
make
make install
* /usr/local/firstworks/etc/sqlrelay.conf
* metric => 접속횟수 : 2를 지정하면 2번의 연결을 한후 다음서버에 연결 연결을 넘긴다.
* connections 은 서버댓수의 배수를 지정해야 한다. 꼭 배수를 지정하지 않아도 되지만, 그래도 서버댓수보다 많아야 한다.
<?xml version="1.0"?>
<!DOCTYPE instances SYSTEM "sqlrelay.dtd">
<instances>
<instance id="cluster" port="9000" socket="/tmp/mysqlcluster.socket" dbase="mysql" connections="2" maxconnections="60" maxqueuelength="65535" growby="1" ttl="60" endofsession="commit" sessiontimeout="600" runasuser="nobody" runasgroup="nobody" cursors="5" authtier="listener" handoff="pass" deniedips="" allowedips="" debug="none">
<users>
<user user="cluster" password="cluster"/>
</users>
<connections>
<connection connectionid="db2" string="user=cluster;password=cluster;db=test;host=xxx.xxx.xxx.xxx" metric="1"/>
<connection connectionid="db1" string="user=xxx;password=xxx;db=test;host=localhost" metric="1"/>
</connections>
</instance>
</instances>
# start
/usr/bin/firstworks/bin/sqlr-start -id cluster
# stop
/usr/bin/firstworks/bin/sqlr-stop cluster
'PHP > PHP' 카테고리의 다른 글
클로저(clouser) (1) | 2019.04.03 |
---|---|
PHP7 기준 빈 객체 생성 방법 (0) | 2019.04.02 |
trait (0) | 2019.04.02 |
php curl 옵션 (0) | 2019.04.01 |
exif 모듈 사용(회전된 이미지 복구 방법) (0) | 2019.04.01 |