Chinaunix首页 | 论坛 | 博客
  • 博客访问: 386000
  • 博文数量: 75
  • 博客积分: 1732
  • 博客等级: 上尉
  • 技术积分: 812
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-11 16:02
个人简介

博客很久没有更新了,原因是大多数时间都忙在研究技术上,却懒得腾时间出来把技术分享,最近在开源力量上开课《Mongodb管理与维护》,让屌丝们从0到精通,敬请关注。本博客技术原创更新滞后一些,找时间更新有关mysql,mongodb等内容,谢谢大家关注。

文章分类

全部博文(75)

文章存档

2021年(1)

2011年(20)

2010年(40)

2009年(7)

2008年(7)

分类: LINUX

2010-02-20 17:30:17

主数据库: 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)

阅读(3861) | 评论(0) | 转发(0) |
0

上一篇:mysql binlog日志清除

下一篇:MySQL性能优化

给主人留下些什么吧!~~