zoukankan      html  css  js  c++  java
  • postgresql-slony-I同步复制配置步骤

    主数据库: 172.16.254.21 端口:5432
    从数据库: 172.16.254.22 端口:5432

    步骤1:主从均安装slon
    apt-get install slon-bin
    步骤2:主从数据库配置权限,创建语言。
    在主数据库中   vi /etc/postgresql/8.3/node/pg_hba.conf
    添加一条记录    host    all         repl         172.16.254.22/32  md5

    在主从数据库均执行以下操作:
    shell>psql
    node=#create role repl password ‘123456’ login superuser
    #创建用户repl,赋予超级用户权限
    node=# use node;
    node=# create language plpgsql;
    #创建语言plpgsql
    步骤3:备份主数据库至从数据库并恢复
    #在主数据库备份要复制的数据库
    pg_dump node > node_20100220.dmp
    #在从库恢复数据库node
    postgres=#create database node;
    postgres=#q
    shell>psql node < node_20100220.dmp ;
    步骤4:在从数据库/export/script目录下创建一个脚本replication,内容如下:
    #!/bin/sh

    SLONIK=/usr/bin/slonik
    SLON=/usr/bin/slon

    CLUSTER_NAME=mynode

    MASTER=”host=172.16.254.21 dbname=node user=repl password=123456″
    SLAVE=”host=172.16.254.22 dbname=node  user=repl password=123456″
    LOG=/root

    uninstall()
    {
    $SLONIK << _EOF_
    cluster name = $CLUSTER_NAME;

    node 1 admin conninfo = ‘$MASTER';
    node 2 admin conninfo = ‘$SLAVE';

    #       drop node (id = 2);
    #       drop node (id = 1);

    uninstall node (id = 2);
    uninstall node (id = 1);
    _EOF_
    }

    install()
    {
    $SLONIK << _EOF_
    # 定义集群名字
    cluster name = $CLUSTER_NAME;

    # 定义两个节点
    node 1 admin conninfo = ‘$MASTER';
    node 2 admin conninfo = ‘$SLAVE';

    try
    {
    # 初始化主节点
    init cluster (id=1, comment = ‘Master Node’);

    # 创建一个复制集合
    create set (id=1, origin=1, comment = ‘All tables’);
    # 在复制集合中添加一个需要复制的表
    set add table ( set id=1, origin=1,id=1, fully qualified name=’public.hxf’,comment=’Table hxf’ );
    #set add sequence (set id = 1, origin = 1, id = 3, fully qualified name = ‘public.hxf_seq’);
    # 创建从节点
    store node (id = 2, comment = ‘Slave node’);

    # 定义节点之间的访问路径
    store path (server = 1, client = 2, conninfo = ‘$MASTER’);
    store path (server = 2, client = 1, conninfo = ‘$SLAVE’);

    # 定义事件监听
    store listen (origin = 1, provider = 1, receiver = 2);
    store listen (origin = 2, provider = 2, receiver = 1);

    # 订阅复制集合
    subscribe set (id = 1, provider = 1, receiver = 2, forward = no);
    }
    on success
    {
    echo ‘Install OK!';
    }
    on error
    {
    echo ‘Install FAIL!';
    }
    _EOF_
    }

    start()
    {
    # 启动复制守护进程
    $SLON $CLUSTER_NAME “$MASTER” >> /export/scripts/master.log &
    $SLON $CLUSTER_NAME “$SLAVE” >> /export/scripts/slave.log &
    }

    stop()
    {
    #  killall slon
    kill -9 `ps axu|grep ‘dbname=node’ |grep -v grep|awk ‘{print $2}’`
    }

    case $1 in
    ‘install’)
    install
    ;;
    ‘uninstall’)
    uninstall
    ;;
    ‘start’)
    start
    ;;
    ‘stop’)
    stop
    ;;
    *)
    echo “usage: $0 {install|uninstall|start|stop} ”
    ;;
    esac
    步骤5:启动
    ./replication start
    步骤6:测试
    1.在主数据库的空表public.hxf中添加一条记录
    insert into hxf(uid,uname) select 1,’huangxifeng';
    2.在主数据库中看到有一条记录
    node=# select * from hxf;
    uid |    uname
    —–+————-
    1 | huangxifeng
    (1 row)
    3.在从数据库中看到有一条记录
    node=# select * from hxf;
    uid |    uname
    —–+————-
    1 | huangxifeng
    (1 row)

  • 相关阅读:
    存储过程
    Apache服务器
    SpringMVC (<context:include-filter>和<context:exclude-filter>的使用)
    虚拟机centos 同一个tomcat、不同端口访问不同的项目
    CentOS系统下搭建tomcat服务器
    nginx配置负载均衡
    配置plsql远程连接oracle数据库
    Nginx安装
    Centos6.5系统关闭防火墙
    禁止Centos7系统yum自动下载更新
  • 原文地址:https://www.cnblogs.com/chjbbs/p/5743591.html
Copyright © 2011-2022 走看看