Red Hat 5安装过程&postgresql安装&配置双机热备

 

Red Hat Enterprise Linux 5操作系统的全过程

   

 

   

 

   

 

   

 

   

 

   

 

   

 

   

 

   

 

   

 

 

 

 

 

 

 

linux安装postgresql 8.4步骤

1、下载postgresql最新版:http://www.postgresql.org/ftp/source/

 

2、解压文件:

       tar zxvf postgresql-8.4.8.tar.gz

       cd postgresql-8.4.8

 

3、配置:

       ./configure --prefix=/usr/local/pgsql

 

4、编译:

       gmake

 

5、安装:

       gmake install

 

6、创建用户组和用户:

       groupadd -g  postgres

       useradd -g postgres -G root  postgres

 

7、创建数据库库文件存储目录、给postgres赋予权限:

       mkdir /usr/local/pgsql/data

       cd /usr/local/pgsql

 

       chown postgres /usr/local/pgsql/data/  ##postgres这是用户

       #chmod 700 /usr/local/pgsql/data/

 

8、初始化数据库目录:

       切换用户

                su - postgres

 

       初始化数据

                /usr/local/pgsql/bin/initdb -E UTF-8 -D /usr/local/pgsql/data

 

       启动数据库

                /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data

 

       Success. You can now start the database server using:

           /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data

       or

           /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start

 

       配置环境变量

       #vi /etc/profile ,为 postgres 用户增加环境参数如下:

       PGLIB=/usr/local/pgsql/lib

       PGDATA=/usr/local/pgsql/data

       PATH=$PATH:/usr/local/pgsql/bin

       MANPATH=$MANPATH:/usr/local/pgsql/man

       export PGLIB PGDATA PATH MANPATH

 

       使用 postgres 创建 log 目录

       mkdir /usr/local/pgsql/data/log

 

       修改 /usr/local/pgsql/data/postgresql.conf 文件

 

 

9、配置监听地址和端口:

       vi /usr/local/pgsql/data/postgresql.conf

       取消以下两行的注释

              listen_addresses = '*'

              port = 5432

 

       主要配置日志文件

              log_destination = 'stderr'

              #redirect_stderr = true

              log_directory = '/usr/local/pgsql/data/log/'

              log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'

 

10、允许远程连接:

       vi /usr/local/pgsql/data/pg_hba.conf

       添加

                host all all 192.168.1.0/24 trust

 

         每项的具体意思在配置文件中有详细说明

 

       配置iptables让远程主机能访问:

                vi /etc/sysconfig/iptables

                添加

                         -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT

                service iptables restart

 

11、让postgresql数据库随系统启动而启动:

       将启动脚本拷贝到/etc/init.d/目录下,具体执行如下命令:

       cd /etc/rc.d/init.d

       cp (第一步解压的安装文件目录)/postgresql-8.3.7/contrib/start-scripts/linux postgresql

       chmod +x postgresql

       vi postgresql

                prefix=/usr/local/pgsql

                PGDATA="/usr/local/pgsql/data"

                PGUSER=postgres

                PGLOG="/var/log/pgsql.log"

 

         chkconfig --add postgresql

       启动数据库:

                service postgresql start

 

 

12 建立数据库和数据表

       以下以在 主数据库服务器上建立主数据库和数据表 test 为例见解,其他数据库和数据表请参考建立.

       su -c "/usr/local/pgsql/bin/createdb -U ssuser -E UTF-8 test -p 5432" -l postgres   //test 数据库名

       su -c "/usr/local/pgsql/bin/psql -f /home/hzh/share/sql.txt -p 5432 -d test -U ssuser" -l postgres

[root@localhost bin]# ./createdb -U postgres -E UTF-8 test -p 5432

[root@localhost bin]# ./psql -f /usr/local/pgsql/share/sql2.txt -d testslave01 -U postgres -p 5432

       (注意,sql.txt 是创建数据表的命令,请自行编写。sql.txt 文件最好是 UTF-8 格式,特别是存在中文字符时)

 

13 下载 slony 源码及文档,并用root安装

       $ wget http://www.slony.info/downloads/1.2/source/slony1-1.2.20-docs.tar.bz2

       $ wget http://www.slony.info/downloads/1.2/source/slony1-1.2.20.tar.bz2

       $ tar -vxjf slony1-1.2.20.tar.bz2

       $ cd slony1-1.2.20

       $ ./configure

       $ gmake all

       $ gmake install

 

