• pgbouncer 的学习与使用之二 make


    os : centos 7.2
    pgbouncer: 1.8.1
    libevent: 2.0.21-4
    libevent-dev: 2.0.21-4

    本次使用编译安装pgbouncer 1.8.1,官网的介绍如下
    https://wiki.postgresql.org/wiki/PgBouncer

    下载pgbouncer的安装包
    旧版本地址
    http://pgfoundry.org/projects/pgbouncer/
    https://www.postgresql.org/ftp/projects/pgFoundry/pgbouncer/pgbouncer/

    新版本地址
    https://pgbouncer.github.io/downloads/
    https://github.com/pgbouncer/pgbouncer

    下载libevent包,centos 有 yum 源安装,也可以编译安装
    http://libevent.org/
    http://monkey.org/~provos/libevent/

    官网给的建议
    PgBouncer depends on few things to get compiled:

    GNU Make 3.81+
    libevent 2.0
    (optional) OpenSSL 1.0.1 for TLS support.
    (optional) c-ares as alternative to libevent’s evdns.

    os层创建用户,目录

    # groupadd postgres
    # useradd -g postgres postgres
    # passwd postgres
    
    # mkdir -p /var/run/postgresql
    # chown  postgres:postgres  /var/run/postgresql
    
    # mkdir -p /usr/pgbouncer/pgbouncer1.8
    # chown -R postgres:postgres /usr/pgbouncer

    os 层修改ulimit

    # vi /etc/security/limits.conf
    root        soft   nofile  655360
    root        hard   nofile  655360
    root        soft   nproc   655360
    root        hard   nproc   655360
    
    postgres    soft   nofile  655360
    postgres    hard   nofile  655360
    postgres    soft   nproc   655360
    postgres    hard   nproc   655360

    安装 pgbouncer 的依赖包

    # yum install libevent
    # yum install libevent-devel
    
    # rpm -q libevent
    # rpm -q libevent-devel
    
    # rpm -ql libevent
    /usr/lib64/libevent-2.0.so.5
    /usr/lib64/libevent-2.0.so.5.1.9
    /usr/lib64/libevent_core-2.0.so.5
    /usr/lib64/libevent_core-2.0.so.5.1.9
    /usr/lib64/libevent_extra-2.0.so.5
    /usr/lib64/libevent_extra-2.0.so.5.1.9
    /usr/lib64/libevent_openssl-2.0.so.5
    /usr/lib64/libevent_openssl-2.0.so.5.1.9
    /usr/lib64/libevent_pthreads-2.0.so.5
    /usr/lib64/libevent_pthreads-2.0.so.5.1.9
    /usr/share/doc/libevent-2.0.21
    /usr/share/doc/libevent-2.0.21/ChangeLog
    /usr/share/doc/libevent-2.0.21/LICENSE
    /usr/share/doc/libevent-2.0.21/README
    
    # rpm -ql libevent-devel
    /usr/bin/event_rpcgen.py
    /usr/include/evdns.h
    /usr/include/event.h
    /usr/include/event2/buffer.h
    /usr/include/event2/buffer_compat.h
    /usr/include/event2/bufferevent.h
    /usr/include/event2/bufferevent_compat.h
    /usr/include/event2/bufferevent_ssl.h
    /usr/include/event2/bufferevent_struct.h
    /usr/include/event2/dns.h
    /usr/include/event2/dns_compat.h
    /usr/include/event2/dns_struct.h
    /usr/include/event2/event-config.h
    /usr/include/event2/event.h
    /usr/include/event2/event_compat.h
    /usr/include/event2/event_struct.h
    /usr/include/event2/http.h
    /usr/include/event2/http_compat.h
    /usr/include/event2/http_struct.h
    /usr/include/event2/keyvalq_struct.h
    /usr/include/event2/listener.h
    /usr/include/event2/rpc.h
    /usr/include/event2/rpc_compat.h
    /usr/include/event2/rpc_struct.h
    /usr/include/event2/tag.h
    /usr/include/event2/tag_compat.h
    /usr/include/event2/thread.h
    /usr/include/event2/util.h
    /usr/include/evhttp.h
    /usr/include/evrpc.h
    /usr/include/evutil.h
    /usr/lib64/libevent.so
    /usr/lib64/libevent_core.so
    /usr/lib64/libevent_extra.so
    /usr/lib64/libevent_openssl.so
    /usr/lib64/libevent_pthreads.so
    /usr/lib64/pkgconfig/libevent.pc
    /usr/lib64/pkgconfig/libevent_openssl.pc
    /usr/lib64/pkgconfig/libevent_pthreads.pc

    此处是yum install libevent, 如果手动编译的需要指定路径

    # vi /ect/profile
    export LD_LIBRARY_PATH=/usr/local/libevent/lib:$LD_LIBRARY_PATH

    安装 psql,方便本地登录管理

    # yum install postgresql.x86_64

    编译安装 pgbouncer

    # su - postgres
    $ cd /tmp 
    $ ls -l pgbouncer-1.8.1.tar.gz
    $ tar -zxvf /tmp/pgbouncer-1.8.1.tar.gz
    $ cd /tmp/pgbouncer-1.8.1
    $ ./configure --prefix=/usr/pgbouncer/pgbouncer1.8 
    如果是手动编译安装的libevent,添加 --with-libevent=libevent-prefix 来指定 libevent
    
    $ make
    $ make install

    配置 pgbouncer

    $ cd /usr/pgbouncer/pgbouncer1.8/
    $ mkdir log
    $ mkdir run
    
    $ cp /usr/pgbouncer/pgbouncer1.8/share/doc/pgbouncer/pgbouncer.ini /usr/pgbouncer/pgbouncer1.8/
    $ cp ./pgbouncer.ini ./pgbouncer.ini.bak
    $ touch userlist.txt
    $ touch pg_hba.conf

    目录结构如下

    $ pwd
    /usr/pgbouncer/pgbouncer1.8
    $ ls -l
    total 24
    drwxrwxr-x. 2 postgres postgres   22 Feb  5 19:47 bin
    drwxrwxr-x. 2 postgres postgres   26 Feb  5 20:21 log
    -rw-r--r--. 1 postgres postgres 2471 Feb 27 16:32 pgbouncer.ini
    -rw-r--r--. 1 postgres postgres 8766 Feb  5 20:11 pgbouncer.ini.bak
    -rw-rw-r--. 1 postgres postgres 1794 Feb 27 16:35 pg_hba.conf
    drwxrwxr-x. 2 postgres postgres   26 Feb 27 16:36 run
    drwxrwxr-x. 4 postgres postgres   26 Feb  5 19:47 share
    -rw-rw-r--. 1 postgres postgres   74 Feb  5 20:21 userlist.txt

    修改 pgbouncer.ini

    $ vi /usr/pgbouncer/pgbouncer1.8/pgbouncer.ini
    [databases]
    rw_pg01_peiybdb = host=192.168.56.100 port=5432 user=peiyb password=peiyb dbname=peiybdb pool_size=500 client_encoding=UNICODE connect_query='SELECT 1'
    
    
    [pgbouncer]
    logfile = /usr/pgbouncer/pgbouncer1.8/log/pgbouncer.log
    pidfile = /usr/pgbouncer/pgbouncer1.8/run/pgbouncer.pid
    listen_addr = 0.0.0.0
    listen_port = 6432
    
    auth_hba_file = /usr/pgbouncer/pgbouncer1.8/pg_hba.conf
    auth_type = hba
    auth_file = /usr/pgbouncer/pgbouncer1.8/userlist.txt
    pool_mode = session
    
    unix_socket_dir = /var/run/postgresql
    unix_socket_mode = 0777
    
    admin_users = root
    stats_users = stat_collector
    
    server_reset_query = DISCARD ALL
    max_client_conn = 20000
    default_pool_size = 100
    reserve_pool_size = 3
    
    ignore_startup_parameters = extra_float_digits

    修改 pg_hba.conf

    $ vi pg_hba.conf 
    # Database administrative login by Unix domain socket
    local   all             root                                    peer
    
    # "local" is for Unix domain socket connections only
    local   all             all                                     peer
    
    # IPv4 local connections:
    host    all             all             127.0.0.1/32            md5
    
    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    #####################################################################
    ##### for person
    #####################################################################
    
    #peiyb
    host    all             all             192.168.50.1/32           md5

    修改 userlist.txt

    $ vi /usr/pgbouncer/pgbouncer1.8/userlist.txt
    "root" "root"
    "stat_collector" "stat_collector"
    "usrpeiyb" "usrpeiyb"

    启动 pgbouncer

    $ /usr/pgbouncer/pgbouncer1.8/bin/pgbouncer --help
    Usage: pgbouncer [OPTION]... config.ini
      -d, --daemon           Run in background (as a daemon)
      -R, --restart          Do a online restart
      -q, --quiet            Run quietly
      -v, --verbose          Increase verbosity
      -u, --user=<username>  Assume identity of <username>
      -V, --version          Show version
      -h, --help             Show this help screen and exit
    
    $ /usr/pgbouncer/pgbouncer1.8/bin/pgbouncer -d /usr/pgbouncer/pgbouncer1.8/pgbouncer.ini
    或者
    # /usr/pgbouncer/pgbouncer1.8/bin/pgbouncer -d -u postgres /usr/pgbouncer/pgbouncer1.8/pgbouncer.ini
    
    详细日志
    # /usr/pgbouncer/pgbouncer1.8/bin/pgbouncer -v -d -u postgres /usr/pgbouncer/pgbouncer1.8/pgbouncer.ini
    
    重新加载,online restart pgbouncer 
    # /usr/pgbouncer/pgbouncer1.8/bin/pgbouncer -R -d -u postgres /usr/pgbouncer/pgbouncer1.8/pgbouncer.ini

    随机启动, 修改 /etc/rc.local

    # vi /etc/rc.local
    /usr/pgbouncer/pgbouncer1.8/bin/pgbouncer -d -u postgres /usr/pgbouncer/pgbouncer1.8/pgbouncer.ini

    admin_users 用户登录 pgbouncer

    $ psql -h 127.0.0.1 -p 6432 -U root pgbouncer
    pgbouncer=# show help;
    NOTICE:  Console usage
    DETAIL:  
     SHOW HELP|CONFIG|DATABASES|POOLS|CLIENTS|SERVERS|VERSION
     SHOW FDS|SOCKETS|ACTIVE_SOCKETS|LISTS|MEM
     SHOW DNS_HOSTS|DNS_ZONES
     SHOW STATS|STATS_TOTALS|STATS_AVERAGES
     SET key = arg
     RELOAD
     PAUSE [<db>]
     RESUME [<db>]
     DISABLE <db>
     ENABLE <db>
     KILL <db>
     SUSPEND
     SHUTDOWN
    SHOW
    pgbouncer=# 

    reload 加载修改后的配置文件

    $ psql -h 127.0.0.1 -p 6432 -U root pgbouncer
    pgbouncer=# reload;
    RELOAD
    pgbouncer=# 
    
  • 相关阅读:
    sql 存储过程 in 的两种写法
    C# 开发Chrome内核浏览器(WebKit.net)
    IE6、IE7、IE8、Firefox兼容性
    360浏览器兼容模式 不能$.post (不是a 连接 onclick的问题!!)
    jquery树形表格实现方法
    C#递归累计到父行
    树形结构 DropDownList
    ASP.NET 防止重复提交提示层
    JavaScriptSerializer 时间格式化
    去标签获取网页内容
  • 原文地址:https://www.cnblogs.com/ctypyb2002/p/9793052.html
Copyright © 2020-2023  润新知