**SQL Relay** 是開源的**資料庫連線池代理服務器**,支援多種資料庫後端,為應用程式提供統一的連線池管理、查詢路由、負載平衡與故障轉移能力。
wget https://sqlrelay.sourceforge.net/download/rudiments-0.28.2.tar.gz
tar vxzf rudiments-0.28.2.tar.gz
cd rudiments-0.28.2
./configure --prefix=/usr/local/rudiments
make && make install
wget https://sqlrelay.sourceforge.net/download/sqlrelay-0.36.4.tar.gz
tar vxzf sqlrelay-0.36.4.tar.gz
cd sqlrelay-0.36.4
./configure --prefix=/usr/local/sqlrelay \
--with-rudiments-prefix=/usr/local/rudiments \
--with-mysql-prefix=/usr/local/mysql \
--with-freetds-prefix=/usr/local/freetds \
--with-oracle-home=/usr/local/oracle \
--with-php-prefix=/usr/local/php
make && make install
--with-* 參數依實際安裝路徑調整,僅需支援的資料庫加入對應參數。
--with-sqlrelay=/usr/local/sqlrelay。extension=sqlrelay.so (需編譯為共享模組)。php.ini 載入模組。核心配置區塊:
sqlrelay
sqlrelay
9000
/tmp/sqlrelay_mysql
mysql
dbuser
dbpass
localhost
3306
10
5
300
0
/usr/local/sqlrelay/bin/sqlrelay -config /usr/local/sqlrelay/etc/sqlrelay.conf -instance mysql_pool -idle
sqlrsh -host localhost -port 9000 -user test -password test
sqlr> SELECT * FROM test_table;
<?php
$conn = sqlrcon_alloc();
sqlrcon_connect($conn, "localhost", 9000, "test", "test", 0, 30);
sqlrcon_ident($conn, "mysql_pool");
$sqlrc = sqlrcur_alloc($conn);
sqlrcur_query($sqlrc, "SELECT * FROM test_table");
while (sqlrcur_fetch($sqlrc)) {
echo sqlrcur_getField($sqlrc, 0) . "\n";
}
sqlrcur_free($sqlrc);
sqlrcon_disconnect($conn);
sqlrcon_free($conn);
?>