14 配置同步

       14.1. 主机配置

       编写 configmaster sheul 脚本文件,设置其可执行属性 ,命令 chmod a+x+w+r configmaster,文件内容如下:

       #!/bin/bash

       basebin=/usr/local/pgsql/bin

 

       #集群名称

       CLUSTER=slony_test1

 

       # 参与同步的数据库名称,master db 是test,其他三个是slave

       DBSERVER=test

       DBSLAVE1=testslave1

       DBSLAVE2=testslave2

 

       # 参与同步的机器地址

       HOSTSERVER=192.168.1.152

       HOSTSLAVE1=192.168.1.161

       HOSTSLAVE2=192.168.1.152

 

       # 参与同步的数据库用户名

       DBSERVER_USER=ssuser

       DBSLAVE1_USER=ssuser

       DBSLAVE2_USER=ssuser

 

 

       # 同步发布配置,以下是命令 slonik 的参数

       $basebin/slonik<<_EOF_

 

       cluster name=$CLUSTER;

 

       # 定义复制节点

       node 1 admin conninfo='dbname=$DBSERVER host=$HOSTSERVER user=$DBSERVER_USER port=5432';

       node 2 admin conninfo='dbname=$DBSLAVE1 host=$HOSTSLAVE1 user=$DBSLAVE1_USER port=5432';

       node 3 admin conninfo='dbname=$DBSLAVE2 host=$HOSTSLAVE2 user=$DBSLAVE2_USER port=5432';

 

       # 初始化集群,id从1开始

       init cluster ( id=1, comment='Node 1' );

 

       # 设置参与同步的数据表

       #先创建一个复制集,id也是从1开始

       #向自己的复制集种添加表,每个需要复制的表一条set命令

       #id从1开始,逐次递加,步进为1;

       #fully qualified name是表的全称:模式名.表名

       #这里的复制集id需要和前面创建的复制集id一致

       create set ( id=1, origin=1, comment='All test tables' );

       set add table ( set id=1, origin=1,id=1, fully qualified name='public.tb_depart',comment='Table tb_depart' );

       set add table ( set id=1, origin=1,id=2, fully qualified name='public.tb_user',comment='Table tb_user' );

      

 

       #假如某个表没有主键,但是有唯一键字,那么可以用key关键字

       #指定其为复制键字,如下面的key参数

       #set add table ( set id = 1, origin = 1,id = 4, fully qualified name = 'public.tb_depart',key = "id",comment = 'Table tb_depart' );

       #set add table ( set id = 1, origin = 1,id = 5, fully qualified name = 'public.tb_user',key = "id",comment = 'Table tb_user' );

       #对于没有唯一列的表,需要这样处理,这一句放在 create set 的前面

       #table add key (node id = 1, fully qualified name = 'public.history');

       #这样设置结果集

       #set add table (set id=1, origin=1, id=4, fully qualified name = 'public.history', comment='history table', key = serial);

 

       # 设置存储节点

       store node ( id=2, comment='Node 2' );

       store node ( id=3, comment='Node 3' );

 

       # 设置存储路径

       store path ( server=1, client=2,conninfo='dbname=$DBSERVER host=$HOSTSERVER user=$DBSERVER_USER port=5432');

       store path ( server=2, client=1,conninfo='dbname=$DBSLAVE1 host=$HOSTSLAVE1 user=$DBSLAVE1_USER port=5432');

       store path ( server=1, client=3,conninfo='dbname=$DBSERVER host=$HOSTSERVER user=$DBSERVER_USER port=5432');

       store path ( server=3, client=1,conninfo='dbname=$DBSLAVE2 host=$HOSTSLAVE2 user=$DBSLAVE2_USER port=5432');

      

 

       #设置侦听事件和订阅方向,复制中角色,主节点是原始提供者,从节点是接受者

       store listen ( origin=1, provider=1, receiver=2 );

       store listen ( origin=2, provider=2, receiver=1 );

       store listen ( origin=1, provider=1, receiver=3 );

       store listen ( origin=3, provider=3, receiver=1 );

      

 

       _EOF_

 

       14.2. 提交数据集合

       编写 commitdata shell 脚本文件,赋予可执行权限,内容如下:

 

       #!/bin/bash

       basebin=/usr/local/pgsql/bin

 

       CLUSTER=slony_test1

 

       DBSERVER=test

       DBSLAVE1=testslave1

       DBSLAVE2=testslave2

      

 

       HOSTSERVER=192.168.1.171

       HOSTSLAVE1=192.168.1.170

       HOSTSLAVE2=192.168.1.170

 

       DBSERVER_USER=ssuser

       DBSLAVE1_USER=ssuser

       DBSLAVE2_USER=ssuser

 

       $basebin/slonik<<_EOF_

 

       cluster name=$CLUSTER;

 

       #提供连接参数

       node 1 admin conninfo='dbname=$DBSERVER host=$HOSTSERVER user=$DBSERVER_USER port=5432';

       node 2 admin conninfo='dbname=$DBSLAVE1 host=$HOSTSLAVE1 user=$DBSLAVE1_USER port=5432';

       node 3 admin conninfo='dbname=$DBSLAVE2 host=$HOSTSLAVE2 user=$DBSLAVE2_USER port=5432';

 

       # 提交订阅复制集

       subscribe set ( id=1, provider=1, receiver=2, forward=no);

       subscribe set ( id=1, provider=1, receiver=3, forward=no);

       _EOF_

 

       1.4.3. 配置同步过程

       在主机上执行配置命令 ./configmaster

       在主机上开启slon 后台进程,启动主数据库复制,命令

       /usr/local/pgsql/bin/slon slony_test1 "dbname=test host=192.168.1.152 user=ssuser port=5432" &

       ./slon slony_test2 "dbname=testmaster user=ssuser port=5432 host=192.168.1.152" &

 

       在主机上开启slon 后台进程,启动第一个从数据库复制,命令

       /usr/local/pgsql/bin/slon slony_test1 "dbname=testslave1 host=192.168.1.161 user=ssuser port=5432" &

 

       在从机上开启slon 后台进程,启动第二个从数据库复制,命令

       /usr/local/pgsql/bin/slon slony_test1 "dbname=testslave2 host=192.168.1.152 user=ssuser port=5432" &

 

       在从机上开启slon 后台进程,启动第三个从数据库复制,命令

       /usr/local/pgsql/bin/slon slony_test1 "dbname=testslave3 host=10.73.133.222 user=ssuser port=5431" &

 

       在主机上执行提交命令 ./commitdata

 

备注:数据库同步之前,要保证各个服务器上已经创建了数据库。

至此,配置全部技术。你可以修改主数据库对应表的数据,看数据是否同步到其他数据库上。

感谢你阅读,预祝你好运!

转载于:https://www.cnblogs.com/aldo/p/3242470.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值