`
xxd
  • 浏览: 22041 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

SQL Relay Setup

阅读更多
1. software env
---------------
  • Linux debian on both 2.6.18-5-686 and 2.6.18-5-amd64
  • sqlrelay-0.39.4
  • rudiments-0.31
  • mysql-5.0.67
2. software installation
------------------------
$ apt-get install gcc zliblg-dev libxml2 libxml2-dev g++ libncurses5-dev php5-sqlrelay
$ aptitude search socket
$ make distclean //if get any error during software compile

2.1 rudiments-0.31
$ ./configure --prefix=/usr/local/app/rudiments-0.31

2.2 mysql-5.0.67
error:
checking for tgetent in -ltermcap... no
checking for termcap functions library... configure: error: No curses/termcap library found
need to install curses/termcap
$ apt-cache search curses | grep lib
$ apt-get install libncurses5-dev
$ ./configure --prefix=/usr/local/app/mysql-5.0.67

2.3 php-5.2.6
$ apt-get install php5-sqlrelay
$ ./configure --prefix=/usr/local/app/php5
PEAR config: /usr/local/app/php5/etc/pear.conf
Add: /usr/local/app/php5/lib/php to your php.ini include_path
PDO headers: /usr/local/app/php5/include/php/ext/pdo/

2.4 sqlrelay-0.39.4
./configure --prefix=/usr/local/app/sqlrelay-0.39.4 --with-rudiments-prefix=/usr/local/app/rudiments-0.31 --with-php-prefix=/usr/local/app/php5 --enable-small-code --with-mysql-prefix=/usr/local/app/mysql-5.0.67 --with-pear-db-dir=/var/www/etpass/app/lib/PEAR/DB
// it will generate:
1. sqlrelay.php under /var/www/etpass/app/lib/PEAR/DB
2. sqlrelay.so under /usr/local/app/php5/lib/php/extensions/no-debug-non-zts-20060613

$ cp sqlrelay.conf.example sqlrelay.conf
$ more /usr/local/app/sqlrelay-0.39.4/etc/sqlrelay.conf

?xml version="1.0"?>
!DOCTYPE instances SYSTEM "sqlrelay.dtd">

instances>

!-- Regular SQL Relay Instance -->
instance id="master" port="9000" socket="/tmp/master.socket" dbase="mysql" connections="5" maxconnections="15" maxqueuelength="5" growby="1" ttl="60\" endofsession="commit" sessiontimeout="600" unasuser="nobody" runasgroup="nobody" cursors="5" authtier="listener" handoff="pass" deniedips="" allowedips="" debug="none" maxquerysize="65536" maxstringbindvaluelength="4000" axlobbindvaluelength="71680" idleclienttimeout="-1" maxlisteners="1" listenertimeout="0" reloginatstart="false">
users>
user user="root" password="kooxoo"/>
/users>
connections>
connection connectionid="master" string="user=root;password=kooxoo;host=10.0.1.243;db=ETPASS" metric="1" behindloadbalancer="no"/>
/connections>
/instance>

instance id="slave" port="9001" socket="/tmp/slave.socket" dbase="mysql" connections="5" maxconnections="15" maxqueuelength="5" growby="1" ttl="60" endofsession="commit" sessiontimeout="600" runasuser="nobody" runasgroup="nobody" cursors="5" authtier="listener" handoff="pass" deniedips="" allowedips=""debug="none" maxquerysize="65536" maxstringbindvaluelength="4000" maxlobbindvaluelength="71680" idleclienttimeout="-1" maxlisteners="-1" listenertimeout="0"reloginatstart="false">
users>
user user="root" password="etpass"/>
/users>
connections>
connection connectionid="slave" string="user=root;password=etpass;host=10.0.1.204;db=ETPASS" metric="1" behindloadbalancer="no"/>
/connections>
/instance>
!-- Query Router/Filter -->
instance id="router" port="9002" socket="/tmp/router.socket" dbase="router" connections="3" maxconnections="15" maxqueuelength="5" growby="1" ttl="60" endofsession="commit" sessiontimeout="600" runasuser="nobody" runasgroup="nobody" cursors="5" authtier="listener" handoff="pass" deniedips="" allowedips="" debug="none" maxquerysize="65536" maxstringbindvaluelength="4000" maxlobbindvaluelength="71680" idleclienttimeout="-1" maxlisteners="-1" listenertimeout="0" reloginatstart="false">
users>
user user="user1" password="password1"/>
/users>
router>
!-- send all queries for table1 to host1 -->
route host="" port="" socket="/tmp/master.socket" user="root" password="kooxoo">
query pattern="^\s*insert\s+into\s+table1"/>
query pattern="^\s*update\s+table1"/>
query pattern="^\s*delete\s+from\s+table1"/>
query pattern="^\s*drop\s+table\s+table1"/>
query pattern="^\s*create\s+table\s+table1"/>
/route>
!-- send any other queries to host2 -->
route host="" port="" socket="/tmp/slave.socket" user="root" password="etpass">
query pattern=".*"/>
/route>
/router>
/instance>
/instances>


3. configuration
$ cd php-5.2.6
$ cp php.ini-dist /usr/local/app/php5/etc/php.ini
$ e /usr/local/app/php5/etc/php.ini
extension_dir = "./:/usr/local/app/php5/lib/php/extensions/no-debug-non-zts-20060613"
$ file /usr/local/app/php5/lib/php/extensions/no-debug-non-zts-20060613/sqlrelay.so

$ export PATH=$PATH:/usr/local/app/sqlrelay-0.39.4/bin
or
$ e /etc/profile
#add below
export PATH=$PATH:/usr/local/app/sqlrelay-0.39.4/bin

$ ./sqlr-start -id master -config /usr/local/app/sqlrelay-0.39.4/etc/sqlrelay.conf
$ ./sqlr-start -id slave -config /usr/local/app/sqlrelay-0.39.4/etc/sqlrelay.conf
$ ./sqlr-start -id router -config /usr/local/app/sqlrelay-0.39.4/etc/sqlrelay.conf

4. monitor
$ netstat -na | more
$ ping localhost
$ telnet localhost 9000
$ telnet localhost 9001
$ telnet localhost 9002

5. testing
$ e /root/db_conn.php

?
dl("sql_relay.so");
$con=sqlrcon_alloc("10.0.1.204",9002,"/tmp/router.socket","user1","password1",0,1);
$cur=sqlrcur_alloc($con);
sqlrcur_sendQuery($cur,"select * from tmp_order limit 1");
for($row=0;$rowsqlrcur_rowCount($cur);$row++) {
for ($col=0; $colsqlrcur_colCount($cur); $col++) {
echo sqlrcur_getField($cur,$row,$col);
echo ",";
}
echo "
\n"
;
}
sqlrcur_free($cur);
sqlrcon_free($con);
?>


$ e /root/pear_conn.php

?php

require_once 'DB.php';
echo "0";
echo "0.5";
$db = DB::connect("sqlrelay://user1:password1@10.0.1.204:9002/ETPASS");
echo "1";
if (DB::isError($db)) {
die ($db->getMessage());
}
echo "2";
$db->query("select * from tmp_order limit 1");
echo "3";
$db->disconnect();

?>


$ cd /usr/local/app/php5/bin
$ ./php -c ../etc/php.ini /root/db_conn.php
$ ./php -c ../etc/php.ini /root/pear_conn.php

6. Ref:
http://sqlrelay.sourceforge.net/
分享到:
评论

相关推荐

    Laravel开发-sqlrelay

    **Laravel 开发与 SQL Relay 知识点详解** 在 Laravel 框架中,数据库操作是核心功能之一。Laravel 提供了多种数据库适配器,使得开发者可以灵活选择不同的数据库系统。其中,SQL Relay 是一个开源的数据库连接池和...

    sqlrelay-0.39.4.tar.gz 开源数据库连接池

    `sqlrelay-0.39.4.tar.gz` 是一个包含开源数据库连接池软件 Sql Relay 的源代码包。Sql Relay 是一个强大的中间件,旨在提供高效、安全的数据库连接管理,支持多种数据库系统,如 MySQL 和 PostgreSQL。在这个版本 ...

    SQL-Relay参数文档

    SQL-Relay参数文档

    SQL Relay-开源

    SQL Relay是一款开源的数据库连接池系统,其设计目标是提高应用程序与数据库之间的连接效率和管理,同时支持多种编程语言和多种数据库系统。这个系统的核心功能是通过管理数据库连接,实现多用户共享,从而减少创建...

    sqlrelay 文档

    NULL 博文链接:https://waveeee.iteye.com/blog/1068617

    Learning GraphQL and Relay

    《Learning GraphQL and Relay》这本书深入探讨了两种现代Web开发中的关键技术——GraphQL和Relay。GraphQL是一种强大的API查询语言,而Relay是Facebook推出的用于构建数据驱动的React应用的JavaScript库。这两个...

    RELAY-SPDT单刀双掷继电器封装以及datasheet说明

    单刀双掷继电器(SPDT Relay)是电子工程中常用的一种继电器类型,它在电路中起到开关的作用,能够切换电路中的两个节点,使得电流只能通过一个路径流动。"RELAY-SPDT"通常指的是这种类型的继电器,并且带有单刀双掷...

    Frame-Relay实验笔记

    ### Frame-Relay 实验笔记知识点总结 #### Frame-Relay 概述 Frame-Relay(帧中继)是一种广泛应用于广域网(WAN)的技术,它为点对点(P2P)和非广播多址访问(NBMA)网络提供了高效的数据传输方式。在本实验笔记...

    Relay一个PHP55PSR7中间件调度员

    在深入探讨 Relay 的功能和使用方法之前,我们先来理解一下中间件的概念以及 PSR-7 的意义。 中间件在 Web 开发中的角色是处理请求和响应的组件,它们可以串行执行,每个中间件都可以对请求进行修改,处理业务逻辑...

    前端开源库-relay-compiler

    Relay是Facebook推出的一个基于GraphQL的前端开发框架,其核心组件之一就是`Relay Compiler`。这个编译器在前端开发领域扮演着至关重要的角色,它将开发者编写的使用GraphQL查询语句的React组件转化为服务器可以理解...

    Frame Relay技术详解

    Frame Relay是一种广域网(WAN)技术,起源于1980年代的综合业务数字网(ISDN)。它被设计为一种高效的分组交换服务,主要用于连接计算机系统和局域网之间的互联。作为一种数据通信协议,Frame Relay并不包含内置的流量...

    react-Relay是一个JavaScript框架用于构建数据驱动的React应用程序

    **React-Relay框架详解** React-Relay是Facebook推出的一个强大的JavaScript框架,它专为构建数据驱动的React应用程序而设计。在React的世界里,组件是核心,而Relay则是将这些组件与后端数据紧密连接的桥梁。通过...

    前端开源库-graphql-relay

    **GraphQL-Relay:构建React-Relay兼容的GraphQL服务器** GraphQL-Relay是一个关键的前端开源库,它专门设计用于帮助开发者构建与React-Relay兼容的GraphQL服务器。这个库的目标是填补了React-Relay客户端和GraphQL...

    frame-relay帧中继配置命令详细大全

    帧中继(Frame Relay)是一种广泛应用于广域网(WAN)的数据通信技术,它简化了传统的线路交换网络,提供了一种高效、低成本的分组交换服务。在本配置命令大全中,我们将深入探讨帧中继的核心概念以及如何在路由器上...

    Cisco Press: Cisco Frame Relay Solutions Guide.chm

    《Cisco Press: Cisco Frame Relay Solutions Guide》是一本由Cisco Press出版的专业技术书籍,专注于Frame Relay技术的解决方案。这本书籍发布于2004年,旨在为网络工程师和IT专业人士提供全面的指导,帮助他们理解...

    Relay技术在LTE—Advanced系统中的应用

    ### Relay技术在LTE—Advanced系统中的应用 #### 一、引言 随着移动通信技术的飞速发展,LTE—Advanced(Long Term Evolution—Advanced)作为第四代移动通信系统的演进版本,旨在提供更高的数据传输速率和系统...

Global site tag (gtag.js) - Google Analytics