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
备注:数据库同步之前,要保证各个服务器上已经创建了数据库。
至此,配置全部技术。你可以修改主数据库对应表的数据,看数据是否同步到其他数据库上。
感谢你阅读,预祝你好运!